如果单元格以文本字符串开头...公式

29

我有一个公式,用于检查单元格是否以文本“A”开头,并返回“B”代表取货和“C”代表预付款。

但它似乎无法正常工作。

=LOOKUP(LEFT(A1),{"A","B","C"},{"提货","收集","预付款"})

即使是A和C也返回了预付款...

3个回答

37

我不确定lookup是否适用于此,因为它有多个参数。也许可以使用hlookupvlookup,但这需要您拥有值的表格。对于小样本量,一个简单的嵌套if系列就可以解决问题。

尝试使用以下公式:

=IF(A1="a","pickup",IF(A1="b","collect",IF(A1="c","prepaid","")))

现在将您的left参数合并进去:

=IF(LEFT(A1,1)="a","pickup",IF(LEFT(A1,1)="b","collect",IF(LEFT(A1,1)="c","prepaid","")))

请注意您对left的使用,您的参数没有指定字符数,而是一个集合。


7/8/15 - 上述功能的Microsoft KB文章。我认为techonthenet没有任何问题,但我更愿意链接到官方来源。


需要使用 Left,因为它不是单个字符的 "A",而更像是 A-###、B-###... - ggmkp
@pnuts,对我也有效,除了返回“预付费”以外的任何值,除了a或b。也许它应该是一个数组公式? - Raystafarian

3

从 Excel 2019 开始,你可以这样做。在末尾的“Error”是默认值。

SWITCH(LEFT(A1,1), "A", "Pick Up", "B", "Collect", "C", "Prepaid", "Error")

Microsoft Excel 函数 Switch 文档


2

我知道这篇文章很老,但在寻找解决相同问题的方法时我发现了它。我不想使用嵌套的if语句,而且Switch显然比我使用的Excel版本要新。我找出了我的代码出了什么问题,所以我想在这里分享一下,以防对某人有所帮助。

我记得VLOOKUP需要将源表按字母顺序/数字顺序排序才能正常工作。我最初尝试做到这一点...

=LOOKUP(LOWER(LEFT($T$3, 1)),  {"s","l","m"}, {-1,1,0})

当我这样做时,它开始工作了...

=LOOKUP(LOWER(LEFT($T$3, 1)),  {"l","m","s"}, {1,0,-1})

一开始我认为最后一个值可能会成为默认值,所以我想把零放在最后一个位置。不过似乎无论如何都不是这种行为,所以我只是按可能的匹配顺序排列,然后它就起作用了。

编辑:最后注意一点,我看到原帖中的示例字母按字母顺序排列,但我想如果出现错误并且字母A、B和C只是示例,实际用例可能会有所不同。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接