我在这个论坛上搜索了很长时间并且学到了很多东西。但是,我现在遇到一个容易修复的问题,我想,但是我太盲目了,看不到合适的解决方案。
我有一张超过50k行的表格,其中也包含供应商的编号,因此这些编号恰好是重复的。 我有一个vba宏,它为每个供应商编号创建一个新的工作表,没有重复,所以这不是问题。 但是,我想将行的数据复制到工作表中,该工作表等于该行中出现的供应商编号。
供应商编号在A栏中。因此,如果第2行的供应商编号为10,则将该行复制到工作表" 10",第3行将编号14复制到工作表" 14" ,第4行的第10页为第10页,第10页为第3页等等。
我使用了我在这里找到的以下代码并重新改编了一下。
Sub CopyRows()
Dim DataSht As Worksheet, DestSht As Worksheet
Set DataSht = Sheets("All Data")
RowCount = DataSht.Cells(Cells.Rows.Count, "A").End(xlUp).Row
For i = 2 To RowCount
DataSht.Range("A" & i).EntireRow.Copy
Set DestSht = Sheets(DataSht.Range("A" & i).Value)
DestLast = DestSht.Cells(Cells.Rows.Count, "A").End(xlUp).Row
DestSht.Range("A" & DestLast + 1).Paste
Next i
End Sub
然而,这行上的下标超出范围错误: 设置DestSht =表格(DataSht.Range(" A"& i).Value)
答案 0 :(得分:0)
试试这个:
For i = 2 To RowCount
Set DestSht = Sheets(CStr(DataSht.Range("A" & i)))
DestLast = DestSht.Cells(Cells.Rows.Count, "A").End(xlUp).row
DataSht.Range("A" & i).EntireRow.Copy Destination:=DestSht.Range("A" & DestLast + 1)
Next I
自:
CStr
功能指向Sheets("12")
Cstr
时Sheets(12)
指向<label>
<input type="checkbox" value="1" name="2[]"> " Horror"
</label>
,即工作簿中的第12张,可能不是您想要或不在的那张。