2016-08-16 1 views
0

2つの異なるExcelワークブックがあります.1つはDATA、もう1つはReportTemplateです。だから今私は、DataからReportTemplateの対応する行/列にデータを挿入する必要があります。私は、例えば、今やっている方法VBA:2つの異なるワークブックの図をマップするためのループ

: 「その他(これは他の通貨です)

DATA_FILE.activate 
Sheets("SA_FX_2").select 
SRC_SA_FX_2_D25 = Range("D25").Value 
SRC_SA_FX_2_E25 = Range("E25").Value 
SRC_SA_FX_2_F25 = Range("F25").Value 
SRC_SA_FX_2_G25 = Range("G25").Value 
SRC_SA_FX_2_H25 = Range("H25").Value 

REPORTTEMPLATE_FILE.activate 
Sheets("SA_FX_2").select 
Range("D36").Value = SRC_SA_FX_2_D25 
Range("E36").Value = SRC_SA_FX_2_E25 
Range("F36").Value = SRC_SA_FX_2_F25 
Range("G36").Value = SRC_SA_FX_2_G25 
Range("H36").Value = SRC_SA_FX_2_H25 

SRC_SA_FX_2_X25は、データ内の特定のセルの値を格納することで、その範囲の中にそれを挿入( "X36")。REPORTTEMPLATEの値。だから私はハードコーディングされた方法で "マッピング"をやっています。

これが私のデータがどのように見えるかです:ちょうど「その他」の場合と通貨の上REPORTTEMPLATE

、それらはすべて固定されているので、私は次のことができます。 DATA TEMPLATE

そして、これは私のREPORTTEMPLATEがどのように見えるかです細胞をハードコードする。

しかし、新しい通貨がある場合は、マクロがそれを検出し、ドロップダウンリストで通貨を選択してマッピングを実行する必要があります。

残りの通貨のマッピングに対して、上のコードを実際にパラメータ化するにはどうすればよいですか?

ありがとうございました。

答えて

0

簡単な方法は、彼らが好きMATCHに次のようになります。

'we look for rows 3 to 5 of DATA_FILE in REPORTTEMPLATE_FILE 
Dim i As Long, OutRow As Variant, wsIn As Worksheet, wsOut As Worksheet 
Set wsIn = DATA_FILE.Sheets("SA_FX_2") 
Set wsOut = REPORTTEMPLATE_FILE.Sheets("SA_FX_2") 
For i = 3 To 5 
    'get the row of the active item in REPORTTEMPLATE_FILE 
    OutRow = Application.Match(wsIn.Cells(i, 3).Value2, wsOut.Columns(3), 0) 
    If Not IsNumeric(OutRow) Then OutRow = Application.Match("-- Please Select Currency --", wsOut.Columns(3), 0) 'not there -> new line 
    wsOut.Range("C" & OutRow & ":H" & OutRow).Value2 = wsIn.Range("C" & i & ":H" & i).Value2 
Next 

だけ"-- Please Select Currency --"が一致しない場合は、あなたのニーズに合わせて、チェックするためにFor i = 3 To 5を変更します。

ご質問や問題がある場合は、ちょうど頼む;)

+0

ハイテクディルク、私は(この OutRow = Application.Match(wsIn.Cells(I、3).Value2、wsOut.COLUMNSを理解しようとしています3)、0)。これはwsIn.cells(i、3).value2とwsOut.columns(3)を一致させようとしていますが、.value2と0の意味は何ですか? – Chun

+0

@Chun 'Value2'は単にセル内の値です。そして、 '0'は正確に一致するか(正確に同じものを見つけるか、エラーを返します)。 –

+0

私はoutrow = application.match ...をデバッグするのに疲れたときにoutRow =エラー2042を与え、wsout.Range = wsIn.Rangeは私に型の不一致を与えています。これを引き起こしている問題は何でしょうか? – Chun

関連する問題