2012-11-30 13 views
1

我確定這不是一件非常困難的事情,但它不是那種容易適用於互聯網搜索的問題。彙總符合標籤的Excel單元格內容

我已經爲涉及複雜電子表格的工作分配了一個項目。我已經完成了通常的= SUM和其他基本的Excel公式,並且我已經有足夠的編碼背景,至少能夠通過VBA來模糊我的方式,但我不確定如何繼續處理一部分任務。

簡單版本:在工作表1上我有一個人員列表(每行一個,人員在列A中的名稱),在工作表2上我有一個組列表(每行一個,列A中的組名稱) 。工作表1中的每個名稱都有自己的行,並且我有一個「數據驗證」下拉菜單,您可以在其中選擇每個人所屬的組。

該下拉列表來自工作表2,其中每個組都有一行。因此,基本上Sheet 1的「Group」列的數據驗證源只是「= Sheet2!$ a1:a100」或其他。

問題是這樣的:我希望工作表2中的每個組行都有一個公式,這個公式會導致列在工作表1上的所有用戶列表中的所有用戶。我的意思是相當於「從PeopleTab中選擇*其中GROUP = ThisGroup「。由此產生的單元格會像「鮑勃史密斯,喬瓊斯,薩莉桑德森」一樣粘在一起的名字「

我一直在谷歌搜索幾個小時,但我想不出一種方式來短語我的搜索查詢來獲得結果想。

這裏是理想的結果的一個例子(劃線分隔無法找到一個方法來使它看起來不錯,表標籤似乎並不在這裏工作。):

(表1)
鮑勃·史密斯 - 第1組(從下拉菜單中選擇)
喬瓊斯 - 第2組(從下拉菜單中選擇)
薩利德森 - 第1組(從下拉菜單中選擇)

(第2頁)
第1組 - 鮑勃史密斯,薩利桑德森(公式結果)
集團2 - 喬·瓊斯(計算結果)

什麼公式(甚至什麼功能)我用的片材2的是第二列作平面列表指出,小組的成員?

+1

你可以使用ADO查詢Excel工作表。 – Kittoes0124

+0

聽起來像是'filter'的工作;唯一的問題是你會得到結果作爲一列,而不是一排。 – chesles

+0

^實際上並不是一個問題; '轉置'到救援:P – chesles

回答

1

我已經使用FILTER公式來實現類似的效果。基本格式是:

=FILTER(source, condition, [more conditions...]) 

這就是「帶我的源範圍,並返回匹配這些條件中的每一個的單元格」。

通過使用'Sheet1'!A:A作爲源,您可以引用整個列(第一個工作表A的列表中的名稱),並按另一個列的內容(工作表1中列B中選定的組)篩選這些值,和EQ('Sheet1'!B:B, $Ax)作爲條件,其中$Ax是工作表2的A列中的組名稱的引用(用行號替換x)。

例如在sheet2你可以有這樣的事情:

------------------------------------------------------------------- 
| A | B 
------------------------------------------------------------------- 
| Group1 | =TRANSPOSE(FILTER('Sheet1'!A:A, EQ('Sheet1'!B:B, $A1))) 
------------------------------------------------------------------- 
| Group2 | =TRANSPOSE(FILTER('Sheet1'!A:A, EQ('Sheet1'!B:B, $A2))) 
------------------------------------------------------------------- 

TRANSPOSE是必要的,因爲你的源範圍是一列,讓你從FILTER得到一個列回來。轉置只是將該列轉換成一行:)

作爲一個附註,您可以使用過濾器來完成其他整潔的事情,例如找到過濾範圍的總和(=SUM(FILTER(...)))等;我在預算電子表格中使用它來計算按月份和類別分組和彙總的收入/費用。

免責聲明:在谷歌文檔電子表格中測試,因爲我沒有MS Excel。

+0

這看起來很棒,和我需要的完全一樣,但據我所知,Excel沒有公式的FILTER函數(http://office.microsoft.com/en-us/) Excel的幫助/ Excel的功能按類別的HP005204211.aspx)。試圖找到相同的。 – Josh

+0

嗯,我很害怕這個... [vlookup](http://office.microsoft.com/en-us/excel-help/vlookup-HP005209335.aspx?CTT=5&origin=HP005204211)可能會有用,但我認爲你將不得不交換你的專欄(即把他放在第1欄,並把名字放在第2欄)。或者,使用谷歌電子表格是一個選項... :) – chesles

+0

我一直在試圖讓他們從Excel/Office一段時間過渡。簡短的回答:失敗的原因。 我會看看vlookup,謝謝 – Josh

0

在表1: VBA

Private Sub worksheet_Change(ByVal Target as Range) 
    if target.row =1 and target.value<>"" then target.offset(,1)=sheets("sheet2").cells(application.match(target.value,sheets("sheets").columns(1),0),2).value 
End sub 
相關問題