从字符串中提取数字和单词组合的Excel公式
我正试图从包含字符串的单元格中增加“##秒”或“##分钟” 串 期望输出 快走30秒 30秒 慢跑9分钟 9分钟 快跑1分钟 1分钟 那么: 因此,您可以轻松粘贴它:从字符串中提取数字和单词组合的Excel公式,excel,string,excel-formula,Excel,String,Excel Formula,我正试图从包含字符串的单元格中增加“##秒”或“##分钟” 串 期望输出 快走30秒 30秒 慢跑9分钟 9分钟 快跑1分钟 1分钟 那么: 因此,您可以轻松粘贴它: IFERROR(TRIM(MID(A3,FIND("min",A3,1)-3,10)),TRIM(MID(A3,FIND("sec",A3,1)-3,10))) iferror先尝试分钟,然后尝试秒。 Trim根据数字是一位数还是两位数,去掉前导空格或尾随空格。 Mid()和find()
IFERROR(TRIM(MID(A3,FIND("min",A3,1)-3,10)),TRIM(MID(A3,FIND("sec",A3,1)-3,10)))
iferror先尝试分钟,然后尝试秒。
Trim根据数字是一位数还是两位数,去掉前导空格或尾随空格。
Mid()和find()切掉想要的部分。我只使用“分钟”和“秒”来代替“分钟”等,就好像有一个拼写错误“minites”,例如,它不会被找到
把它拆开,看看每一位……怎么样:
因此,您可以轻松粘贴它:
IFERROR(TRIM(MID(A3,FIND("min",A3,1)-3,10)),TRIM(MID(A3,FIND("sec",A3,1)-3,10)))
iferror先尝试分钟,然后尝试秒。
Trim根据数字是一位数还是两位数,去掉前导空格或尾随空格。
Mid()和find()切掉想要的部分。我只使用“分钟”和“秒”来代替“分钟”等,就好像有一个拼写错误“minites”,例如,它不会被找到
将其拆开以查看每个位…考虑以下用户定义的函数:
Option Explicit
Public Function durration(s As String) As String
Dim t As String, arr, i As Long
t = LCase(s)
durration = ""
If InStr(t, "minute") = 0 Then
If InStr(t, "second") = 0 Then
Exit Function
End If
End If
arr = Split(s, " ")
For i = LBound(arr) + 1 To UBound(arr)
t = LCase(arr(i))
If t = "minute" Or t = "minutes" Or t = "second" Or t = "seconds" Then
durration = arr(i - 1) & " " & arr(i)
Exit Function
End If
Next i
End Function
用户定义函数(UDF)非常易于安装和使用:
=durration(a1)
要了解有关宏的更多信息,请参阅:
及
有关自定义项的详细信息,请参见:
必须启用宏才能工作考虑以下用户定义的函数:
Option Explicit
Public Function durration(s As String) As String
Dim t As String, arr, i As Long
t = LCase(s)
durration = ""
If InStr(t, "minute") = 0 Then
If InStr(t, "second") = 0 Then
Exit Function
End If
End If
arr = Split(s, " ")
For i = LBound(arr) + 1 To UBound(arr)
t = LCase(arr(i))
If t = "minute" Or t = "minutes" Or t = "second" Or t = "seconds" Then
durration = arr(i - 1) & " " & arr(i)
Exit Function
End If
Next i
End Function
用户定义函数(UDF)非常易于安装和使用:
=durration(a1)
要了解有关宏的更多信息,请参阅:
及
有关自定义项的详细信息,请参见:
必须启用宏才能工作-获取字符串中第一个数字的位置:
AGGREGATE(15,6,FIND(ROW($1:$9),A1 & " "),1)
AGGREGATE(15,6,FIND(" ",A1&" ",SEARCH({"second","minute"}, A1&" ")),1)
-获取字符串中分[s]或秒[s]
后的空格索引:
AGGREGATE(15,6,FIND(ROW($1:$9),A1 & " "),1)
AGGREGATE(15,6,FIND(" ",A1&" ",SEARCH({"second","minute"}, A1&" ")),1)
使用MID函数,此公式适用于我:
=MID(A1 & " ",AGGREGATE(15,6,FIND(ROW($1:$9),A1 & " "),1),
AGGREGATE(15,6,FIND(" ",A1&" ",SEARCH({"second","minute"}, A1&" ")),1)-
AGGREGATE(15,6,FIND(ROW($1:$9),A1 & " "),1)
)
-使用
A1&“
的原因是为了避免在分[s]或秒[s]后不存在空格
-获取字符串中第一个数字的位置:
AGGREGATE(15,6,FIND(ROW($1:$9),A1 & " "),1)
AGGREGATE(15,6,FIND(" ",A1&" ",SEARCH({"second","minute"}, A1&" ")),1)
-获取字符串中分[s]或秒[s]
后的空格索引:
AGGREGATE(15,6,FIND(ROW($1:$9),A1 & " "),1)
AGGREGATE(15,6,FIND(" ",A1&" ",SEARCH({"second","minute"}, A1&" ")),1)
使用MID函数,此公式适用于我:
=MID(A1 & " ",AGGREGATE(15,6,FIND(ROW($1:$9),A1 & " "),1),
AGGREGATE(15,6,FIND(" ",A1&" ",SEARCH({"second","minute"}, A1&" ")),1)-
AGGREGATE(15,6,FIND(ROW($1:$9),A1 & " "),1)
)
-使用
A1&“
的原因是为了避免在分钟或秒之后出现不存在的空格。
嗯,在功能上与我的类似,但似乎需要更多的键入…嗨@SolarMike,你是对的,看起来我把它复杂化了=)尽管聚合非常灵活,但必须更多地使用它。嗯,在功能上与我的类似,但似乎更多的是打字……您好@SolarMike,您是对的,看起来我把它复杂化了=)虽然聚合是如此灵活,但必须更多地使用它。@Gary的学生好吧,我想说这是一个“暴力”方法,但无论如何谢谢:)就像您的UDF一样,我假设“持续时间”是保留的,所以您使用了它“durration”?我真的很喜欢你的公式。你是对的duration()
是一个标准的Excel函数。Solar Mike:你搞定了。我修改了公式,以便查找术语(秒、分钟、小时等)这是一个修改过的公式,列表是一系列要查找的单词:=IFERROR(TRIM(MID(A1,FIND)(INDEX(list,MATCH(1,COUNTIF(A1,“&list&”),0)),A127,1)-3,10)),“@Gary的学生好吧,我想说这是一个“暴力”方法,但无论如何还是要感谢:)就像你的UDF一样,我假设”“duration”是保留的,所以你使用了“duration”?我真的很喜欢你的公式。你是正确的duration()
是一个标准的Excel函数。Solar Mike:你搞定了。我修改了公式,以便我可以查找术语(秒、分钟、小时等)这是一个修改过的公式,列表是要查找的单词范围:=IFERROR(TRIM(MID(A1,FIND)(INDEX(list,MATCH(1,COUNTIF(A1,“&list&”),0)),A127,1)-3,10)),“”)