【问题标题】:Excel Office 365, Concat and 2x VLookup to generate a unique stringExcel Office 365、Concat 和 2x VLookup 生成唯一字符串
【发布时间】:2021-04-26 07:12:23
【问题描述】:

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

这个功能实际上是我想要的,但它在 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 返回第一个匹配的结果并忽略低于我处理可变字符串长度的所有内容 - 字符串可能需要从四到六十之间的任何地方绘制到目前为止,我看到的最高值是 233 个单元格,所以 255 似乎是一个合理的未来证明。

我想另一种选择是在 CONCAT 括号中设置 255 组 ...,IF(VLOOKUP... 但如果出现问题以及何时出现问题,则更难排除故障,而且我不确定我是如何解决的'd 定义一个字符串范围的结尾和下一个字符串范围的开始;可能是堆叠的 IF,具有更复杂的惩罚?

【问题讨论】:

    标签: excel range concatenation office365 vlookup


    【解决方案1】:

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

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

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

    然后,您可以将 OFFSET 的输出输入到 CONCAT,它会为您提供您想要的。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-24
      • 2021-07-08
      • 2012-06-17
      • 2012-11-21
      • 2010-10-18
      相关资源
      最近更新 更多