我在Excel中有一个列表,其中包含人员的详细信息,其中包含城市,地址和姓名
我需要抓住City列并为每个城市创建一个工作表,然后将sheet1中的数据复制到该新工作表中。
因此,如果我有一个名为Dublin的城市,我需要宏来创建一个名为都柏林的新工作表,转到列表,抓住所有名为都柏林的城市,将它们复制并粘贴到都柏林工作表中(以及其他栏目当然)
我正在使用此链接的宏形式:mirabeau创建的http://www.mrexcel.com/forum/excel-questions/727407-visual-basic-applications-split-data-into-multiple-worksheets-based-column.html。
代码如下:
@month_multipliers[month.to_sym]
以上内容可以为每个城市创建工作表,但不会将数据复制到新创建的工作表中。如何才能做到这一点?我对VBA的知识非常有限,我完全迷失了。
答案 0 :(得分:0)
创建完所有工作表后,您只需搜索列表以搜索城市。对于每一行,请查看城市,并将其写入相应的表格中。工作表需要与我的代码工作的城市具有相同的名称。
我假设您是从A列第1行开始的。
dim strCity as string
dim strAdd as string
dim strName as string
for i = 1 to Sheets("[TableSheet]").Cells(Rows.Count, "A").End(xlUp).row
strCity = Sheets("[TableSheet]").range("A" & i)
strAdd = Sheets("[TableSheet]").range("B" & i)
strName = Sheets("[TableSheet]").range("C" & i)
Sheets(strCity).Range("A" & i) = strCity
Sheets(strCity).Range("B" & i) = strAdd
Sheets(strCity).Range("C" & i) = strName
next
[tableSheet]当然是带有您信息的工作表的名称。如果您不熟悉并有疑问我很乐意回答。
答案 1 :(得分:0)
Dim strDB As String
Dim strName As String
Dim strDate As String
Dim strHour As String
Dim strMin As String
Dim strGR As String
For i = 1 To Sheets("[TableSheet]").Cells(Rows.Count, "B").End(xlUp).Row
strDB = Sheets("[TableSheet]").Range("A" & i)
strName = Sheets("[TableSheet]").Range("B" & i)
strDate = Sheets("[TableSheet]").Range("C" & i)
strHour = Sheets("[TableSheet]").Range("D" & i)
strMin = Sheets("[TableSheet]").Range("E" & i)
strGR = Sheets("[TableSheet]").Range("F" & i)
Sheets(strName).Range("A" & i) = strDB
Sheets(strName).Range("B" & i) = strName
Sheets(strName).Range("C" & i) = strDate
Sheets(strName).Range("D" & i) = strHour
Sheets(strName).Range("E" & i) = strMin
Sheets(strName).Range("F" & i) = strGR
Next

我需要按B列排序。每当我运行它时,我都会遇到运行时错误' 9'下标超出范围。我知道这意味着什么,但我无法找到我在代码中出错的地方。