- ベストアンサー
VB初心者の方へ!Excelでのデータの抽出と書き込み方法を教えてください
- ExcelのVBA初心者の方に向けて、Sheet1からデータの抽出とSheet2への書き込み方法を教えてください。
- 具体的には、Sheet1のデータをSheet2で科目別に集計し、見積書としてまとめたい場合のマクロの作成方法について教えてください。
- 質問者はVBの勉強を始めたばかりで、試した方法ではうまく処理できなかったため、知恵を貸していただきたいとのことです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
見積もり表の構成を1行にするのであれば データ > フィルター > フィルターのオプション あたりでやれますが 2行構成にしてしまうとVBAになるでしょう 『Microsoft Scripting Runtime』に参照設定しておいて Sub MacroFruit() dim arData, sv dim dict as new Scripting.Dictionary dim n as integer dim oSrc as Range, oDest as Range arData = Sheets("Sheet1").Range("V2:V71").Value for n = 1 to UBound( arData,1) if Dict.Exists( arData( n,1 ) ) = false then Dict.add arData( n,1 ), arData( n,1 ) end if next Set oDest = Sheets("Sheet2").Range("A10") for each sv in dict for n = 1 to Ubound(arData,1) if arData(n,1) = sv then Set oSrc = Sheets("Sheet1").Range("V" & n + 1 ) oDest.Offset(0,1).value = oSrc.Offset(0,1).value ' 産地 oDest.Offset(0,2).Resize(1,7).value = oSrc.Offset(0,3).Resize(1,7).value oDest.Offset(1,0).value = oSrc.value ' 果物名 oDest.Offset(1,1).value = osrc.Offset(0,2) ' 農家 ' 次の転記位置に更新 set oDest = oDest.Offset(2) end if next next End Sub といった具合です 他のシートに関しては arData = Sheets("Sheet1").Range("V2:V71").Value Set oSrc = Sheets("Sheet1").Range("V" & n + 1 ) Set oDest = Sheets("Sheet2").Range("A10") の部分の V2:V71や "V" & n + 1の +1、Sheets("Sheet2")などを修正してください
その他の回答 (1)
- n-jun
- ベストアンサー率33% (959/2873)
シート1の1行のデータをシート2に2行で表示したいというように、 思ったのですが。。。 どのセルのデータをどこに入れていくのか?今一つわかりません。 >コピーして貼り付け 値だけで良いのであれば 例: Sheets("Shhet2").Range("A1").Value = _ Sheets("SHeet1").Range("A1").Value とすれば、シート1のA1の値がシート2のA1に代入されます。 これではまずいのでしょうか?
補足
n-jun回答ありがとうございます。 内容がうまく伝わらず表現不足といいますか.... 申し訳ありません。
お礼
redfox63さん回答ありがとうございます。 思っていた通りに処理出来ました。 素人の私にとってはこれから内容を一つづつ 理解してこれらからの勉強に役立てるのが課題として 残りました。 その他の作業を含め進めていく上で私自身で解決できない課題が ありましたら、その時はアドバイスをお願いします。 本当にありがとうございます。