在Excel中更改表列的顺序

时间:2015-12-10 05:38:05

标签: excel excel-vba vba

嗯,它可能不再那么容易了。

我想按特定顺序在Excel中使用表格内容对列进行排序。

即我希望所有带有前缀('Product'/'product')的列都按字母顺序排在最后,除了'Product_ID'是第一个,其他一切都保持不变。

演示

  

Cust_ID |名称| Product_Quantity | PRODUCT_NAME | Product_ID | Price_per_quantity

     

1 |罗希特| 4 |笔| A23 | $ 2

     

2 |蒂姆| 3 |锅| P41 | $ 3'/ P>

  

Cust_ID |名称| Price_per_quanity | Product_id | product_Name | Product_Quantity

     

1 |罗希特| 2美元| A23 ......(各栏数据)

我希望n列的广义方式(有/无)使用包含更多列的VBA 脚本。

另外(第2个问题)无论有哪个SO成员解决的价值,都要反转列。

4 个答案:

答案 0 :(得分:3)

假设a位于A1中,请在顶部插入一行并填充:

=COLUMN()  

复制到所有填充列的上方。选择所有填充的列并按Row1最大排序为最小。

答案 1 :(得分:1)

这个答案是@pnuts给出的回复的附录,如果可能的话,它会更简单。如果由于某种原因无法按列排序,实现结果的一种方法是采用输入的转置(即交换行和列),按字母顺序按排序,然后转置回来获取原始格式。以下是如何执行此操作的分步指南:

enter image description here


突出显示您希望转置数据的电子表格的4x3区域。然后输入转置数组公式,在上面的示例中为=TRANSPOSE($A$1:$D$3)。请注意,单元格范围是绝对的($),因此当Excel将其复制到范围内时,它不会发生变化。还记得按 CTRL + ALT + ENTER ,而不是仅仅 ENTER ,告诉Excel您正在输入数组公式。接下来将此数据复制到新位置(仅限值),并按字母列降序排序:

enter image description here


最后一步是对此排序数据进行转置以获得最终结果:

enter image description here


同样,这涉及将TRANSPOSE函数与数组公式一起使用。

现在,您可以按列对原始数据进行排序。

答案 2 :(得分:1)

请按照以下步骤操作

  1. 插入一行用于虚拟目的,值为1,2,3,4
  2. 复制包括此虚拟行的所有数据 - >粘贴特殊 - >在其他地方转置
  3. 使用“最大到最小”和“展开”选项
  4. 对转置数据进行排序
  5. 现在再次复制数据,这次没有第一​​个虚拟列 - >粘贴特殊 - >转。
  6. Phew ......

    附图片。 enter image description here

答案 3 :(得分:1)

选择要排序的单元格。右键单击它们,选择Sort - > Custom Sort

点击选项,然后选择Left to Right。并设置如下图所示的设置:

enter image description here

然后按确定。