尝试在Excel中合并列

我很欣赏那里有很多类似的问题,但是我已经search了三天的各种论坛,还没有find任何我需要的东西 – 所以要么我做的事情很奇怪,要么我的search技巧不是从头开始!

我真的很感激,如果有人能让我知道我哪里去错了,甚至可以链接到一个解决scheme,可能有帮助,因为我没有find一个。

我目前有一个包含六个工作表的电子表格。 工作表2-6包含来自不同来源的物品的数据。 工作表1目前包含四个填充项目数据的列,使用我拼凑成四个单独列的macros。 工作表2包含一个“itemlist”列,我要从工作表2中的四列中的每一列复制数据。

我希望这是有道理的。 目前,我的代码如下:

Sub UpdateList() 'Clear the current ranges Range("PharmacyItems").Clear Range("PrelabelItems").Clear Range("RestockItems").Clear Range("TakehomeItems").Clear Range("FullItemList").Clear 'Populate control with unique list Range("PharmacyFullList").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("PharmacyItems"), Unique:=True Range("PrelabelFullList").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("PrelabelItems"), Unique:=True Range("RestockFullList").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("RestockItems"), Unique:=True Range("TakehomeFullList").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("TakehomeItems"), Unique:=True 'Combine the four ranges into one Range("UniqueLists!$A:$A, UniqueLists!$B:$B, UniqueLists!$C:$C, UniqueLists!$D:$D").Copy Sheets("Drug totals").Range("A2") 'Sort the data Range("FullItemList").Sort Key1:=Range("FullItemList").Columns(1), Order1:=xlAscending, Orientation:=xlSortColumns, Header:=xlYes, SortMethod:=xlPinYin, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption2:=xlSortNormal End Sub 

为了澄清以上内容,下面是对哪个范围的定义:

PharmacyItems,PrelabelItems,RestockItems和TakehomeItems:这些是包含从每个数据工作表复制的唯一项目的单独列表。 FullList:以上四个列表中的全部列表是不是唯一列表的源数据列表FullItemList:我希望唯一列表中的所有数据最终到达的列

我有一个范围,指定每个列,而不是使用命名的范围的原因是,我试图看看这是否会使它更好,因为它只是给我一个模糊和蓬松的范围问题的错误。 使用范围中定义的列,它告诉我目标的大小/形状与源不匹配。

确切的错误是:运行时错误“1004”:由于“复制”区域和粘贴区域的大小和形状不一样,因此无法粘贴信息。 尝试以下方法之一: – 单击单个单元格,然后粘贴 – select大小和形状相同的矩形,然后粘贴

谁能帮我? 可悲的是我是一个SQL Server的女孩,我宁愿从数据库中提取数据,但我不允许在这个!

先谢谢你

夏季

如果你不需要单独的唯一列表,但只是想创build一个所有的唯一值的列,那么这应该为你工作(虽然没有经过testing…)

 Sub UpdateList() Range("FullItemList").Clear 'Clear the full item list range 'Populate control with unique list UniquesToFullItemList Range("PharmacyFullList") UniquesToFullItemList Range("PrelabelFullList") UniquesToFullItemList Range("RestockFullList") UniquesToFullItemList Range("TakehomeFullList") 'Sort the data Range("FullItemList").Sort Key1:=Range("FullItemList").Columns(1), _ Order1:=xlAscending, Orientation:=xlSortColumns, Header:=xlYes, _ SortMethod:=xlPinYin, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, _ DataOption2:=xlSortNormal End Sub Sub UniquesToFullItemList(rngFrom As Range) rngFrom.AdvancedFilter Action:=xlFilterCopy, _ CopyToRange:=Sheets("Drug totals").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0), _ Unique:=True End Sub 

您不能将整个列粘贴到从第2行开始的范围(或任何其他不是1的行),因为列的最后一行不适合表格。 这就是为什么Excel说“复制区域和粘贴区域大小不一样”。

代替

 Range("UniqueLists!$A:$A, UniqueLists!$B:$B, UniqueLists!$C:$C, UniqueLists!$D:$D").Copy Sheets("Drug totals").Range("A2") 

尝试从第一行开始粘贴。

 Range("UniqueLists!A:D").Copy Sheets("Drug totals").Range("A1") 

但是我猜你没有数据一直到你的“UniqueLists”表的最底部? 如果是这样,那么你为什么要复制整个列? 只需复制你需要的部分。 然后你就可以从单元格“A2”开始粘贴了。 例:

 Range("UniqueLists!A1:D1234").Copy Sheets("Drug totals").Range("A2")