Excel 复制/导出多个列

Excel 复制/导出多个列,excel,vba,Excel,Vba,我们有一个表格表明对各种俱乐部的兴趣。输出将数据记录在Excel电子表格中,其中列为他们的首选姓名、姓氏、电子邮件、代词,并在相应列中为他们感兴趣的俱乐部添加一个“1”(模型如下) 我们希望为俱乐部提供他们自己的文件,其中包含基于其在关联俱乐部栏中的“1”的受访者,因此我们需要一种方法,以导出每个俱乐部的个人文件,其中包含感兴趣的人的姓名。我们通常有1000行,200多个俱乐部(列),所以我们无法手动执行此操作 2015年,当我们开始这个过程时,我们在SuperUser()用以下代码解决了这个问

我们有一个表格表明对各种俱乐部的兴趣。输出将数据记录在Excel电子表格中,其中列为他们的首选姓名、姓氏、电子邮件、代词,并在相应列中为他们感兴趣的俱乐部添加一个“1”(模型如下)

我们希望为俱乐部提供他们自己的文件,其中包含基于其在关联俱乐部栏中的“1”的受访者,因此我们需要一种方法,以导出每个俱乐部的个人文件,其中包含感兴趣的人的姓名。我们通常有1000行,200多个俱乐部(列),所以我们无法手动执行此操作

2015年,当我们开始这个过程时,我们在SuperUser()用以下代码解决了这个问题:

子过滤器数据()
将回答作为工作表
暗柱一样长
设置响应=此工作簿。工作表(“导出”)
列=5
执行While响应。单元格(1,列)。值“”
使用工作簿。添加(XLWBATWORKS)
附.工作表(1)
Responses.Cells.Copy.Cells
.Columns(Column).AutoFilter字段:=1,准则1:=“1”
.Rows(2)。调整大小(.Rows.Count-1,列)。删除移位:=xlUp
.Columns(2).调整大小(,.Columns.Count-1).删除移位:=xlshiftotoleft
以
.Close SaveChanges:=True,文件名:=“/Users/myname/Desktop/Data/”&Responses.Cells(1,列).Value&“.xlsx”
以
列=列+1
环
端接头
这是有效的,因为我们的设置只需要通过电子邮件复制一个专栏

现在我们有更多的列要保存到各个文件中

这是新的布局(与2015年的布局相比)

我修改/添加/删除的所有内容都破坏了脚本。我怀疑这是对.column resize部分的修改:

.Columns(2).Resize(, .Columns.Count - 1).Delete Shift:=xlShiftToLeft
我最初的想法是,我可以将.Columns(2)更改为(5)——但这破坏了脚本

我如何修改它以复制前四列的范围而不是第一列?

确实非常接近。 将
.Columns(2)
更改为
(5)
是可以的,只要您在最后进行补偿。尝试:

.Columns(5).Resize(, .Columns.Count - 4).Delete Shift:=xlShiftToLeft
原因是
Columns.Count
将返回文档中的所有列。

因此,通过移动目标列,并使用所有列的数量调整目标的大小,我们最终会“在文档之外”。这就是错误。

哦,天哪。对现在看来很明显。非常感谢你。