• ベストアンサー

エクセルVBAのFindメソッドを使って・・・

こんばんは。エクセルのVBAで教えてください。 I列で「数量」という文字を見つけて、 その(I列の)右隣(J列)の値をB2以降に、 その2つ左(G列)のレートをC2以降に、 その3つ左(F列)の、2つ上の商品名をA2以降に 順に書き出していくようにしたいのですがどのようにコードを 書けばいいでしょうか? Findメソッドを使ってできそうだと考えたのですが、その先が さっぱりわかりませんが、なんとか形にしたいので質問させていただ きます。よろしくお願いします。

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

  • ベストアンサー
  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.2

質問者のスキルであれば単純なFor~Nextが分かりやすいでしょう。 '------------------------------------------- Sub Test()  Dim R As Long  Dim R2 As Long  R2 = 1  For R = 2 To Cells(Rows.Count, "I").End(xlUp).Row    If Cells(R, "I").Value = "数量" Then      R2 = R2 + 1      Cells(R2, "A").Value = Cells(R - 2, "F").Value      Cells(R2, "B").Value = Cells(R, "J").Value      Cells(R2, "C").Value = Cells(R, "G").Value    End If  Next R End Sub '----------------------------------------------- 以上。  

rstt
質問者

お礼

onlyromさんありがとうございました。思った通りの動作でした。 ひとりでここまで書けるかというと、書けませんが、確かに こちらの方が、初心者が勉強するならわかりやすいです。 ありがとうございました。

その他の回答 (1)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

I2以下”数量”という文字以外のセルが未入力なら、 Sub try() Dim r As Range For Each r In Range("I2:I" & Rows.Count).SpecialCells(xlTextValues) MsgBox r.Address Next End Sub で”数量”の入っているセルがわかります。 あとはOffsetで出来ると思いますけど、条件に合わなければスル~して下さい。

rstt
質問者

お礼

ご回答ありがとうございます。 I列には他にも違った文字列があり「数量」という文字なら・・・ という条件になります。 書いていただいたおかげでなんとなくイメージできました。 ありがとうございます。

関連するQ&A