• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルマクロ)

エクセルマクロ初心者のためのデータ抽出方法

このQ&Aのポイント
  • エクセルマクロ初心者の方に向けて、データ抽出の方法をご説明します。
  • エクセルのシート内の特定のデータを抽出するマクロの作成方法を詳しく解説します。
  • マクロの組み方が分からない方でも、わかりやすい手順でデータ抽出ができるようにサポートします。

質問者が選んだベストアンサー

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.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)
回答No.2

>データを、Sheet2(別のシート)内に作成した >フォーマット内に抜き出す。 書き出す位置はどのように決まっているのでしょうか。 どのようなデータを、(どのシートの)どのセルに書き込んでいくのかが よくわかりません。 質問にある表なら、SpecialCells メソッド・Areas プロパティ等を用いてもいいような。。。 勘ですけど。

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

次のような手順でいかがでしょうか (1)A列(↑の例だとそのように思われる)で対象となる文字列を検索し、   一致する行を探す。   ・ワークシート関数のMATCH()関数を利用するか   ・または、1行目から順にループで照合して探す (2)行が見つかれば以下の処理。なければ、中止(?)    (無い場合どうするのかは、質問文からは不明)   ・一致した先頭行から順に1行ずつの処理をループで繰り返す (3)1行の処理ループ   ・1行のデータをコピーし、Sheet2のフォーマット内に記載   ・ループ処理の終了は、B列が空白になったら(としていいのかどうか    質問から読み取れないので不明。A列に、次の項目Noがあるか、    または、表全体の最終行になったらなどという判定方法もありそう。) 処理を分解してマクロの自動記録をとり、その一部を修正してつなげれば、おおむね作成可能と思われます。 (ループ処理の部分だけは、追加作成する必要あり)

tgbnhyvfr
質問者

補足

説明不足の為、申し訳ありません。 No1を検索した場合列はA~Eまで、行はNo1のA列の行が空白セルになるまでを別のシートに抜き出したいのです。 もし、A列の2行目にデータが入っていて、B列の同行にデータが 入っていない場合はそのまま表示を行い。 A列にデータが入っていない場合は、何もせずに終了といった形に したいのです。 この動作を、No1~No3で分け別のシートへコピーできないか というものです。 お忙しいところとは思いますが宜しくお願いします。

関連するQ&A