我有一个带有一堆数字的单元格,需要在单元格中将两个数字与逗号(,)分开
例如A2 = 6364656261636062
答案:B2 = 63,64,65,62,61,63,60,62
然后需要从与
相同的值中找到最大值和最小值 Highest = 65 in C2
和Lowest = 60 in D2
请帮助通过公式或VBA进行获取。
答案 0 :(得分:1)
对于第一个问题,公式如下:
=+CONCATENATE(MID(A2,1,2),IF(LEN(A2)>3,",",""),MID(A2,3,2),IF(LEN(A2)>5,",",""),MID(A2,5,2),IF(LEN(A2)>7,",",""),MID(A2,7,2),IF(LEN(A2)>9,",",""),MID(A2,9,2),IF(LEN(A2)>11,",",""),MID(A2,11,2),IF(LEN(A2)>13,",",""),MID(A2,13,2),IF(LEN(A2)>15,",",""),MID(A2,15,2),IF(LEN(A2)>17,",",""),MID(A2,17,2),IF(LEN(A2)>19,",",""),MID(A2,19,2),IF(LEN(A2)>21,",",""),MID(A2,21,2))
对于第二部分,您需要一个帮助程序列,以将每个值放在不同的单元格上,然后使用MAX()和MIN()或使用VBA。
答案 1 :(得分:1)
对于串联文本,可以在数组组合中使用TEXTJOIN
和MID
:
B2
中的公式:
=TEXTJOIN(",",TRUE,MID(A2,ROW(A1:INDEX(A:A,LEN(A2)/2))+ROW(A1:INDEX(A:A,LEN(A2)/2))-1,2))
C2
中的公式:
=MAX(--MID(A2,ROW(A1:INDEX(A:A;,LEN(A2)/2))+ROW(A1:INDEX(A:A,LEN(A2)/2))-1,2))
D2
中的公式:
=MIN(--MID(A2,ROW(A1:INDEX(A:A;,LEN(A2)/2))+ROW(A1:INDEX(A:A,LEN(A2)/2))-1,2))
所有公式都需要通过 Ctrl + Shift + Enter
输入注意:
如果您没有TEXTJOIN
,则可以使用:
=LEFT(CONCAT(MID(A2,ROW(A1:INDEX(A:A,LEN(A2)/2))+ROW(A1:INDEX(A:A,LEN(A2)/2))-1,2)&","),LEN(A2)+((LEN(A2)/2))-1)
再次,输入数组公式!另外,屏幕截图显示了错误的结果,这是固定的。
答案 2 :(得分:1)
您可以将正则表达式与Pattern(\ d {2})一起使用。假设您的数据在从A2开始的(A)列中 使用此宏
Option Explicit
Sub cut_my_number_Please()
Dim reg As Object
Dim MY_match, Matches, My_String$
Dim My_Max As Double: My_Max = -1
Dim My_Min As Double: My_Min = 100
Dim i%, lr%: lr = Cells(Rows.Count, 1).End(3).Row
Range("c2").Resize(lr, 3).ClearContents
Set reg = CreateObject("VBscript.RegExp")
With reg
.Pattern = "(\d{2})"
.Global = True
End With
For i = 2 To lr
If reg.test(Range("A" & i)) Then
Set Matches = reg.Execute(Range("A" & i))
For Each MY_match In Matches
My_String = My_String & MY_match & ";"
If MY_match * 1 >= My_Max Then _
My_Max = MY_match * 1
If MY_match * 1 < My_Min Then _
My_Min = MY_match * 1
Next MY_match
Range("C" & i) = Mid(My_String, 1, Len(My_String) - 1)
Range("D" & i) = My_Max
Range("E" & i) = My_Min
End If
My_Min = 100: My_Max = -1: My_String = ""
Next i
Range("D1") = "Max Of My Serial"
Range("E1") = "Min Of My Serial"
End Sub
答案 3 :(得分:0)
在C2单元格此数组公式中(CTRL + SHIFT + ENTER)
=MAX(--(IF(MID($A2,2*(ROW(INDIRECT("1:"&LEN($A2))))-1,2)="",0,MID($A2,2*(ROW(INDIRECT("1:"&LEN($A2))))-1,2))))
在单元格C3中,此数组公式(CTRL + SHIFT + ENTER)
=MIN(--(IF(MID($A2,2*(ROW(INDIRECT("1:"&LEN($A2))))-1,2)="",1000,MID($A2,2*(ROW(INDIRECT("1:"&LEN($A2))))-1,2))))
答案 4 :(得分:0)
得到杰里的解答。
=MAX(IF(LEN(A2)>1,+MID(A2,1,2),0),IF(LEN(A2)>3,+MID(A2,3,2),0),IF(LEN(A2)>5,+MID(A2,5,2),0),,IF(LEN(A2)>7,+MID(A2,7,2),0),IF(LEN(A2)>9,+MID(A2,9,2),0),IF(LEN(A2)>11,+MID(A2,11,2),0),IF(LEN(A2)>13,+MID(A2,13,2),0),IF(LEN(A2)>15,+MID(A2,15,2),0),IF(LEN(A2)>17,+MID(A2,17,2),0),IF(LEN(A2)>19,+MID(A2,19,2),0),IF(LEN(A2)>21,+MID(A2,21,2),0))
感谢@Jerry Jeremiah。