从其他工作簿返回值

时间:2016-03-10 15:43:36

标签: excel vba excel-vba

对于解决我的问题的公式有疑问。 在我的主要工作簿中,我需要比较来自两个来源的数据。 其中一列必须从其他工作簿中检索数据(金额)。 我想要的公式将搜索G列中的所有金额,并将跳过所有空白单元格。试图使用VLOOKUP,INDEX和SMALL函数但没有效果。 每天的金额都不同,我需要在主文件中匹配它们并找到exeptions。

有什么想法吗? enter image description here

2 个答案:

答案 0 :(得分:0)

您可以遍历列并将每个值> 0存储在一个数组中然后进行比较,或者循环遍历该列并直接进行比较...

类似的东西:

Dim i as Integer = 0
Foreach value in Maintable
    Do 
    If otherworkbook.cells(i,7) = value Then '7 for G
     do your stuff
    End If
    i = i + 1
    While i < otherworkbook.rows.count
Next

我认为这可能是正确的方法

答案 1 :(得分:0)

如下所示的数组公式怎么样?

=INDEX($G$2:$G$20,SMALL(IF(($G$2:$G$20)=0,"",ROW($G$2:$G$20)),ROW()-1)-ROW($G$2:$G$20)+1)

公式必须作为array formula放入单元格I2(必须按Strg + Shift + Enter输入)。然后,您可以向下拖动公式以获取所有其他值。

它不必位于I列中,但它必须位于行2中,因为此公式从列表中获得的第n个数字不是= 0.第n位(在此公式中)row()-1。因此对于第2行,它将是2-1=1,因此是第1个数字。通过拖动公式,您将获得第2个,第3个等号。如果您从单元格I5中的公式开始,则必须将其调整为如下所示:

=INDEX($G$2:$G$20,SMALL(IF(($G$2:$G$20)=0,"",ROW($G$2:$G$20)),ROW()-4)-ROW($G$2:$G$20)+1)

enter image description here