在单元格内的variables位置查找#和空格之间的整个数字

如何在一个“#”和一个空格之间find一个整数?

示例单元格内容:

“这是一个我喜欢跑步的#123testing”
“这是我喜欢跑的#45testing”

我需要从第一个返回“123”,从第二个返回“45”。

使用Mid(),我可以返回“1”,但问题是#和空间之间的数字可能会有所不同,但通常会有一个#,数字或数字,然后是一个空格。

作为第二个问题 ,可能会出现没有“#”的情况,但是我需要在单元格中find第一个数字值并返回它们(即“1”,“34”,“648”)。

任何这些挑战的任何意见,不胜感激。

这也应该工作:

=MID(A11,(FIND("#",A11,1)+1),FIND(" ",A11,FIND("#",A11,1)+1)-FIND("#",A11,1)) 

通过寻找散列和下面的空间工作…不是第二个问题…

既然你已经把excel-vba标签放在你的问题上了,下面是使用正则expression式的vba方法,它应该同时满足你的主要和次要问题:

 Sub tmp() Dim regEx As New RegExp regEx.Pattern = "^.*?\#?(\d+)" Dim i As Integer For i = 1 To Range("A" & Rows.Count).End(xlUp).Row: Set mat = regEx.Execute(Cells(i, 1).Value) If mat.Count = 1 Then Cells(i, 2).Value = mat(0).SubMatches(0) End If Next End Sub 

正则expression式使用一个非贪婪的字符search(即在“'。*?”末尾的“?”是什么)来find匹配“#123”或“123”的单元格中的第一个模式“123”是任意数字的任意序列。

这将返回string中的第一个数字:

 =--LEFT(MID(A1,AGGREGATE(15,6,FIND({1,2,3,4,5,6,7,8,9,0},A1),1),LEN(A1)),FIND(" ",MID(A1,AGGREGATE(15,6,FIND({1,2,3,4,5,6,7,8,9,0},A1),1),LEN(A1)))) 

在这里输入图像说明

AGGREGATE是2010年推出的Excel。 如果你不这样做,那么你将需要使用这个数组公式:

 =--LEFT(MID(A1,MIN(IFERROR(FIND({1,2,3,4,5,6,7,8,9,0},A1),1E+99)),LEN(A1)),FIND(" ",MID(A1,MIN(IFERROR(FIND({1,2,3,4,5,6,7,8,9,0},A1),1E+99)),LEN(A1)))) 

作为一个数组公式,在退出编辑模式时,需要使用Ctrl-Shift-Enter而不是Enter来确认。 如果做得正确的话,excel会把{}放在公式的周围。

在这里输入图像说明