- ベストアンサー
エクセルマクロ初心者のためのデータ抽出方法
- エクセルマクロ初心者の方に向けて、データ抽出の方法をご説明します。
- エクセルのシート内の特定のデータを抽出するマクロの作成方法を詳しく解説します。
- マクロの組み方が分からない方でも、わかりやすい手順でデータ抽出ができるようにサポートします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#2です。 質問にあるデータはA列からF列で、No.の区切りに1行の未入力行があるとして、 Sub try() Dim r As Range Dim rr As Range For Each r In Range("B1", Cells(Rows.Count, 2)).SpecialCells(xlTextValues).Areas Set rr = r.Offset(, -1).Resize(, 6) MsgBox "Noは、" & rr.Item(1).Value & vbLf _ & "データ範囲は、" & rr.Address(0, 0) Next Set rr = Nothing End Sub でNo値とデータ範囲はとれますけど、そう言う事ではないのかな?
その他の回答 (2)
- n-jun
- ベストアンサー率33% (959/2873)
>データを、Sheet2(別のシート)内に作成した >フォーマット内に抜き出す。 書き出す位置はどのように決まっているのでしょうか。 どのようなデータを、(どのシートの)どのセルに書き込んでいくのかが よくわかりません。 質問にある表なら、SpecialCells メソッド・Areas プロパティ等を用いてもいいような。。。 勘ですけど。
- fujillin
- ベストアンサー率61% (1594/2576)
次のような手順でいかがでしょうか (1)A列(↑の例だとそのように思われる)で対象となる文字列を検索し、 一致する行を探す。 ・ワークシート関数のMATCH()関数を利用するか ・または、1行目から順にループで照合して探す (2)行が見つかれば以下の処理。なければ、中止(?) (無い場合どうするのかは、質問文からは不明) ・一致した先頭行から順に1行ずつの処理をループで繰り返す (3)1行の処理ループ ・1行のデータをコピーし、Sheet2のフォーマット内に記載 ・ループ処理の終了は、B列が空白になったら(としていいのかどうか 質問から読み取れないので不明。A列に、次の項目Noがあるか、 または、表全体の最終行になったらなどという判定方法もありそう。) 処理を分解してマクロの自動記録をとり、その一部を修正してつなげれば、おおむね作成可能と思われます。 (ループ処理の部分だけは、追加作成する必要あり)
補足
説明不足の為、申し訳ありません。 No1を検索した場合列はA~Eまで、行はNo1のA列の行が空白セルになるまでを別のシートに抜き出したいのです。 もし、A列の2行目にデータが入っていて、B列の同行にデータが 入っていない場合はそのまま表示を行い。 A列にデータが入っていない場合は、何もせずに終了といった形に したいのです。 この動作を、No1~No3で分け別のシートへコピーできないか というものです。 お忙しいところとは思いますが宜しくお願いします。