将单元格/字符串中特定单词后的数字提取到不同的单元格中

将单元格/字符串中特定单词后的数字提取到不同的单元格中

我想从下面的字符串中提取价格/费率。

“38A 标准 - HotelCollect 2019-01-01 每日价格 99.00 加元 2019-01-02 每日价格 99.00 加元”

我想提取紧接着“计算机辅助设计“到不同的单元格或者如果可能的话也添加它们。

我真的被这个问题难住了,有人能帮忙吗?

答案1

1:确定你需要获得多少利率

计数实例

=(LEN(A1)-LEN(SUBSTITUTE(A1,"CAD","")))/3

将此公式复制到B1。它会将您的字符串长度与删除所有“CAD”实例后的字符串长度进行比较,然后将结果除以 3 以找出“CAD”出现的次数。

2:为下一个函数设定种子

这是 1

1

将 a 写入1C1这并非绝对必要,但我们这样做是为了让我们写入的公式D1可以不经修改地复制过来。

3:FIND每个实例

寻找

=IF($B1>COLUMN()-4,FIND("CAD",$A1,C1+1),"")

此公式会复制数据中所需字符串的尽可能多的实例。请注意将此单元格的位置与步骤 1 中的计数器位置进行比较的硬编码列值偏移量。如果您以不同的方式排列数据,则必须调整此公式(一次)。

将此公式写入D1;对于此示例,我从中复制了过来D1:G1

4:做MID

得到

=IFERROR(IF(D1>0,TRIM(MID($A1,D1+4,6)),""),"")

此公式可复制到尽可能多的实例...等等。它确实要求您手动复制尽可能多的次数,就像您在步骤 3 中所做的那样。

将此公式写入H1;对于此示例,我从中复制了过来H1:K1

笔记

  1. 设置这么多辅助列和这么多手动工作量,这确实有点草率,但您的问题并未提及您的用例或工作流程,因此我并没有花大量时间考虑如何简化。如果您的所有数据都在列中A,则完全按照此处介绍的方式复制此设置将为您提供列中所需的数据H:K,并向下复制尽可能多的数据A
  2. 如果您的实际用例正在寻找SUM或其他什么,那么那部分当然是微不足道的,并且在此示例中将进入列L;如果您愿意,可以隐藏所有内容B:K,或者当然可以将它们全部组合在一个“上帝公式”中,尽管这样做所需的努力可能不会根据您的工作流程限制而表明。
  3. 在第 4 步中有一些弄虚作假;我编写它是为了获取“CAD”后面空格后面的 6 个字符(然后修剪所有空格);这假设您想要的输出大小永远不会超过 6 个字符。同样,您没有在规范中包含太多示例数据或任何描述,所以我在这里猜测一下可能的数据参数会是什么样子;当您想要的字符串完全遵循 dd.cc 或 ddd.cc 格式时,这种方法有效 - 省略数字会导致问题,超过 999.99 加元的费率也会导致问题(记录显示,当人们问问题要具体并包括示例数据输入和输出时,他们指的是这样的困难)。

答案2

尝试以下用户定义函数:

Public Function PriceFinder(s As String) As Double
    Dim i As Long
    arr = Split(s, " ")
    For i = LBound(arr) To UBound(arr)
        If arr(i) = "CAD" Then
            PriceFinder = CDbl(arr(i + 1))
            Exit Function
        End If
    Next i
End Function

在此处输入图片描述

编辑#1:

要得到超过一个价格,请使用此版本的 UDF:

Public Function PriceFinder(s As String) As String
    Dim i As Long
    arr = Split(s, " ")

    For i = LBound(arr) To UBound(arr)
        If arr(i) = "CAD" Then
            If PriceFinder = "" Then
                PriceFinder = arr(i + 1)
            Else
                PriceFinder = PriceFinder & "," & arr(i + 1)
            End If
        End If
    Next i

    If Right(PriceFinder, 1) = """" Then PriceFinder = Left(PriceFinder, Len(PriceFinder) - 1)

End Function

在此处输入图片描述

相关内容