通过按钮点击获取excel的唯一数据?

时间:2013-12-26 18:43:04

标签: excel vba excel-vba vbscript

我是excel宏的新手。需要你的帮助。我有一张2张的excel文件。 在第一页我有一些数据 enter image description here

在第二张表中我需要一个按钮,它将获取不同的C列(Mname)及其ID。 enter image description here

1 个答案:

答案 0 :(得分:0)

与大多数Excel问题一样,这可以通过宏来完成,但也可以使用公式来完成。宏往往比它们的价值更麻烦,所以这里是公式选项。以这种方式使用公式有一些有趣的缺点,主要是如果你在一个工作簿中做太多,计算将非常缓慢。但只要你处理不到几千行,就不应该有问题了。


在您的主要工作表上,在D2中输入此公式,然后拖动它以自动填充您使用的许多行。完成后,如果适合您,可以隐藏D列。

=IF(COUNTIF($C:$C,$C2)<2,MAX($D$1:$D1)+1,0)

COUNTIF公式查找C列中有多少元素与$C2的内容匹配(其中$C2是(部分)相对参考,因此当您使用时行号会发生变化自动填充到其他行)。如果计数小于2($C2中的元素是唯一的),则IF公式将为列中的第一个唯一元素{{1}返回索引号:1对于第二个,等等。列D中C中相应单元不唯一的所有单元格都填充2

在第二张纸上,您将使用“查找”公式填充A列和B列,在主页的D列中搜索正值。大多数人使用0进行查找,我更喜欢combination of INDEX() and MATCH()。这里有一个很好的例子,因为我们的'唯一索引'不在主页的第一列(所以VLOOKUP不起作用!)。

VLOOKUP()

和第二张的'Mname'列,

=IFERROR(INDEX('Primary Sheet'!$A:$A,MATCH(ROW(A2)-1,'Primary Sheet'!$D:$D,0)),"")

这些查找公式基于它们自己的行号。因此,单元格=IFERROR(INDEX('Primary Sheet'!$C:$C,MATCH(ROW(B2)-1,'Primary Sheet'!$D:$D,0)),"") 中的公式正在查找A2列D中包含唯一索引2-1 = Primary Sheet的行。 1中的公式查找索引3-1 = A3等。围绕查找公式的2公式确保如果找不到所追求的索引,该公式返回一个空字符串(IFERROR()),它看起来像一个空白单元格。这样,您可以使用这些查找公式在辅助工作表上准备大量行。如果""上只有少量独特的Mnames,那么您的辅助工作表中的列不会出现Primary Sheet个错误。