gpt4 book ai didi

excel - 复制/导出多列

转载 作者:行者123 更新时间:2023-12-04 22:18:55 24 4
gpt4 key购买 nike

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

Sub FilterData()
Dim Responses As Worksheet
Dim Column As Long

Set Responses = ThisWorkbook.Worksheets("Export")
Column = 5

Do While Responses.Cells(1, Column).Value <> ""
With Workbooks.Add(xlWBATWorksheet)
With .Worksheets(1)
Responses.Cells.Copy.Cells
.Columns(Column).AutoFilter Field:=1, Criteria1:="<>1"
.Rows(2).Resize(.Rows.Count - 1, Column).Delete Shift:=xlUp
.Columns(2).Resize(, .Columns.Count - 1).Delete Shift:=xlShiftToLeft
End With
.Close SaveChanges:=True, FileName:="/Users/myname/Desktop/Data/" & Responses.Cells(1, Column).Value & ".xlsx”"
End With
Column = Column + 1
Loop
End Sub
这很有效,因为我们的设置只需要通过电子邮件复制一列。
现在我们有更多的列可以保存到单个文件中。
这是新的布局(与 2015 年的相比)
enter image description here
我修改/添加/删除的所有内容都破坏了脚本。我怀疑这是对 .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将返回文档中的所有列。
因此,通过移动目标列,并使用 ALL 列的数量调整目标的大小,我们最终会“在文档之外”。因此错误。

关于excel - 复制/导出多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66065374/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com