【发布时间】:2019-06-23 01:42:49
【问题描述】:
我想把我的公式变成一个宏。我想在 A 列上查找值并根据条件向 D 列返回不同的值。
我的公式是:
=IF(ISNUMBER(SEARCH("*10*",D2,6)),"word1",IF(ISNUMBER(SEARCH("*15*",D2,1)),"word2",IF(ISNUMBER(SEARCH("*1*",D2,1)),"word3",IF(ISNUMBER(SEARCH("*20*",D2,1)),"word4",IF(ISNUMBER(SEARCH("*30*",D2,1)),"word5")))))
我需要确保对 1 的搜索出现在 10 或 15 之后,这样公式就不会为包含“1”的所有单元格返回 word3。
A 列包含有时拼写错误的文本,因此唯一常见的值是数字。这就是为什么我想在文本中搜索数字以返回 word12345。
下面是一个例子-我每周都会得到一个不同的excel文件,其中包含年龄和姓氏,需要手动填写程序分类。
╔═══════════╦═════════╦═══════════╦═════════╗
║ AGE ║ NAME ║ LAST NAME ║ PROGRAM ║
╠═══════════╬═════════╬═══════════╬═════════╣
║ 10 YE OLD ║ ANNE ║ BROWN ║ word1 ║
║ AGE 10 ║ ALLY ║ SMITH ║ word1 ║
║ 15 YO ║ MATT ║ JANES ║ word2 ║
║ 15 ║ DENNIS ║ JOHNSON ║ word2 ║
║ 10Y OLD ║ DIANA ║ WILLIAMS ║ word1 ║
║ 20yr ║ JORDAN ║ BROWN ║ word4 ║
║ 30 YR OLD ║ MELISSA ║ RODRIGUEZ ║ word5 ║
╚═══════════╩═════════╩═══════════╩═════════╝
我需要从中获取结果的数据示例如下:
10 YE OLD
AGE 10
15 YO
15
10Y OLD
20yr
30 YR OLD
【问题讨论】:
-
为什么不使用查找表并将公式缩短到更合适的大小?
-
你能给我们一个你必须搜索的数据样本以及你在寻找什么吗?这比从您的公式开始并向后工作更容易使用。
-
我同意 Scott,使用查找表。这样,任何人都可以更新表格并获得他们需要的结果。如果事情需要改变,绝大多数人将无法更新 VBA。尽可能从代码中抽象出逻辑。
标签: excel vba if-statement search excel-formula