Excel 如何从各种工作表中捕获附加行

Excel 如何从各种工作表中捕获附加行,excel,vba,Excel,Vba,我得到了一个旧的excel文件和宏,它将该工作簿中所有工作表的分数和观察值复制到第一个工作表中。工作表用附加注释字段进行了修改,我尝试更新宏,使其也显示在第一张工作表上,但没有效果。代码如下: sno = 1 lastcol = Sheets(1).Range("iv8").End(xlToLeft).Column resrow = 9 headers = Array("Registration information", "CASE DETAILS (GENERAL) SCREEN", "

我得到了一个旧的excel文件和宏,它将该工作簿中所有工作表的分数和观察值复制到第一个工作表中。工作表用附加注释字段进行了修改,我尝试更新宏,使其也显示在第一张工作表上,但没有效果。代码如下:

sno = 1
lastcol = Sheets(1).Range("iv8").End(xlToLeft).Column


resrow = 9
headers = Array("Registration information", "CASE DETAILS (GENERAL) SCREEN", "Sender INFORMATION", "Client SCREEN", "PRODUCT", "Price")
For i = 2 To Sheets.Count
observ = ""
observno = 1
resrow = resrow + 1
rescol = 10
    lastrow = Sheets(i).Range("c65535").End(xlUp).Row
    Sheets(1).Cells(resrow, 1) = sno
    Sheets(1).Cells(resrow, 2) = Sheets(i).Range("d2")
    Sheets(1).Cells(resrow, 4) = Sheets(i).Range("d9")
    Sheets(1).Cells(resrow, 3) = Sheets(i).Range("d3")
    Sheets(1).Cells(resrow, 5) = Sheets(i).Range("d4")
    Sheets(1).Cells(resrow, 6) = Sheets(i).Range("d5")
    Sheets(1).Cells(resrow, 7) = Sheets(i).Range("E9")


            While rescol <= lastcol - 4
            For j = 9 To lastrow
            If Sheets(i).Cells(j, 3) <> "" Then
             Sheets(1).Cells(resrow, rescol) = Sheets(i).Cells(j, 3)
             If Sheets(i).Cells(j, 3) > 0 And j <> lastrow Then
                observ = observ & observno & ". " & Sheets(i).Cells(j, 4) & vbCrLf

                observno = observno + 1

             End If
             rescol = rescol + 1
             End If
             Next j
            Wend

    Sheets(1).Cells(resrow, 8) = observ
    sno = sno + 1
Next i
End Sub
sno=1
lastcol=表(1).范围(“iv8”).结束(xlToLeft).列
resrow=9
标题=数组(“注册信息”、“案例详细信息(常规)屏幕”、“发件人信息”、“客户屏幕”、“产品”、“价格”)
对于i=2到1张。计数
observ=“”
观测值=1
resrow=resrow+1
rescol=10
lastrow=板材(i).范围(“c65535”).结束(xlUp).行
表(1).单元格(重新排列,1)=sno
第(1)页。单元格(第2行)=第(i)页。范围(“d2”)
第(1)页。单元格(第4行)=第(i)页。范围(“d9”)
第(1)页。单元格(第3行)=第(i)页。范围(“d3”)
第(1)页。单元格(第5行)=第(i)页。范围(“d4”)
第(1)页。单元格(第6行)=第(i)页。范围(“d5”)
第(1)页。单元格(第7行)=第(i)页。范围(“E9”)
当重新调用0和j lastrow时
observ=observ&observno&“&”和表(i).单元格(j,4)和vbCrLf
观测值=观测值+1
如果结束
rescol=rescol+1
如果结束
下一个j
温德
表(1).单元格(重新排列,8)=观察值
sno=sno+1
接下来我
端接头
工作表中的新字段称为“评论”,我试图复制和修改此部分


 While rescol <= lastcol - 4
            For j = 9 To lastrow
            If Sheets(i).Cells(j, 3) <> "" Then
             Sheets(1).Cells(resrow, rescol) = Sheets(i).Cells(j, 3)
             If Sheets(i).Cells(j, 3) > 0 And j <> lastrow Then
                commen = commen & commenno & ". " & Sheets(i).Cells(j, 4) & vbCrLf

                commenno = commenno + 1


当重新调用0和j lastrow时
Commi=Commi和Commino&“&”和表(i).单元格(j,4)和vbCrLf
康科米诺=康科米诺+1
但是没有用

以下是主工作表中的列(工作表中的第9行)


以下是其他工作表的示例,类似于您用于观察的注释代码


选项显式
子合并()
变暗sno为长、lastrow为长、lastcol为长、resrow为长、rescol为长
Dim OBSERVERNO为整数,commentno为整数,i为长,j为长
Dim observ作为字符串,注释作为字符串
将ws设置为工作表,将wsRes设置为工作表
设置wsRes=图纸(1)
sno=1
lastcol=wsRes.Range(“iv8”).End(xlToLeft).列
调试。打印lastcol
resrow=9
“我不知道这是怎么回事
'标题=数组(“注册信息”、“案例详细信息(常规)屏幕”、“发件人信息”、“客户屏幕”、“产品”、“价格”)
对于i=2到1张。计数
observ=“”
comment=“”
观测值=1
注释编号=1
resrow=resrow+1
rescol=10
'使用单元格C1048576中的Ctrl Up键确定最后一行
lastrow=Sheets(i).范围(“C”和Rows.Count).结束(xlUp).行
设置ws=图纸(i)
'填写记分卡中的当前结果列1至6
使用wsRes.Cells(resrow,1)
.偏移量(0,0)=sno
偏移量(0,1)=宽度范围(“D2”)
.偏移量(0,2)=ws.范围(“D3”)
偏移量(0,3)=宽度范围(“D9”)
.偏移量(0,4)=ws.范围(“D4”)
.偏移量(0,5)=ws.范围(“D5”)
.偏移量(0,6)=ws.范围(“E9”)
.垂直对齐=xlTop
以
'从第9行开始向下扫描记分卡表(可能应该是11)
作为整数的Dim qu
对于j=9到最后一行
qu=重新冷却-9
'跳过问题之间的组标题
如果修剪(第(i)页,单元格(j,3))”,则
'将分数转移到结果表
“移动到下一个col,准备好下一个Qu了吗
wsRes.单元格(resrow,rescol)=表(i).单元格(j,3)
rescol=rescol+1
如果结束
“所有观察都不考虑分数
'修剪删除所有隐藏的前导空格
'如果扫描从11开始,则移除j>9
如果Trim(ws.Cells(j,4))“”和j>9,则
'启动第二、第三条etc观测线
如果Len(observ)>0,则observ=observ&vbCrLf
observ=observ&qu&“&ws.Cells(j,4)
'观测值=观测值+1
如果结束
'除第一行为标题外,所有注释均不考虑
如果Trim(ws.Cells(j,5))“”和j>9,则
如果Len(comment)>0,则comment=comment&vbCrLf
comment=comment&qu&“&ws.Cells(j,5)
'commentno=commentno+1
如果结束
下一个j
wsRes.Cells(resrow,8)=观测值
wsRes.Cells(resrow,9)=注释
sno=sno+1
接下来我
MsgBox Sheets.Count-1和“扫描的工作表”,vbInformation
端接头

评论是否位于观察结果旁边,即评论栏是否为“e”?是否有超过1个注释字段?是的,注释位于E列,每行都有一个注释部分。上面的宏设法捕获主工作表中的所有观察值,并将序号放在其旁边,因此,如果第15、18和19行中有观察值,它将以1的形式将其放入主工作表中的观察单元格中。Obs 15,2。Obs 18 3。Obs 19.你想把它们写在第一页的第一栏吗?我不懂这行;如果第(i)页。单元格(j,3)为“则”。C列是什么,它是一个数字,它与D列中的观察值有什么关系?a列是序列号,B列有正在评估的字段,C列有点(如果B列中的字段有错误的输入,C列中会分配一个点)。D列是一个观察点为什么被分配。感谢代码。它几乎满足了我的要求,但我还有一个小问题。当我运行它时,它会给我一个消息头-编译错误变量未定义。在原始宏中,此消息没有出现。当我移除线路时,它成功运行,但发生了两件事。首先,列观测值始终为1。即使在t