我正在尝试在 Excel 中创建一个公式或宏,以替换单列中的各种值以返回特定文本。 我能够创建一个适用于 1 个特定文本值的替换公式,问题是我需要一个公式将 36 个文本值替换为 27 个文本值。我认为 VBA 会帮助我解决这个问题,但我对 VBA 完全是新手。
例如,我在右侧列中有旧文本值,在左侧列中有新文本值。我的大多数值都是 1:1,“橙色”除外,它有 10 个值都需要显示为“橙色”。我尝试通过对每个单元格使用替换公式来记录宏,但我的列中有近 1700 个单元格需要用正确的值替换。 VBA 有什么办法可以帮我做到这一点吗?我知道它的编码一定很大,但我不够聪明,无法弄清楚
如果您可以重复该
orange
值直至空白行,那么这可以通过公式实现。
考虑 A1:B8 中的以下数据
+------------+-----+
| orange | 123 |
| orange | 234 |
| orange | 345 |
| orange | 456 |
| orange | 567 |
| orange | 78 |
| grapefruit | 543 |
| apple | 5 |
+------------+-----+
在单元格
D1
中,您有以下字符串:
I've got a 123 and a 5 in one hand and a 456 and 543 in the other
在单元格
E1
中,您可以删除此公式,它将替换所有数字:
=REDUCE(D1, A1:A8, LAMBDA(a,b, SUBSTITUTE(a, OFFSET(b,0,1), b)))
输出:
I've got a orange and a apple in one hand and a orange and grapefruit in the other
Reduce()
是一个很酷的函数,它将初始值(在本例中为D1
)和数组(A1:A8
)输入到函数中,并收集结果以输出最终结果。本例中的函数是一个 LAMBDA
,它使用 D1 值和数组调用 SUBSTITUTE()
。您可以将其视为动态构建深度嵌套的 Substitute(Substitute(Substitute()))
类型公式。