• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA関数)

VBA関数でデータを抽出し、書き換える方法

このQ&Aのポイント
  • PC初心者の方でも簡単に使えるVBA関数を紹介します。指定した条件に基づいてデータを抽出し、別のシートに書き換える方法を説明します。
  • 具体的なコード例を示しながら、操作手順をわかりやすく解説します。VBAを使ってデータを抽出し、別のシートに書き換えたい場合に役立つ情報です。
  • さらに、抽出したデータを元のシートに戻す方法も解説します。しっかりと手順を実行すれば、簡単にデータの抽出と書き換えができます。

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

  • ベストアンサー
  • CC_T
  • ベストアンサー率47% (1038/2202)
回答No.3

失礼。検索行の末尾の.rowが括弧の中に入ってしまってました。 外に出してください。 .Row) ではなく ).Row です。 line3 = Worksheets("Sheet3").Range("H:H").Find(what:=Worksheets("Sheet5").Cells(line5, 8)).Row

kent4
質問者

お礼

本当に、素晴らしい回答を ありがとうございました。 これで、コピー貼り付けの手間が省けます。 また、何かの際にはどうぞお助け頂ければ幸いです。 PS プロフィールを拝見しました。 京都府在住なのですね。私は、北海道です 4月に京都旅行に行きます。 修学旅行以来なので、楽しみです。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • CC_T
  • ベストアンサー率47% (1038/2202)
回答No.2

>H列に通しNoを追加しました。 では、例えばsheet5の上から順に、 ・H列の通しNo.を見て同じ通し番号をsheet3で探し ・Sheet5の該当行のABDEF列の内容をsheet3の該当行列に代入 例えば、こんなの。 Sub Macro1() ' Dim line3 As Integer Dim line5 As Integer line5 = 2  '初期値を2行目に設定してます Do While Worksheets("Sheet5").Cells(line5, 1).Value > 0 'sheet5の通し番号をsheet3のH列から検索して、その行数をline3に代入する。   line3 = Worksheets("Sheet3").Range("H:H").Find(what:=Worksheets("Sheet5").Cells(line5, 8).Row) 'A,B列内容のコピー   Worksheets("Sheet5").Range("A" & line5, "B" & line5).Copy Worksheets("Sheet3").Cells(line3, 1) 'D~G列内容のコピー   Worksheets("Sheet5").Range("D" & line5, "G" & line5).Copy Worksheets("Sheet3").Cells(line3, 4)   line5 = line5 + 1    '次の行へ Loop   

kent4
質問者

お礼

早速、コピー実行してみました。 ABDEFG 転記成功です。 しかし、H列の検索が出来ませんでした。 シート3の2行目から順に貼り付けられました。 説明してませんでしたが、シート3は8行目からデータが入力されており シート5は1行目に抽出してます。このへんが問題なのでしょうか? シート3このようになってます。    A  B  C・・・H 1  月  日  名    2  3  5        3         抽出ボタン 4 ・ ・ 8  月  日  名 9  2  13  Zさん・・1 10 2   5  Nさん・・2 11 3   5  A商事・・3 抽出ボタン クリックで A商事 がシート5に抽出されます。 シート3のデータは200件です。 ご面倒をかけますがどうか宜しくお願い致します。

すると、全ての回答が全文表示されます。
  • CC_T
  • ベストアンサー率47% (1038/2202)
回答No.1

sheet5に書きだした時点で、sheet3の元データとの関連性はなくなります。 従ってsheet5で「書き換えた」内容でsheet3の「元データ」を書き換える事はできません。 VBAが「元データ」がどこにあるのかを判断できないためです。 Sheet3からデータを引っ張って来る際、同時にその行No.なりを取得してsheet5に書きだしておけば、何行目を書き換えに行けばいいのかを指示できます。 例えば、sheet3のデータ列に通しNo.の列を追加しておけば、フィルターでその列もsheet5に取り込まれますよね(もちろん通しNo.に重複があってはダメですよ)。それを手がかりにして元データをsheet5の内容で書き換えることが可能になります。

kent4
質問者

補足

ご回答有難うございます。 早速、検索してみましたが、これと言う式を探せませんでした。(素人ゆえに) 理解不足なのでしょう。 H列に通しNoを追加しました。 非常に厚かましいお願いですが、式、もしくは、参考になるようなものを教えていただければ幸いです。

すると、全ての回答が全文表示されます。

関連するQ&A