如何使用公式从基于文本匹配的字符串中获取字符后的值?

How to get a value after a character, from a string based on a text match using formula?

我得到以下值:

tradicional;cropped;mullet 

在单元格 A1 中,我可以在 tradicional, cropped and mullet 之间进行选择。在单元格 A2 中,我选择 12.

如果我选择 cropped 和 2,返回的值将是 10。

如果我选择 mullet 和 1,返回的值将是 5。 如果

我会选择 lenleft,但我不明白使用匹配条件这将如何工作。

这是一个实际的例子:https://docs.google.com/spreadsheets/d/1dFzXmtKj15EzApTKUKv8yF7_mAIB1COPSgMLMMmFE4E/edit?usp=sharing

感谢您的帮助。

描述

您可以在分号“;”上拆分文本字符串分为 3 个部分。根据您选择的部分,您可以将其拆分为美元符号“$”,然后您可以获得“item”和 return 一个整数。我把它留给你去弄清楚如何融入你的脚本。

脚本(测试用例)

function makeAChoice() {
  try {
    console.log("You chose "+getChoice("cropped",2));
    console.log("You chose "+getChoice("mullet",1));
    console.log("You chose "+getChoice("somethingelse",1));
  }
  catch(err) {
    console.log(err);
  }
}

function getChoice(choice,item) {
  try {
    var text = "tradicional;cropped;mullet";
    text = text.split(";");
    text = text.filter( s => s.includes(choice) );
    if( text.length < 1 ) throw "Error choice ["+choice+"] not found!";
    text = text[0].split("$");
    return parseInt(text[item]);
  }
  catch(err) {
    console.log(err);
  }
}

Console.log

8:32:38 AM  Notice  Execution started
8:32:38 AM  Info    You chose 10
8:32:38 AM  Info    You chose 5
8:32:38 AM  Info    Error choice [somethingelse] not found!
8:32:38 AM  Info    You chose undefined
8:32:38 AM  Notice  Execution completed

参考

根据我对您原来 post 的评论,我觉得您的更大目标还有很多我们不知道的地方。但由于您无法提供,此解决方案将适用于您的一个确切示例。

将下面的公式放在C4中:

=ArrayFormula(IFERROR(VLOOKUP(A4;SPLIT(FLATTEN(SPLIT(E4;";"));"$");B4+1;FALSE)))

(请参阅新的 sheet“Erik 帮助”。)

内部 SPLIT 在每个分号处拆分 E4 字符串。

FLATTEN 将所有内容发送到一列。

外面的 SPLIT 然后在每个 "$" 处分裂。

VLOOKUP 然后可以尝试在生成的虚拟图表的第一列中找到 Col-A 项。如果找到,它将 return 匹配 Col-B 值 + 1 的列值(因为虚拟数组的第 1 列是标签,例如 'tradicional,' 等)。

如果 Col-A 和 Col-B 数据均未找到匹配项,则 IFERROR return 为空值。