2016-07-22 49 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個獨特的記錄)。

***假設您知道如何使用循環找出每個組合的範圍。

相關問題