[英]EXCEL vba - extract numbers from cell and paste into two different columns?
我有一个电子表格,其中包含A列中的随机文本和数字,如下所示:
Column A
Row 1 = 471806121601 5205569 - 0007 Standard White Toilet Tissue 27
Row 2 = 471814121601 5206177 - 0014 Premium White Toilet Tissue 6
Row 3 = 471814121601 5206178 - 0007 Premium White Toilet Tissue 27
Row 4 = 471806121601 5206180 - 0014 Premium Kitchen Towel 2x75l 6
我总共有大约2000行。 在每个单元格中,都有一个采购订单编号(12位数字)和旁边的项目编号(7位数字)。
我正在尝试提取po编号并将其放入B列,然后提取项目编号并将其放入C列
Column B Column C
471806121601 5205569
471814121601 5206177
471814121601 5206178
471806121601 5206180
这是我的代码:
Option Explicit
Sub main()
Dim cell As Range
Dim arr As Variant, arrElem As Variant
With Worksheets("Orders") '<--| change "Strings" to your actual worksheet name
For Each cell In .Range("A1", .Cells(.Rows.Count, "A").End(xlUp))
arr = Split(Replace(cell.Value, " ", " "), " ") '<--| change "A"'s to your actual relevant column index
For Each arrElem In arr
If IsNumeric(arrElem) Then
If Len(arrElem) = 12 Then cell.Offset(0, 1).Value = arrElem
End If
Next arrElem
Next cell
End With
Dim cell2 As Range
Dim arr2 As Variant, arrElem2 As Variant
With Worksheets("Orders") '<--| change "Strings" to your actual worksheet name
For Each cell2 In .Range("A1", .Cells(.Rows.Count, "A").End(xlUp))
arr2 = Split(Replace(cell2.Value, " ", " "), " ") '<--| change "A"'s to your actual relevant column index
For Each arrElem2 In arr2
If IsNumeric(arrElem2) Then
If Len(arrElem2) = 7 Then cell2.Offset(0, 3).Value = arrElem2
End If
Next arrElem2
Next cell2
End With
End Sub
此代码可以正常工作。 但是,这需要绝对的时间,并且一次只能做一行。
有更快的方法吗? 谢谢
如果您的PO和IN在col B中总是相同的长度
=MID(A2, 1, 12)
在C栏
=MID(A2, 14, 7)
但是,如果您的电话号码更改了,但始终是上述的前两个,
=MID(A2,1,FIND(" ",A2,1)-1)
和
=MID(A2, FIND(" ", A2, 1)+1, 7)
分别。
只需使用split(string,delimiter)(0)
和(1)
为什么要替换空格,只需将其用作delim。 如果行号在其中,则使用(1)和(2),或者您可以考虑split(split(input,"-")," ")
可能快一点,但不确定。 另外,一旦完成,就不需要完成循环,因此请考虑使用标志,而不是下一个标志,尽管可以exit for
在公式方面,可以使用类似这样的方法来完成
=MID(D1,FIND("é",SUBSTITUTE(D1," ","é",3)),FIND("é",SUBSTITUTE(D1," ","é",4))-FIND("é",SUBSTITUTE(D1," ","é",3)))
和
=MID(D1,FIND("é",SUBSTITUTE(D1," ","é",4)),FIND("é",SUBSTITUTE(D1," ","é",5))-FIND("é",SUBSTITUTE(D1," ","é",4)))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.