Excel Office 365, Concat和2x VLookup生成唯一字符串



我试图通过组合两个变量限制之间的所有单元格来创建一个文本字符串。

这个函数实际上是我想要的,但它在Excel中不起作用:

=CONCAT(VLOOKUP("Yes",X2:AA257,4,0):VLOOKUP("Yes",Y2:AA257,3,0))

我确实有一个变体,使用宏强制将vlookup单元格地址字符串转换为公式并对其进行计算,但它既笨拙又缓慢,并且使用宏使与其他人共享文件变得更加困难。

我知道这两个函数都有效:

- =CONCAT(AB2:AB257)
- =CONCAT(VLOOKUP("Yes",X2:AA257,4,0),VLOOKUP("Yes",Y2:AA257,3,0))

为什么不使用冒号而不是逗号的组合版本呢?

"开始字符串"指令变量在Y列,"结束字符串"指令变量在Z列,组装成字符串的数据在AA列。值得注意的是,我之后的函数使用VLOOKUP返回第一场比赛的结果,并忽略下面的一切,这就是我如何处理可变字符串长度-字符串可能需要从4到60个单元格之间的任何地方绘制到目前为止,我见过的最高值是233个单元格,所以255似乎是一个合理的未来证明。

我想另一种选择是有255组…,IF(VLOOKUP……在CONCAT括号,但这是更难排除故障,如果和当出现问题,我不确定我如何定义一个字符串范围的结束和下一个的开始;也许是堆叠的if,加上更多的复杂性惩罚?

您可以使用MATCH和OFFSET的扩展形式来做您想做的事情。

MATCH将找到一个匹配的值,而像VLOOKUP,但它返回匹配值的位置,而不是值本身(例如,如果你给它X2:AA257的范围,它在第10行找到的值,它将返回9)。

OFFSET将在单元格中返回值,距离您给出的原始单元格有一定距离,例如=OFFSET($C$1,5,10)将返回单元格H11中的值(距离单元格C1的5行和10列)。在它的扩展形式中,你可以给它一个宽度和高度,eg =OFFSET($C$1,5,10,2,2)将给你一个范围H11:I12。

你可以把OFFSET的输出输入CONCAT,它会给你你想要的。

额外提示:TEXTJOIN做CONCAT做的所有事情,但您也可以给它一个分隔符- eg =TEXTJOIN(", ",0,A1:A10)将返回十个单元格中的值,每个单元格之间用逗号和空格隔开。

最新更新