2016-07-22 71 views
0

我一直在尝试搜索此分组的示例并测试了几个代码片段,但未能适应它到我所需要的,因为我只是开始了解Excel vba。 我想要做的是按列A进行分组,然后获取该列中C列中使用的值的范围,并在新的工作表中获取结果。Excel VBA - 按列A分组数据,从C获取范围值 - 将结果复制到新工作表

主表。

A B   C  D 

3 Baseball 4  Blue 

2 Football 1  Red 

2 Football 3  Red 

3 Baseball 4  Blue 

1 Soccer  2  Green 

3 Baseball 4  Blue 

1 Soccer  3  Green 

1 Soccer  5  Green 

2 Football 2  Red  

预期结果:

新表。

A B   C  D 

1 Soccer  2-5  Green 

2 Football 1-3  Red 

3 Baseball 4  Blue 
+0

列A,B和D总是一对一的关系吗? –

+1

这可以用公式来完成,是必需的吗? –

+0

@ScottCraner:是的,如主表所述。我可以使用任何可以完成工作的任务,但是我想能够将其作为“宏”运行,或者点击某个按钮来执行该过程。感谢您对此进行调查。 – sys73r

回答

0

其实我已经弄清楚了这一点:

For Each key In fCatId.Keys 
    'Debug.Print fCatId(key), key 
    With wshcore 
     llastrow = wshcore.Range("A" & Rows.Count).End(xlUp).Row 
     .Range("A1:N" & llastrow).AutoFilter 
     .Range("A1:N" & llastrow).AutoFilter Field:=1, Criteria1:=fCatId(key) 
     lwmin = WorksheetFunction.Subtotal(5, Range("H:H")) 
     lwmax = WorksheetFunction.Subtotal(4, Range("H:H")) 

即时得到列:fcatid,B:关键,lwmin:最低值和lwmax:最高。

0

如果您需要C列为值的范围,例如2 - 5,那么它是Excel中的文本。数据透视表只能返回最小值,最大值,总和,平均值,但不能返回值的范围。

您将需要使用VBA来解决问题。

首先,将列A,B,D复制到某个位置,然后使用Remove Duplicate。 找出独特的组合。

如:(假设你在未来的一些新的记录)

A B   C  D 

3 Baseball 4  Blue 

2 Football 1  Red 

2 Football 3  Red 

3 Baseball 4  Blue 

1 Soccer  2  Green 

3 Baseball 4  Blue 

1 Soccer  3  Green 

1 Soccer  5  Green 

2 Football 2  Red 

4 Tennis  3  Yellow 

那么你应该有类似如下:

A B   D 

1 Soccer  Green 

2 Football Red 

3 Baseball Blue 

4 Tennis  Yellow 

然后使用循环,找出值范围对于每一个独特的组合(这里我们有4个独特的记录)。

***假设您知道如何使用循环找出每个组合的范围。

相关问题