有没有一种方法可以使用VBA在excel中堆叠数据

有没有一种方法可以使用VBA在excel中堆叠数据,excel,vba,Excel,Vba,我有一个包含120列的excel文件。部分数据如下: 两个重要的列是M列(组)和N列(类)。我想从列组中得到m1和M2。接下来,我过滤类以获得M1和M2。接下来,我将复制从类中获得的复制粘贴M1和M2,在我从组中获得的数据的末尾,然后将它们重命名为M1和M2。因此,输出将是: 因此,该组只有M1和M2。感谢您的帮助请参见范围对象的方法 选项显式 子堆栈() Const START_行=页眉下方2'行 将wb作为工作簿,ws作为工作表,计数为整数 Dim iRow为Long,iLastRow

我有一个包含120列的excel文件。部分数据如下:

两个重要的列是M列(组)和N列(类)。我想从列组中得到m1和M2。接下来,我过滤类以获得M1和M2。接下来,我将复制从类中获得的复制粘贴M1和M2,在我从组中获得的数据的末尾,然后将它们重命名为M1和M2。因此,输出将是:

因此,该组只有M1和M2。感谢您的帮助

请参见范围对象的方法


选项显式
子堆栈()
Const START_行=页眉下方2'行
将wb作为工作簿,ws作为工作表,计数为整数
Dim iRow为Long,iLastRow为Long,iTargetRow为Long,s为String
设置wb=ThisWorkbook
设置ws=wb.Sheets(“Sheet1”)
'查找最后一行现有数据
iLastRow=ws.Range(“M”和Rows.count).End(xlUp).Row
iTargetRow=iLastRow+1
“扫描M列
对于iRow=起始行到iLastRow
s=ws.Cells(iRow,13)。值'M
如果s=“M1”或s=“M2”,则
ws.Rows(iRow).EntireRow.Copy ws.Cells(iTargetRow,1)
iTargetRow=iTargetRow+1
计数=计数+1
如果结束
下一个
“扫描Coln
对于iRow=起始行到iLastRow
s=ws.Cells(iRow,14)。值'N
如果s=“M1”或s=“M2”,则
ws.Rows(iRow).EntireRow.Copy ws.Cells(iTargetRow,1)
ws.Cells(iTargetRow,13)=s'从N复制到M
iTargetRow=iTargetRow+1
计数=计数+1
如果结束
下一个
MsgBox计数和“已复制行”,vbInformation
端接头

到目前为止,您尝试了什么?非常感谢,@CDP,我会检查并返回给您代码是否正确如何撤消编辑?你能帮忙吗?我想它确实很管用。如果我有以下代码=M1=M600,M2=M200,N1=M60Z和N2=N20Z,我如何更改代码?@user只需将“M1”更改为“M600”,将“M2”更改为“M200”。我看不出N值之间有什么关联。谢谢,它们的末尾只有一个字符。