Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA Excel-从C列提取数据并放入D列_Excel_Vba - Fatal编程技术网

VBA Excel-从C列提取数据并放入D列

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

我在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: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单元。请注意,我真的很讨厌编程。只是想得到一些有用的东西。