使用vb脚本从字母数字中提取数字

时间:2017-08-28 12:14:00

标签: excel vbscript scripting

我有一个包含字母数字值的列,我想提取数字并使用vb脚本将它们复制到相邻列中。 这是我迄今为止尝试过的代码,但它在for循环中给出了错误。

设置objExcel = CreateObject(“Excel.Application”)

objExcel.Visible = True

srcFilePath =“C:\ Users \ reddy.ku \ Desktop \ files \ Issue.xls”

desFilePath =“C:\ Users \ reddy.ku \ Desktop \ files \ Book1.xlsx”

设置objWorkbook1 = objExcel.Workbooks.Open(srcFilePath)

设置objWorkbook2 = objExcel.Workbooks.Open(desFilePath)

设置objWorksheet = objWorkbook1.Worksheets(1)

objWorksheet.Activate

设置objRange = objWorkSheet.Range(“B1”)。EntireColumn

objRange.Copy

设置objWorksheet2 = objWorkbook2.Worksheets(1)

objWorksheet2.Activate

设置objRange = objWorksheet2.Range(“C1”)

objWorksheet2.Paste(objRange)

对于i = 1到objWorksheet2.UsedRange.Columns.Count

For j=1 to objWorksheet2.UsedRange.Rows.Count

    if (objWorksheet2.Cells(j,i).Value = Isnumeric) then  

objWorksheet2.Range( “B1”)。粘贴

接下来我

objWorkbook1.Save

objWorkbook1.Close

objWorkbook2.Save

objWorkbook2.Close

请在代码中建议任何替代或任何更改

提前感谢您的帮助

以下字符串中的字符串相似。

HDI_144383

HDI_135254

HDI_146750

HDI_147009

DTSample_HDI_146982_TC_Crash

1 个答案:

答案 0 :(得分:0)

在电子表格中,使用以下代码创建一个模块:

Function MidCode(s As String) As String
i = 1
While Not ((Mid(s, i, 1) >= "0") And (Mid(s, i, 1) <= "9")) And (i <= Len(s))
    i = i + 1
Wend
StartPos = i
While Not ((Mid(s, i, 1) < "0") Or (Mid(s, i, 1) > "9")) And (i <= Len(s))
    i = i + 1
Wend
EndPos = i
MidCode = Mid(s, StartPos, EndPos - StartPos)
End Function

然后,在要提取数字的列中输入:

=MidCode(A1)

将其复制下来。如果原始数据在不同的地方开始,则需要更改A1部分以匹配。