我在 Excel 中有一个表格,其中有一个标题行,单元格 A2(文本)、B2(文本)、C2(文本)、D2(文本)和 E2(数字)中有数据。A2、B2、C2、D2 是下拉列表,其中有不同的可选数据。E2 是一个公式,每次向表格中添加新行时都会自动生成一个增量数字。

我想在单元格 N2 中自动生成一个引用,该引用由 A2、B2、C2、D2、E2 中的数据组成。例如:

A2=苹果 B2=绿色 C2=成熟 D2=位置 E2=0001

单元格 N2 中的期望结果将是 APP-GRE-RIP-LOC-0001

我取得了一些成功:

=IF(A2=”苹果”,”APP-“&E2)

单元格 N2 中的结果将是 APP-0001。但是我不确定如何嵌套这些,因此结果会根据单元格中的数据而不同。此外,是否有更灵活的公式,因为下拉列表中的数据可能会随着时间的推移而扩大。

提前致谢!

2

  • 为什么不直接使用=CONCAT(A2&"-"&B2&"-"&C2&"-"&D2&"-"&E2)?如果 D2 是静态字符串值,我会通过格式化将其表示为前缀。


    – 


  • 嗨,谢谢。这确实部分有效。它生成的是 Apple-Green-Ripe-Location-0001。我正在寻找 APP-GRE-RIP-LOC-0001


    – 



最佳答案
2

不要使用Concatenate()。它不是必需的,而且输入起来太多。您可以直接使用&字符。

您似乎想要取出单元格的前三个字符并将它们串在一起,用破折号“-”分隔,然后是 E2 中的值。为此,您可以使用:

=UPPER(LEFT(A2,3)&"-"&LEFT(B2,3)&"-"&LEFT(C2,3)&"-"&LEFT(D2,3)&"-"&E2)

该公式使用 LEFT() 函数从单元格 A2 到 D2 中提取前三个字符,在它们之间添加破折号,连接 E2,然后使用 UPPER() 将整个内容转换为大写

或者更短

=UPPER(CONCAT(LEFT(A3:D3,3)&"-",E3))

1

  • 1
    太棒了!效果非常好。谢谢。


    – 

另一个选项是 TEXTJOIN:

=TEXTJOIN("-",,UPPER(LEFT(B2:F2,3)))