【问题标题】:How to match terms from multiple columns to one column using VBA如何使用 VBA 将多列中的术语匹配到一列
【发布时间】:2012-08-23 12:49:51
【问题描述】:

我有用户 ID 的 Sheet1 与多个术语相关联。这些术语在单独的列中列出。每个用户最多有 30 个术语。该工作表在 A 列中组织为用户 ID,在 B、C、D 列等中组织为术语。

然后,我有一系列与 Sheet2 中唯一类别相关的术语(A 列中的术语,B 列中的类别)。目标是将用户与类别匹配。因此,我需要执行史诗比例的 Vlookup 或运行 VBA 程序,将 Sheet1 中 B、C、D 等列中的术语与 Sheet2 中 A 列中的术语进行比较。

如果在 Sheet2 中找到,如果公式将术语替换为 Sheet1 中的关联类别,那就太好了。

【问题讨论】:

    标签: excel vlookup vba


    【解决方案1】:

    创建工作表3

    将以下内容粘贴到 sheet3 单元格 A1:

    =iferror(vlookup(sheet1!A1,sheet2!:$A:$B,2,0),sheet1!A1)
    

    然后向下和向右拖动到 sheet1 中的尽可能多的行/列。

    本质上,该公式将查找 sheet2 列表中每个 sheet1 单元格中的任何内容。如果找到它,它会返回该值,如果不是,它只会显示 sheet1 上的内容。

    更新

    如果您有没有iferror 的旧版excel,您可以像这样使用iserror

    =if(iserror(vlookup(sheet1!A1,sheet2!:$A:$B,2,0)),sheet1!A1,vlookup(sheet1!A1,sheet2!:$A:$B,2,0))
    

    【讨论】:

    • 我觉得这完全错过了问题的第一句话-最多有30列。
    • @enderland - 为什么这不起作用?除非其中一个用户 ID 与查找列表中的值匹配,否则我认为没有问题。或者 OP 正在使用 Excel 2003 或更早版本。
    • @enderland ~ 公式可以向右拖动 30 列,注意绝对引用在工作表中的位置。 @enderland 我已经习惯了iserror 我忘记了 2003 年没有它!我更新了我的答案。
    • +1 like iferror 得到了很多电子表格,其中包含=if(isna(vlookup(blahblah)),0,vlookup(blahblah)) 格式的大公式; iferror 是一个不错的捷径
    • @astuttle 不要忘记选择这个作为答案,如果它确实是您问题的答案。
    猜你喜欢
    • 2019-04-01
    • 1970-01-01
    • 2021-02-03
    • 2021-09-11
    • 2015-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-23
    相关资源
    最近更新 更多