- ベストアンサー
Excel VBAでのデータ自動化についての質問
- エクセルのVBAに詳しい方にコードの助けを頂きたいです。S1の項目と完全一致するS2の項目のデータをS1に自動的に張り付けたいです。
- 前提として、S1の項目が空欄になるまでループし、S2の2列目以降の全てのデータをS1に張り付けます。また、S1の「地区」にS2の「区域」を反映させる必要があります。
- 具体的には、S1の1列目に「ID、地区、住所、電話番号、資産名、耐用年数、取得日」と記載されており、S2の1列目に「住所、設備、資産名、区域、備考」が記載されています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Sheet1は項目名のみのでB1以降は空。 項目名を合わせて持ってくるということでしょうか。 (上記では、住所、資産名のみ)と書いてありますが、 『S1の「地区」に、S2の「区域」を反映できるようなコード』というのなら、区域も持ってきて地区に入れるということではないのですが? 作ってみました。 ' Option Explicit ' Sub Macro1() ' Dim Col1 As Integer Dim Col2 As Integer Dim Word2 As String Dim Word1 As String Dim Row As Long ' For Col2 = 1 To [Sheet2!A1].End(xlToRight).Column Word2 = Sheets("Sheet2").Cells(1, Col2) ' If Word2 = "区域" Then Word2 = "地区" End If ' For Col1 = 1 To [Sheet1!A1].End(xlToRight).Column Word1 = Sheets("Sheet1").Cells(1, Col1) Row = Sheets("Sheet2").Cells(Rows.Count, Col2).End(xlUp).Row ' If Row > 2 And Word1 = Word2 Then Sheets("Sheet2").Cells(2, Col2).Resize(Row - 1, 1).Copy _ Sheets("Sheet1").Cells(2, Col1) Exit For End If Next Col1 Next Col2 End Sub
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
ここは、課題を出して、プログラムを作ってもらうコーナーではない。 自分で勉強すること。または業者に頼むこと。なぜプログラムだけは、ただで頼めると思うのか。 コードを書く気はないが、下記を参考までに読んで置いたら。 質問の内容はVBAの中級ぐらいの技量が必要。 見出し項目などくだくだ質問に書く前に、どういうロジックでエクセル的に問題を処理する、かの「ロジックやアルゴリズム」の勉強が必要であることを認識すること。 キー項目(たとえば社員番号、素人には氏名や製品名といった説明の方が、わかりやすいかも)情報の結合という範疇の問題です。本件は同じシート上の問題だが、普通は別の2ファイルにデータが分かれている場合が多い。 使う方法の例は (1)1つにつき、相手データを1件ずつチェックする(最悪全件回)。 判別を繰り返す法。 (2)1件1件エクセルのFindメソッドで対象グループデータから探す (3)ソート法(まず両者をキーでソートする)+並んだデータをキーでマッチング+マッチした相手データを採ってくる (4)伝統的な、検索に適したソフトを使う。例SQL、エクセルでも使えるが学が学習が進んでないと、すぐはむつかしい。accessなどでは常識。 ーー S1など抽象的(実例を隠した)な例でなく、約10件(行)約5-6項目ぐらいの例を作って挙げる方が、読者にはわかりやすい。類型を捉える勉強にもなると思う。
お礼
アドバイス頂きましてありがとうございます、今後の参考にいたします!
- bunjii
- ベストアンサー率43% (3589/8249)
>どなたかコードを記載して頂けないでしょうか? プログラマーに有料で依頼する内容のように思われます。 >また下記の前提を考慮したコードであると、なお助かります! 詳細な仕様書を作成してサンプルデータを貼付すれば可能な仕事のようです。 しかし、無償でプログラムする人は稀であると思います。
お礼
アドバイス頂きましてありがとうございます、今後の参考にいたします!
お礼
返信遅れてしまい、申し訳ございません!頂いたコードを自分で微修正して、何とか対応できました! 本当に助かりました、ありがとうございます!!頂いたコードを十分に理解して、今後に活かす様にいたします_(._.)_