【问题标题】:Splitting numbers in a list and outputting a specific number from it拆分列表中的数字并从中输出特定数字
【发布时间】:2013-11-29 09:15:47
【问题描述】:

我想使用一个包含 20 个数字的列表,这些数字都存储在同一个单元格中并用空格分隔。例如在A1 我有:

0 0 1 1 2 3 4 7 8 9 10 12 14 16 18 21 24 28 32 37

下面的代码(我在B1 中的代码)将显示单元格A1 中有多少数字(或单词,用空格分隔的任何内容):

=IF(LEN(TRIM(A1))=0,0,LEN(TRIM(A1))-LEN(SUBSTITUTE(A1," ",""))+1)

B1 的输出是 20。

我希望能够在单元格A2 中输入一个介于 1 和 20 之间的数字,并让 B2 的输出成为与 A1 中该位置的值对应的数字。例如,A2 中的输入 19 将在 B2 中输出 32。

我有几个这样的数字序列,据我所知,它们中的大多数不能用一个更容易的公式来表示。我也可以将每个数字放在一个单独的单元格中,并使用大量 IF() 函数,但是对于这么多序列来说会很乏味。

我已尝试将 SEARCH() 与 A1 数据和 B1 公式更改为:

1:0 2:0 3:1 4:1 5:2 6:3 7:4 8:7 9:8 10:9 11:10 12:12 13:14 14:16 15:18 16:21 17:24 18:28 19:32 20:37  

=搜索(A2&":",A1)

现在在单元格A2 中输入 19 时,我得到的输出为 90(正在搜索的序列的第一个字符是单元格中的第 90 个字符)。我认为这些信息可能有助于我输出 : 之后的数字,在这种情况下为 32。

这可能吗?

【问题讨论】:

    标签: excel excel-formula


    【解决方案1】:

    根据您的编辑,您可以使用您在MID() 中获得的90

    =MID(MID(A1,SEARCH(A2&":",A1),SEARCH(A2+1&":",A1)-SEARCH(A2&":",A1)),FIND(":",MID(A1,SEARCH(A2&":",A1),SEARCH(A2+1&":",A1)-SEARCH(A2&":",A1)))+1,999)
    

    公式有点长,但如果使用其他单元格会更短。例如,如果你输入:

    MID(A1,SEARCH(A2&":",A1),SEARCH(A2+1&":",A1)-SEARCH(A2&":",A1))
    

    在C2中,那么第一个公式就变成了

    =MID(C2,FIND(":",C2)+1,len(C2))
    

    【讨论】:

    • 公式可能很长,但很容易重复十几个或更多的数字序列。比我将数字分成多个单元格然后使用 20 个 IF() 函数作为输出的后备计划要高效得多。非常感谢! :)
    • @Kailoss 很高兴它有帮助:)
    【解决方案2】:

    有几个选择。

    将 A1 复制到 C1(因为 B1 可能会妨碍)然后将文本应用到 C1 上的列,并以空格作为分隔符。在 B1:

    =INDEX(C1:V1,A2)  
    

    或者,

    在 B1(或 B2,如果您愿意)输入 =CHOOSE(A2,X)
    并在 A3 中输入=SUBSTITUTE(A1," ",",")

    然后将 X 替换为在 A3 上复制和粘贴特殊值的结果。

    【讨论】:

      猜你喜欢
      • 2021-02-14
      • 1970-01-01
      • 2020-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多