2011-11-17 25 views
0

從技術上講,我正在尋找的解決方案是儘量減少實際編程。我需要知道是否有可以從VBA調用的Excel功能,而不必自己編寫整個邏輯。Excel - 在給定的列中將行的範圍,第一列重複行的範圍

設想以下表:

Position Competency1 Competency2 Competency3 Competency4 
Employee1  x         x 
Employee2  x      x 

我需要的是以下結果:

Position Competency1 Competency2 
Employee1  x     
Employee2  x     

Position Competency3 Competency4 
Employee1     x     
Employee2  x     

換句話說,我希望Excel向下移動列,但保持第一列。現在是複雜的一點;將有幾個職位,與各種員工。因此最終產品可能如下所示:

Position Competency1 Competency2 
Employee1  x     
Employee2  x     

Position Competency3 Competency4 
Employee1     x     
Employee2  x     

Position2 Competency5 
Employee3  x        
Employee4    

數據從數據庫中提取並通過VBA格式化爲上述佈局。每個職位的職位數量和員工/能力都是可變的。

我當然可以編碼整個事情,但如果我可以在Excel中拋出一些參數並讓它爲我做,它會讓我的生活變得更加輕鬆。問題是,我發現哪些相關功能似乎是整個表單,而我需要能夠指定多組行和列。

我相當懷疑答案是:「搞砸了,編碼」。但我不知道足夠的Excel來說明。

+0

在這種情況下,我建議使用數據透視表,而且您甚至不需要編寫代碼來創建它。 – JimmyPena

+0

我無法使用數據透視表對此進行分類,也沒有任何一位同事可以看到它是如何完成的。如果確實有可能,那麼我很可能會花費更多的時間或更多的時間來研究如何準備數據,而不僅僅是在VBA中編寫數據。 –

回答

0

我假設第一個列表將與僱員的位置下來。而且沒有其他名單在那裏。假設這樣的:這裏是邏輯你需要編寫

  1. numberOfColumns什麼:計數細胞下降,其中電池是不是在列A(位置列)減1。本空白會給員工人數(不包括位置單元格)。

  2. numberOfRows:計算經過的單元格數量(第1行)。這將是Competency單元格的數量減1(不包括位置單元格)。

  3. competancyColumns:定義一個變量,捕獲它們需要爲每個位置添加多少能力列。這可以通過文本框或另一張紙上的單元格或其他內容值爲2

  4. 從A1 + competancyColumns開始。在行結束之後複製並剪切單元格。

  5. 從A1 + numberOfRows + 1開始。添加另一個計數器以跟蹤位置(計數器),因此在點4之後計數器應該讀取2(0 + competancyColumns)。 Paste cells(from point 4)

重複過程直到counter = numberOfcolumns。顯然不是從A1開始,而是你所在的那一排。

如果你不想使用剪切和粘貼,你可以將它存儲在一個數組中,但這是你決定的。

SO應該是基本邏輯。

+0

我沒有任何編碼的技術問題,這是我試圖避免的時間方面。這裏已經有很多VBA代碼了(該表格是通過VBA從其他幾張表格中的數據填充的,這些表格又是從數據庫中填充的),並且它不太適合維護。如果Excel具有可以以簡單的方式爲我解決問題的功能,它將會更快更強勁。 基於這些回覆,我打算用我最初的假設,那就是沒有簡單的方法讓Excel爲我處理這類事情,並且只是對它進行編碼。 –

+0

Excel並不那麼先進。它無法爲每一個問題想出解決方案。你所要求的並不難,而且在Excel中很容易實現。如果您想將其自動化,VBA是您唯一的選擇。 – waqasahmed

+0

與一些已經存在的相比,它不會是一個非常先進的功能,但它顯然不存在。我最終修改了現有的代碼,在填充時根據需要拆分這些行。 –