VBA Excel-从C列提取数据并放入D列
我在C列中有大量文本,只需要提取一部分。我可以用Excel来做,但我想用VBA。下面是我在Excel中的操作方法VBA Excel-从C列提取数据并放入D列,excel,vba,Excel,Vba,我在C列中有大量文本,只需要提取一部分。我可以用Excel来做,但我想用VBA。下面是我在Excel中的操作方法 =MID(C2,FIND("IAV",C2)+6,11) 以下是3个单元格中的信息片段(按行分隔): CVE:CVE-2013-3378 投标编号:60681 交叉参考:OSVDB#94438,IAVA#2013-A-0126 漏洞发布日期:2013/06/19 补丁发布日期:2013/06/19 插件发布日期:2013/07/24 CPE:CPE:/o:microsoft:wi
=MID(C2,FIND("IAV",C2)+6,11)
以下是3个单元格中的信息片段(按行分隔):
CVE:CVE-2013-3378
投标编号:60681
交叉参考:OSVDB#94438,IAVA#2013-A-0126
漏洞发布日期:2013/06/19
补丁发布日期:2013/06/19
插件发布日期:2013/07/24
CPE:CPE:/o:microsoft:windows cpe:/a:microsoft:silverlight CVE:CVE-2013-3896 出价:62793 交叉参考:OSVDB#98223,MSFT#MS13-087,IAVB#2013-B-0117 漏洞发布日期:2013/10/08 补丁发布日期:2013/10/08
出价:25628 交叉参考:OSVDB#34600,OSVDB#43371,IAVT#2008-T-0046,CWE#20 漏洞发布日期:2007/09/05 补丁发布日期:2007/09/05 插件发布日期:2011/10/04
我的目标是提取IAVA、IAVB和IAVT之后的任何内容。所以我只剩下 2013-A-0126 2013-B-0117 2008-T-0046
=MID(C2,FIND("IAV",C2)+6,11)
MID在VB中保持不变,FIND变为InStr,因此此公式转换为:
StringVariable = Mid([C2],InStr([C2],"IAV") + 6, 11)
要在D栏中填写答案,请针对C栏中的每个单元格
Option Explicit
Sub WriteData()
Dim RowNum as Long
Dim LastRow as Long
Dim DataString as String
LastRow = Range("C1").End(xldown).Row
For RowNum=2 to LastRow
DataString= Cells(RowNum,3) ' 3 = C
Cells(RowNum,4)=Mid(DataString,InStr(DataString,"IAV") + 6, 11)
Next RowNum
End Sub
我作弊并假设我可以搜索“IAV”并添加6个字符来查找字符串的开头。此外,列编号设置为变量
Sub Test()
Dim ColNumber As Integer
ColNumber = 3 'Set the column you wish to run on
Worksheets("Sheet1").Activate
LastCell = Cells(Worksheets("Sheet1").Rows.Count, ColNumber).End(xlUp).Row
For TheRow = 1 To LastCell
Worksheets("Sheet1").Cells(TheRow, ColNumber + 1).Value = Mid(Worksheets("Sheet1").Cells(TheRow, ColNumber).Value, InStr(Worksheets("Sheet1").Cells(TheRow, ColNumber).Value, "IAV") + 6, 11)
Next
End Sub
这太完美了。但是我如何写它来完成C列中的每个单元格呢?我测试了这个,它非常适合C2单元。请注意,我真的很讨厌编程。只是想得到一些有用的东西。