我需要操作数千行原始数据。
它看起来像:
001_sample.com, 002_XML3.com, 003_Example532.com
004_Example.com
005_Example392.com, 006_sample399.com
依旧......
我只需要前3个数字,所以我想留下来。
001, 002, 003
004
005, 006
非常感谢任何帮助。我尝试过中左右功能,但我无法做到。
这就是我原来做的......
对于每个c In范围(“E1:E5000”)
If InStr(c.value, "_") > 0 Then
c.value = Left(c.value, InStr(c.value, "_") - 1)
End If
If InStr(c.value, " ") > 0 Then
c.value = Left(c.value, InStr(c.value, " ") - 1)
End If
下一个c
谢谢大家的帮助。
答案 0 :(得分:0)
您没有指定数据的存储方式。如果Cell A1具有该值,则可以使用:
Dim value As String, numeric As String
value = Range("A1").Value
numeric = LEFT(value, 3)
答案 1 :(得分:0)
这是一个快速而又脏的UDF,可以做你想做的事情:
Function mySplit(rng) As String
Dim splt() As String
Dim i As Integer
If rng.Count > 1 Then Exit Function
splt = Split(rng, ",")
For i = LBound(splt) To UBound(splt)
splt(i) = Left(Application.WorksheetFunction.Trim(splt(i)), 3)
Next
mySplit = Join(splt, ", ")
End Function
将它放在工作簿附带的模块中,然后将其称为公式:
=mySplit(A1)
如果您有Office 365 Excel,则可以使用此数组公式:
=TEXTJOIN(", ",TRUE,LEFT(TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",999)),999*(ROW(INDIRECT("1:" & LEN(A1)-LEN(SUBSTITUTE(A1,",",""))+1))-1)+1,999)),3))
作为数组公式,需要在退出编辑模式时使用Ctrl-Shift-Enter而不是Enter确认。如果操作正确,那么Excel会将{}
放在公式周围。
答案 2 :(得分:0)
如果您的数据位于A列,那么它将起作用。
Sub test()
Dim vDB, vR() As String, vSplit
Dim rngDB As Range
Dim n As Long, i As Long, j As Integer
Set rngDB = Range("a1", Range("a" & Rows.Count).End(xlUp)) 'fix your column a~~> your column
vDB = rngDB
n = UBound(vDB, 1)
ReDim vR(1 To n, 1 To 1)
For i = 1 To n
vSplit = Split(vDB(i, 1), ",")
For j = 0 To UBound(vSplit)
vSplit(j) = Split(vSplit(j), "_")(0)
Next j
vR(i, 1) = Join(vSplit, ",")
Next i
rngDB = vR
End Sub