
Excel2003を使用しています。
CSVでExcelに取り込んだデータの中から、条件を満たすものを順に抽出して一覧表を作成するマクロを作りたいのですが。。。
・Sheet2のB列に“コード”と入力されている行のC列のデータ → Sheet1のC列2行目以下
・Sheet2のC列に“合計”と入力されている行のD列のデータ → Sheet1のD列2行目以下
に順に表示させたいのですが、うまくいきません。
以前、いただいた回答で参考になりそうなものを見てみたのですが、手順というか何かヒントのようなものをいただけたら、自分でどうにかできそうなので、質問させていただきました。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
こんにちは。
ご質問が、分かりにくいのです。
>・Sheet2のB列に“コード”と入力されている行のC列のデータ → Sheet1のC列2行目以下
>・Sheet2のC列に“合計”と入力されている行のD列のデータ → Sheet1のD列2行目以下
これが、横並びするものか、それとも、別々のものかということです。横並びするにしても、必ず、コードと合計が一対にならないこともあるとか、話が複雑なこともあります。
そういう場合、次の「コード」という文字が現れるのを、トリガーにして、前のデータの書き出しするとか、それぞれ現れたら、別々にSheet1 のC列・D列に順送りしてよいのか、そういうところが見えてきません。
また、CSVというのにも関わらず、同じデータフィールドに、数値と文字列の混在があるように思います。そういうのを単純に考えてよいのか、いろんなことを考えてしまいます。
通常は、別々に考えるなら、ローテクですが、以下のようにすれば、良いわけですが……。
Dim Sh1 As Worksheet
Dim Sh2 As Worksheet
Dim i As Long
Dim j As Long
Set Sh1 = Worksheets("Sheet1")
Set Sh2 = Worksheets("Sheet2")
j = 2
k = 2 '初期値
With Sh2
For i = 1 To .Range("B65536").End(xlUp).Row
If .Cells(i, 2).Value Like "*コード*" Then
Sh1.Cells(j, 3).Value = .Cells(i, 3).Value
j = j + 1
End If
If .Cells(i, 3).Value Like "*合計*" Then
Sh1.Cells(k, 4).Value = .Cells(i, 4).Value
k = k + 1
End If
Next i
End With
Wendy02 さん、こんにちは。
回答ありがとうございます。
まず、説明不足で申し訳ありません。
「CSVでExcelに取り込んだデータ」というのは、会社で使用しているシステムからCSV出力 → Excelに取り込んだデータでして、抽出するデータ部分については、数値と文字列の混在はない状態です。
このデータの状態をみて、“コード”と“合計”は入力されている列は違うものの、交互に現れるので、この規則性を利用して、それぞれSheet1 のC列・D列に順送りすれば、一覧表が作成できると考えたわけです。
おかげさまで、無事データを順に表示させることができました。
ループが複数であったり、条件があったりすると、まだうまくコードを書くことができません(>_<)
参考書を読んだり、以前ここで教えていただいたコードを参考にしたり、試行錯誤していますが、まだまだです(^^ゞ
ありがとうございました!
No.1
- 回答日時:
Sheets("Sheet2").Cells(i,2)が"コード"ならSheets("Sheet1").Cells(j,3)=Sh
eets("Sheet2").Cells(i,3)回答ありがとうございます。
質問文に詳しく記載しておけばよかったのですが、条件の部分(回答をいただいた部分)は分かりますので、同様に書いています。
ループさせて、Sheet1の2行目以下に順に、該当のデータを表示させるところがうまくいっていない(?)ようでして、ループのさせ方を教えていただけないでしょうか?
再度の質問で恐れ入りますが、よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) マクロを教えてください。 7 2023/06/01 19:47
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) マクロか関数で処理したいのですが、教えて頂けませんか。 8 2022/10/31 15:18
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) Excel 表の作成について 3 2022/06/16 12:15
- Excel(エクセル) Excelで、別シートの表のステータスに伴った動的な自動転記をしたいです。 2 2023/06/14 15:56
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける (再質問) 4 2022/09/14 22:51
- Excel(エクセル) VLOOKUP が機能しない、その原因は何 ? 8 2022/10/19 12:06
- Visual Basic(VBA) VBAでPowerPointからExcelにレイアウト通りに出力する 4 2023/07/05 12:22
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで離れた列を選択して...
-
「段」と「行」の違いがよくわ...
-
CSVファイルの「0落ち」にVBA
-
LEFT関数とIF関数の組み合わせ...
-
VLOOKUPの列番号の最大は?
-
エクセルマクロで表の途中の集...
-
エクセルで複数列の検索をマク...
-
エクセル マクロ 範囲指定で...
-
VBA 指定した列にある日時デー...
-
エクセルのソートで、数字より...
-
最終行に合計(最終行が列によ...
-
エクセルマクロPrivate Subを複...
-
アクセス 取り込み時に、桁数(...
-
エクセルで最初の行や列を開け...
-
Excelの行数、列数を増やしたい...
-
再質問です。マクロの修正箇所...
-
エクセルで選択した列のみテキ...
-
エクセルでセル12個間隔で合...
-
Excel マクロ ファイル名取得に...
-
エクセルVBAで値のカウントをし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「段」と「行」の違いがよくわ...
-
エクセルで離れた列を選択して...
-
VLOOKUPの列番号の最大は?
-
LEFT関数とIF関数の組み合わせ...
-
VBA 指定した列にある日時デー...
-
Excelの行数、列数を増やしたい...
-
CSVファイルの「0落ち」にVBA
-
列方向、行方向の定義
-
エクセルのソートで、数字より...
-
Excel文字列一括変換
-
VBAで別ブックの列を検索し、該...
-
エクセル マクロ 範囲の値を上...
-
VBAで重複データを合算したい(...
-
エクセル マクロ 範囲指定で...
-
VBAで結合セルを転記する法を教...
-
エクセルで最初の行や列を開け...
-
エクセルマクロPrivate Subを複...
-
土日の列幅の自動変更を教えて...
-
最近急にVBAの処理速度が遅くな...
-
エクセルでセル12個間隔で合...
おすすめ情報