我有这个数据
Module Process
A P1
A P2
A P3
B P5
B P7
C P4
C P6
C P8
我想过滤掉过滤器中的第一个值,并将相应的数据放入这样的行中
Module Process
A P1 | P2 | P3
B P5 | P7 |
C P4 | P6 | P8
我的宏尚未准备好,但是已经准备好了
Sub Macro1()
Selection.AutoFilter
ActiveSheet.Range("$A$1:$B$415").AutoFilter Field:=1, Criteria1:="A"
Range("B2:B4").Select
Selection.Copy
Range("C2").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
End Sub
但是我不知道下一次运行宏时,它将是A,B还是C,这将与这些有所不同。那么如何选择第一个文本作为过滤器呢?
我还有两个问题。 我们如何重复过滤过程,直到到达过滤器中的最后一个文本(在本例中为C)?
当前它正在选择范围B2:B4进行转置,我想使其动态变化,从按应用的滤镜从B的第一个单元格到该特定滤镜的B的最后一个单元格。怎么做?
谢谢。
答案 0 :(得分:0)
对列Module
上的数据进行排序。如果您不知道如何在VBA中使用宏记录器,请使用它。
创建一个新的空白表,将其命名为Report
。设置dest_Line = 1
,dest_Value = ""
在数据表的第2行到数据末尾进行迭代。
当您在Module
列中获得新值时(也就是说,Module
列中的值与dest_Value
不同)
将dest_Value
设置为Module
列中的值。
递增dest_line
,复制第Module
行第1列中的列dest_Line
的值,并复制第2列中来自列Process
的值;设置dest_Column = 3
。
否则,它与以前的值相同:
Process
行dest_Line
的第dest_Column
列复制值;递增dest_Column
。如果要在同一张纸上使用一些空间而不是新的空白纸,请调整dest_Line
和dest_Column
的起点。