Excel2000のオートフィルタ機能を利用して、1シート3~4万件あるデータの集計などをしています。
その中で以下の点についてお教えください。
1.フィルタリングしてセルが飛び飛びに表示された状態で、ある列に1から順に連番を振りたいのです。
たとえばフィルタリングして
A1
A3
A7
A8
A13
:
のように絞り込まれたセルに、上から順に01,02,03,04,05...というように番号を振りたいのですが、オートフィル機能では間のセルまで入ってしまうし、=A1+1 のような関数でもやはり間のセルが邪魔です。
フィルタをかけた状態で連番を振ることはできますでしょうか。(書式は数値でも文字列でも構いません)
2.フィルタリングした状態で、連続した複数のセルをコピー&「形式を選択して貼り付け」をしたら、間に隠れているセルに値が入ってしまいます。
フィルタをかけて表示されているセルにのみ貼り付ける方法はありますでしょうか。
以上、よろしくお願いいたします。
No.3
- 回答日時:
こんにちは~
1についてですが、No.2さんのように SUBTOTAL関数を使えばできますが、
No.2さんの式では不具合が発生すると思いますよ。
→最終行に条件に一致しないものが表示される。
これを回避するためには
=IF(B2="","",SUBTOTAL(3,$B$2:B2))
のようにしてください。
↓フィルタ実行時に連番を表示させたい-SUBTOTAL関数
http://www.relief.jp/itnote/archives/000439.php
↓オートフィルタで絞り込んだ件数を表示する
http://www.officetanaka.net/excel/function/tips/ …
2はわかりません・・。
No.4ベストアンサー
- 回答日時:
こんばんは。
1. は式でも可能ですが、4万行にもなると重過ぎます。
2. は、VBA以外には不可能だと思います。
1.
最終列の検査行は、B列になっています。
Range("B65536")の部分を適宜替えてください。
'<シートモジュールか標準モジュールでお使いください。>
Sub SkipNumbering()
Dim i As Long, k As Long
Dim lastrow As Long
Const c As Long = 1 '列数を入れてください。 例:1 = A列
lastrow = Range("B65536").End(xlUp).Row 'B列の最終行を調べます
k = 1
Application.ScreenUpdating = False
For i = 1 To lastrow
If Cells(i, c).EntireRow.Hidden = False Then
Cells(i, c).Value = k
k = k + 1
End If
Next
Cells(1, c).Resize(lastrow).NumberFormatLocal = "00"
Application.ScreenUpdating = True
End Sub
2.
Visual Basic Editor の画面を開けたら、
ツール-参照設定で、Microsoft Forms x.x Object Library (x.x は数字が入ります)にチェックを入れてください。
挿入-標準モジュールをクリックしてから、以下のものを貼り付けてください。
一応、ショートカット設定をしましたので、このショートカットを実行すれば、Alt + C で、貼り付けできます。なお、貼り付けられるデータは、Text(文字、数字の定数) データに限ります。他の表示形式などは貼り付けられません。
'<標準モジュール>
Sub SkipCopy()
'要 参照設定 Microsoft Forms x.x Object Library
Dim myData As Variant
Dim i As Long, j As Long, buf As String
Dim CB As DataObject
Set CB = New DataObject
On Error Resume Next
With CB
.GetFromClipboard
buf = .GetText
End With
On Error GoTo 0
If Len(buf) = 0 Then MsgBox "クリップボードが空です。", 16: Exit Sub
myData = Split(buf, vbCrLf)
Do
With ActiveCell
If .Offset(i).EntireRow.Hidden = False Then
.Offset(i).Value = myData(j)
j = j + 1
End If
i = i + 1
End With
Loop Until j > UBound(myData)
End Sub
'
Sub SetMyShortCut()
'ショートカット設定
'Alt + C
Application.OnKey "%c", "SkipCopy"
Application.OnKey "%C", "SkipCopy"
End Sub
'
Sub SetOffMyShortCut()
'ショートカット解除
Application.OnKey "%c"
Application.OnKey "%C"
End Sub
ありがとうございます。
VBAは「見たことがある」程度でやったことはないので、これから教えてくださった内容を元に挑戦します。
取り急ぎ御礼まで…
No.6
- 回答日時:
こんにちは。
>CB As DataObject
>のところで
>「コンパイルエラー:
> ユーザ定義型は定義されていません」
>というエラーが出ます…
#4 に書かれているように、
# '要 参照設定 Microsoft Forms x.x Object Library
#Visual Basic Editor の画面を開けたら、
#ツール-参照設定で、Microsoft Forms x.x Object Library (x.x は数字が入ります)にチェックを入れてください。
参照設定をしないと、そのようなエラーが出ます。データオブジェクトという入れ物(ユーザーフォームの中のツール)が必要なのですね。
ありがとうございます。すみません、エラーは私の設定ミスでした…(チェックを入れたつもりで別のに入れてました…)申し訳ありません。
で、エラーは出なくなったんですが、コピー&ペーストができません…
Alt+Cを押しても何事も起こらないんです。
値のみ貼り付けもできないし…
貼り付けるのは文字列にして1列でやってます。
何故なんでしょう…
何度も申し訳ございません<(_ _;)>
No.7
- 回答日時:
こんにちは。
>Alt+Cを押しても何事も起こらないんです。
メニューからマクロ-マクロ-「SetMyShortCut」(Visual Basic エディタ画面だったら、カーソルを、そのコードの中に置いて、F5を押せば、)設定されます。このマクロで、ショートカットはブックに登録されます。
後は、ショートカットで、マクロが起動します。
使い方:
最初に、コピーされる範囲を選択し、Ctrl + C で、範囲をコピーします。そうすると、クリップボードにデータが入ります。
そして、貼り付けされるところの一番上の場所に、セルポインターを置いてから、貼り付けに、登録したショートカット「Alt + C」 を使います。
あと、もう少しですから、投げ出さないで、がんばってくださいね。
なお、ショートカットを外すほうは、
SetOffMyShortCut
です。
Alt + C を Alt + V に変えたい場合は、
Application.OnKey "%v", "SkipCopy"
Application.OnKey "%V", "SkipCopy"
と中のコードを書き換えてあげます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- Excel(エクセル) Excelで数式をそのままコピーしたい どうすればいいですか? 4 2022/09/16 02:16
- Excel(エクセル) エクセルの書式設定の表示形式で設定した文字を文字列としてコピーしたい 1 2022/12/21 10:41
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- Excel(エクセル) countif関数について質問 4 2022/06/14 12:11
- Excel(エクセル) シート参照を含む数式を連続コピー 3 2022/12/10 11:42
- Excel(エクセル) Excelのセル上の日付の不具合 3 2022/05/22 18:20
- Excel(エクセル) Excel フィルタ後のコピー貼付けと可視セルの関係について 3 2023/02/07 16:42
- Excel(エクセル) Excelに文字データのみを貼り付けたい 8 2023/05/03 15:38
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル初心者です 関数の入れ...
-
【関数】先頭だけにある、半角...
-
エクセル 白黒印刷で白線を印刷...
-
Excelのチェックボックスの使い...
-
【関数】適切な文字数の数字を...
-
Excelのpivotについて質問です
-
Excel ピボットテーブルで日付...
-
LOOKUP関数を使えばいいのでし...
-
エクセル関数を教えてください
-
エクセルのセルに同じ大きさの...
-
UNIQUE関数が使えないバージョ...
-
excelの不要な行の削除ができな...
-
エクセルで「-0.0」と表示さ...
-
時間によってファイル名が変わ...
-
WPS OFFICEでの縦書きについて
-
エクセルの関数について教えて...
-
Aというブックの1というシート...
-
【マクロ】シート名を取得する...
-
VBA Private Sub Worksheet_Cha...
-
VBA、Excelのworkbook.open に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報