【问题标题】:Get Unique data from excel by button click?通过单击按钮从 excel 中获取唯一数据?
【发布时间】:2015-02-25 03:03:42
【问题描述】:

我是 excel 宏的新手。需要你的帮助。我有一个带有 2 张纸的 excel 文件。 在第一张我有一些数据

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

【问题讨论】:

  • 你可以记录自己自动填充 vlookup
  • @Stepan1010 我可以为它写一个宏...有什么帮助吗?我是新手。
  • 你可以写一个,也可以记录下来——无论哪种方式——哪个更容易。像这样简单的事情当然不需要手写宏。我假设您知道如何将宏附加到按钮。
  • 您甚至不需要编写宏。 Stepan 建议您使用 Excel 中的宏录制功能。如果该功能对您来说是新功能,请查看是否有帮助:office.microsoft.com/en-us/excel-help/…

标签: vba excel vbscript


【解决方案1】:

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


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

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

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

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

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

对于第二张表的“Mname”列,

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

这些查找公式基于它们自己的行号。因此单元格A2 中的公式正在查找Primary Sheet 的D 列中包含唯一索引2-1=1 的行。 A3 中的公式查找索引 3-1=2 等。包裹在查找公式周围的 IFERROR() 公式可确保如果未找到所需索引,则公式返回空字符串(""),它看起来像一个空白单元格。这样,您可以使用这些查找公式在辅助工作表上准备大量行。如果 Primary Sheet 上只有少量唯一的 Mname,则您的辅助工作表将不会有充满 #N/A 错误的列。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-05
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-21
    • 2019-03-30
    • 2012-12-24
    相关资源
    最近更新 更多