• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA 条件一致 抽出 ループ)

VBAで条件一致抽出ループ

このQ&Aのポイント
  • VBAを使用して、条件に一致するデータを抽出しループ処理する方法について説明します。
  • 具体的には、《シート1》と《シート2》という2つのシートがあり、《シート1》の一部のデータを《シート2》に抽出する方法について解説します。
  • 条件によって、抽出するデータの配置やループ処理の方法が異なる場合もあります。具体的な処理の流れや注意点を詳しく説明しています。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

ご相談で書かれている通りに、1行目にタイトル行など用意してない、1行目からいきなり生データが記入してあるとします 1行ずつループしてひとつずつ調べてくみたいな遅い事はしないでみます。 sub macro1() ’整形  worksheets("Sheet1").select  worksheets("Sheet2").cells.clearcontents  range("1:1").insert shift:=xlshiftdown  range("A1:C1") = array("F1","F2","F3")  range("C:C").insert  range("C2:C" & range("D65536").end(xlup).row).formula = "=A2&""_""&B2" ’項目の抽出  range("B1:B" & range("B65536").end(xlup).row).advancedfilter _   action:=xlfiltercopy, _   copytorange:=worksheets("Sheet2").range("A1"), _   unique:=true ’横向け  worksheets("Sheet2").range("A2:A" & range("A1").end(xldown).row).copy  worksheets("Sheet2").range("B1").pastespecial transpose:=true  worksheets("Sheet2").range("A:A").clearcontents ’項目の抽出  range("A1:A" & range("A65536").end(xlup).row).advancedfilter _   action:=xlfiltercopy, _   copytorange:=worksheets("Sheet2").range("A1"), _   unique:=true ’データの抽出  with worksheets("Sheet2").range("A1").currentregion.offset(1,1)   .formula = "=VLOOKUP($A2&""_""&B$1,Sheet1!$C:$D,2,FALSE)   .value = .value   .specialcells(xlcelltypeconstants, xlerrors).clearcontents  end with ’後片付け  worksheets("Sheet2").range("A1").clearcontents  range("C:C").delete shift:=xlshifttoleft  range("1:1").delete shift:=xlshiftup  worksheets("Sheet2").select end sub

noname#187774
質問者

お礼

お早い回答有り難うございます。 なんだか、ボケている質問だったらすみません。 データ抽出のところで、withを使用していますが、そちらう後ろには何を記載したら良いでしょうか。 また、こちらを実行すると同じところ(データ抽出)のworksheetsの部分でオブジェクトは、このプロパティまたはメソッドをサポートしていません。と出てしまいます。 もし私のモジュールへの書き方がおかしかったらすみませんが、 ご指示いただけないでしょうか。

noname#187774
質問者

補足

補足より失礼致します。 私の書き方がおかしかったようです。 またこちらの使い方も慣れていなく、 お礼を書き直したり等できなそうなので、 こちらに書かせて頂きます。 お早い回答有り難うございました。

関連するQ&A