有没有办法使用VBA中的替换函数将单列中的多个值更改为不同的文本输出?

问题描述 投票:0回答:1

我正在尝试在 Excel 中创建一个公式或宏,以替换单列中的各种值以返回特定文本。 我能够创建一个适用于 1 个特定文本值的替换公式,问题是我需要一个公式将 36 个文本值替换为 27 个文本值。我认为 VBA 会帮助我解决这个问题,但我对 VBA 完全是新手。

例如,我在右侧列中有旧文本值,在左侧列中有新文本值。我的大多数值都是 1:1,“橙色”除外,它有 10 个值都需要显示为“橙色”。我尝试通过对每个单元格使用替换公式来记录宏,但我的列中有近 1700 个单元格需要用正确的值替换。 VBA 有什么办法可以帮我做到这一点吗?我知道它的编码一定很大,但我不够聪明,无法弄清楚

excel vba excel-formula substitution
1个回答
0
投票

如果您可以重复该

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()))
类型公式。

© www.soinside.com 2019 - 2024. All rights reserved.