VBA - 如何根据匹配值

时间:2017-08-16 18:23:37

标签: vba

我对VBA缺乏经验。我用VBA取得的成就是谷歌搜索引起的。所以,我所知道的根本没有深度。

好的,这就是我所拥有的:

在工作簿中,我有两张纸。让我们称它们为Sheet1和Sheet2。

在Sheet1中我有这个2-D表,其中### s是与匹配的行和列标签对应的某个值:

年龄男性女性
18-29 ##### ######
30-44 ##### ######
45+ ##### ######

上述所有细胞均为D2:F5

现在,在Sheet2中我有3列:ID年龄性别,从A7开始。因此,标题位于A7,B7,C7

你可能会看到我的目标。

我有数千行。

我需要在D7列中放置适当的###,标题Amount基于Sex(B)和Age(C)中的匹配值。

因此,如果Sheet1中的交叉表具有以下值:

年龄男性女性
18-29 123 456
30-44 789 101112
45+ 131415 161718

然后在Sheet2中我想看到:

ID性别年龄金额
1个女30-44 101112
2男18-29 123

等栏目。

我没有丝毫的线索如何解决这个问题。到目前为止,我最大的VBA成就是将CSV文件导入活动工作表,所以......

1 个答案:

答案 0 :(得分:0)

一个问题是:是"性"和"年龄" Sheet2中的手动输入?

您可能想要使用以下功能:

Application.Worksheetfunction.Vlookup(...)

但是,当然,您需要为每个表格设置某种类型的标识,例如:

Dim wSheet1 as Worksheet
Dim wSheet2 as Worksheet
Set wSheet1 = Worksheets("Sheet1")
Set wSheet2 = Worksheets("Sheet2")

就像你在普通工作簿中使用它一样。

示例:

wSheet2.cells("A7").value = "1" 'Note: You can improve this by looking at an empty row automatically with a code
wSheet2.cells("B7").value = application.worksheetfunction.vlookup("18-29",wSheet1.Range("D4:F9"),3,0)

您可以通过编辑搜索条件来改善您喜欢的程序" 18-29"

干杯