エクセル2003を使用しています。
例えば、以下のような表があります。
ABC
1あ10
2い15
3あ20
4
A列が条件となり、たとえば「あ」のデータだけ抽出して、そのデータを別シートにコピーします。
同じく「い」だけを抽出して、また別のシートにコピーします。
いままでは、オートフィルタで抽出して自分でコピーをして貼り付けしていましたが、日々データが次の行に追加になるので、毎回オートフィルタしてコピーするのは大変です。
関数か、マクロかVBAを使ってする方法はありますでしょうか。
できれば日々追加になるデータのみをすでにある別シートの前日までのデータの下に追加できるようになればいいと思うのですが。
知識が乏しくできません・・・
よろしくお願いいたします。
No.3
- 回答日時:
No.1について
コピーしたものは標準モジュールに貼り付けて下さい。
(「挿入」メニューの「標準モジュール」で標準モジュールができます。)
エラーメッセージが400のみであれば、それで解決すると思うのですが、400のほかにメッセージがある場合は他の解決法となります。
この回答への補足
ありがとうございます。標準モジュールに貼り付けてみました。エラーは出なくなりましたが、E2の条件を入れた値がマクロを実行するといつも「い」に変わってしまいます。
抽出も「あ」が抽出できなくなっています。
すみません・・・なぜなんでしょう。
No.2
- 回答日時:
関数では複雑になって手におえないでしょう。
関数は抜き出しが苦手です。VBAによる解決になるでしょう。
今までのやり方からして、バッチ方式=瞬時連動でなく、人間が指示したときに実行、でよいのですね。
Sheet1に
あ10
い15
あ20
のデータがあるとする。
>日々データが次の行に追加になるので
はSheet1に対してでしょね。
>「あ」のデータだけ抽出して、そのデータを別シートにコピーします。
「あ」の行をコピーする「シート名」はどういう風になってますか。
規則性がありますか。A列文字列そのものがシート名だったりしますか。
結局
Sheet1のA列に出てくる文字列によって
あー>Sheet2
いー>Sheet3
うー>Sheet4
・・
のようにシートに振り分けるか。
ソートして
「あ」の塊り行ーー>Sheet2
「い」の塊り行ーー>Sheet3
・・
にコピーすればよい。
あーいーう・・・の並びと
Sheet2-Sheet3-Sheet4・・の並びと一致しているとさらにやりやすい。
Sheet2以下は毎日新規作り直しの方がやりやすそう。
No.1
- 回答日時:
AdvancedFilterを使ってはどうでしょうか。
追加になったデータだけを抽出というのは
結構面倒な作業なので、毎回全データをフィルターして
貼り付ける方法を記述してみました。
1行目にフィールド名(仮にXYZとしました。)を入れています。
そして、抽出したいA列のフィールド名XをE1に記入して
その下に抽出したい「あ」を仮に入れています。
またG列に抽出したいXフィールドの文字を縦に列挙しておきます。
その横のH列には、「あ」で抽出したデータを「Sheet2」ワークシートにコピーするというように、対応するコピー先ワークシートの名前を記述します。
A B C D E F G H
1 X Y Z X X シート名
2 あ 1 0 あ あ Sheet2
3 い 1 5 い Sheet3
4 あ 2 0
Sub FilterDataCopy()
Dim MyRow As Long 'G列の行を入れる変数
Application.ScreenUpdating = False
MyRow = 2
'まず前日の抽出データを全てクリア
Do Until Sheets("Sheet1").Cells(MyRow, "g") = ""
Sheets(Sheets("Sheet1").Cells(MyRow, "h").Text).Select
Cells.Select
Selection.ClearContents
MyRow = MyRow + 1
Loop
Sheets("Sheet1").Activate
MyRow = 2
'抽出してコピー
Do Until Cells(MyRow, "g") = ""
Range("e2") = Cells(MyRow, "g")
Range("a1").CurrentRegion.AdvancedFilter xlFilterCopy, Range("e1:e2"), Sheets(Cells(MyRow, "h").Text).Range("a1")
MyRow = MyRow + 1
Loop
Application.ScreenUpdating = True
End Sub
この回答への補足
ご回答ありがとうございます。
早速、やってみましたが、エラーが出てどうしてもうまく行きません。
基本的なことがわかっていないのでどこが悪いのかがわからないのです。
ちなみに、エラーメッセージは「400」となっています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 複数セルデータを別シートの単一セルにコピーしたい。(詳細をご参照ください) 1 2022/12/14 15:08
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Visual Basic(VBA) エクセルについて教えてください。 3 2023/06/28 09:11
- Excel(エクセル) Excelでのデータ管理 6 2022/12/24 09:33
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Visual Basic(VBA) 【困っています2】VBA 追加処理の記述を教えてください。 2 2022/08/26 11:42
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) Excelマクロの差分抽出のコードを教えていただきたいです。 2 2023/03/14 11:40
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 11:27
- Excel(エクセル) Excelの関数でこんな処理ができますか 1 2023/02/08 13:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルファイルのシート毎の容量
-
複数シートからデータを拾って...
-
Excelでシートの違うデータでグ...
-
excelの不要な行の削除ができな...
-
シート削除して同名シート追加...
-
EXCELで2つのファイルから重複...
-
VBAで CTRL+HOMEの位置へ移動...
-
Excelで日付変更ごとに、自動的...
-
トランジスタの選び方
-
エクセル 縦に長い表の印刷時...
-
EXCEL の表を一行ずつシートに...
-
ファンモータが作動しない。
-
エクセルで名簿を50音で切り分ける
-
EXCEL 複数行のデータを1行にま...
-
Excelマクロ 差分抽出の方法が...
-
(VBAにて)日付でデータを抽出す...
-
エクセルVBAで、特定文字から始...
-
オートフィルタで抽出したデー...
-
Excel 売上管理シートに入力し...
-
実行時エラー’438 の解消
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルファイルのシート毎の容量
-
複数シートからデータを拾って...
-
Excelでシートの違うデータでグ...
-
シート削除して同名シート追加...
-
excelの不要な行の削除ができな...
-
Excelで日付変更ごとに、自動的...
-
VBAで CTRL+HOMEの位置へ移動...
-
トランジスタの選び方
-
EXCELで2つのファイルから重複...
-
EXCEL 複数行のデータを1行にま...
-
他のシートの一番下の行データ...
-
オートフィルタで抽出したデー...
-
エクセルのカメラ機能について
-
(VBAにて)日付でデータを抽出す...
-
エクセルで名簿を50音で切り分ける
-
別々のシートの表をピボットテ...
-
Excel 売上管理シートに入力し...
-
Excelマクロ 差分抽出の方法が...
-
EXCEL の表を一行ずつシートに...
-
エクセルVBAで、特定文字から始...
おすすめ情報