2014-07-23 56 views
1

簡介對多列範圍內的唯一項目有VBA,如何過濾先前結果中的多行?

我試圖增強一個基本的計劃表(見下文)與額外的排序。

enter image description here

第一列的資源。每週有2列,每列20小時。

示例讀數;

  • 在第30周阿隆工程項目A.民國31周40小時,他的作品在項目A 20H 20H和項目B.
  • 傑夫不WK30工作和WK31
  • 項目C工作40

我的目標

  1. 生成的項目在周唯一列表
  2. 能根據項目名稱進行過濾,並只獲取在該項目上工作的資源行。 (無特殊需要過濾掉其他項目在同一行,所以如果我在項目「從」過濾器,我想只看到阿隆和戴夫行)

我有什麼

基本上項1如下保護:

的第二列(項目)是返回在多列範圍內的所有唯一項目由VBA函數(從here截取)產生的陣列式。單元格公式如下所示,其中UniqueItems()的第二個參數確定是否僅返回唯一項目的數量(TRUE)或所有唯一值的列表(FALSE)。

=TRANSPOSE(UniqueItems($C$4:$H$6,FALSE)) 

缺什麼我的目標名單

第2項缺失。如果我現在選擇項目的過濾器選項(見截圖) enter image description here

和項目的過濾器,然後我只得到5行,沒有也行4. enter image description here

我怎麼會去篩選這適當地

允許使用VBA代碼或指向我應使用常規公式函數的指針。具有相同結果的完全不同的解決方案也很好。我想過關於數據透視表,但我認爲它不能處理這個範圍內的空白單元格,如果這個資源沒有工作,這是很常見的。

使用的板材可以下載from here

+1

那麼一個簡單的VBA函數可以將列C中的所有項目連接到列B中,並在每個項目之間帶有分隔符,那麼您可以使用「Contains」條件過濾列B呢?那有意義嗎? –

+0

我明白你的意思,並得到拼接工作。但是現在我總是要選擇「列過濾器(列標題中向下的三角形) - >文本過濾器 - >包含」,然後填寫一個標準。如果您知道我的意思,我寧願少點幾下。 – ixje

回答

1

恕我直言,你會好得多創建作爲一個規範化的數據庫表中,每個以下各列一排工作表:人,一星期,項目。最後,列出小時數的最後一列(可選地,根據需要爲每個工作人員定製的那些小時的成本)

然後使用數據透視表來構建您發佈的視圖(或任何其他您需要的報告視圖)。

這將讓您創建多個數據透視表,輕鬆解答如下問題: 項目X總共計劃了多少小時?在某個日期? 每個工作人員每個時間段總共計劃了多少小時 - 誰使用過多/使用不足?
每個項目每個員工計劃總共有多少小時? 等

保持與報告分開的數據更安全,更模塊化 - 我不希望VBA錯誤有可能破壞/刪除原始數據。