我对 VBA 编码还很陌生,我希望得到一些帮助,因为我已经尝试了两天,我已经在 A 列中修复了数据,我想在该列中搜索一个字符串,例如声明日期,如果找到,则提取日期并在下一个 Sheet2 中创建一个新列,将声明日期作为标题,将 01/01/2008 作为详细信息,如果找到,则附加下一个匹配项。这是我的新手代码。
Sub testing44()
Dim intPasteRow As Integer
intPasteRow = 1
Dim intRow As Integer
Dim Found As Range, FirstFound As String
Sheets("Sheet1").Select
Columns("B:B").Select
On Error Resume Next
Selection.Find(What:="STATEMENT DATE *", After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate
If Err.Number = 91 Then
MsgBox "ERROR: 'STATEMENT DATE:' could not be found."
End
End If
On Error Resume Next
Selection.Find(What:="INITIAL MARGIN", After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate
If Err.Number = 91 Then
MsgBox "ERROR: 'INITIAL MARGIN' could not be found."
End
End If
intRow = ActiveCell.Row
Rows(intRow & ":" & intRow).Select
Selection.Copy
Sheets("Sheet2").Select
Range("A" & intPasteRow).Select
ActiveSheet.Paste
Sheets("Sheet2").Select
Rows(intRow + 1 & ":" & intRow).Select
End Sub
答案1
目前尚不清楚您要做什么,但根据您目前告诉我们的情况,我有一些具体建议:
在根据现有数据创建新工作表时,我通常会循环“遍历”初始数据,寻找我感兴趣的特征,然后将整行(或我感兴趣的特定单元格)一次一行地复制到新工作表中。我不清楚的是,您的程序将创建多少个新工作表?如果超过两个,我建议您重新考虑这个练习。
——这使你的软件更容易实现。
--考虑创建单个输出表。添加“结算日期”列,然后利用“过滤器 - 自动过滤器”选项让最终用户自行选择。
如果数据以行开始,执行宏,创建行作为输出,这是最简单的方法。我要说的是,如果原始单个数据输入字段是字符串格式或数字格式,那么复制过程就会变得有点棘手。
如果您坚持为每个“结算日期”制作一张新表,并且需要列数据,那么作为宏的最后一步,将行转置为列