VBA:循环来映射来自2个不同工作簿的数字

时间:2016-08-16 03:22:49

标签: excel vba macros

我有两个不同的excel工作簿,一个叫做DATA,一个叫做ReportTemplate。所以现在我需要将DATA中的数据插入ReportTemplate中的相应行/列。

我现在的表现如下: '其他(这是其他货币)

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用于存储DATA中特定单元格的值,然后将其插入Range(" X36")。REPORTTEMPLATE中的值。所以目前我正在进行"映射"以硬编码的方式。

这就是我的DATA的样子: DATA TEMPLATE

这就是我的REPORTTEMPLATE的样子:REPORTTEMPLATE

对于"其他"以上货币,它们都是固定的,所以我可以对单元格进行硬编码。

但是,如果有任何新货币,我的宏应检测到该货币,然后在下拉列表中选择货币,然后进行映射。

如何实际参数化上面的代码以映射其余货币?

感谢您的建议。

1 个答案:

答案 0 :(得分: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

只需更改For i = 3 To 5以满足您的需求,并检查"-- Please Select Currency --"是否匹配。

如果您有任何问题或疑问,请询问;)