看板 Office 關於我們 聯絡資訊
軟體:excel 版本:2013 一個變動大小且每列數不一的表格在sheets(1) 想用VBA抓取重新整理表格到sheets(2) Sheets(1) a b c d e 1 一組 二組 三組 四組 五組 2 甲 乙 丙 丁 3 戊 己 庚 4 辛 5 sheet(2) 1 甲 一組 2 乙 二組 3 丙 三組 4 丁 四組 5 戊 一組 6 己 三組 7 庚 四組 8 辛 三組 這種情況該如何做呢? 謝謝各位 我自問自答了: Public Sub 所屬單位2() '宣告動態陣列M Dim M() '計算欄數 a = Sheets(1).Range("A1").End(xlToRight).Column '將每一欄的最後一列列號寫入M() For j = 1 To a ReDim Preserve M(j) M(j) = Sheets(1).Cells(1000, j).End(xlUp).Row Next '取M中最大值為表格下界 b = WorksheetFunction.Max(M) '逐一比對資料,將對應者填入報表 For i = 2 To Range("A2").End(xlDown).Row For Each cell In Sheets(1).Range(Sheets(1).Cells(1, 1), Sheets(1).Cells(b, a)) If Cells(i, "A") = cell Then Cells(i, "B") = Sheets(1).Cells(1, cell.Column) End If Next Next End Sub Public Sub 人員() x = 2 For i = 1 To Sheets(1).Range("A1").End(xlToRight).Column For j = 2 To Sheets(1).Cells(10000, i).End(xlUp).Row If Sheets(1).Cells(j, i) <> 0 Then Cells(x, 1) = Sheets(1).Cells(j, i) x = x + 1 End If Next Next Call 所屬單位2 End Sub _____________________________________________________________________________ 但是還是想了解一下S大的方法,S大的方法總是精闢!! 但在做出來之後我又想把它弄成自訂函數 但是在第一步就卡住了 Public Function 人員整理(M) 宣告完後,M陣列將去選去sheets(1)的表格,下一步我想讀取我選取M的SIZE 也就是M有幾列幾行,該如何做呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.24.20.1 ※ 文章網址: https://www.ptt.cc/bbs/Office/M.1489165274.A.C97.html
o1o3o1o31030: 名字不用順序 03/11 01:02
soyoso: 可以range.currentregion.rows.count或range.find 03/11 12:01
soyoso: xlprevious來取得資料欄內最下方列號 03/11 12:03
soyoso: 迴圈於取得列號;取最右側有資料欄號則可以range.end、 03/11 12:05
soyoso: range.find或worksheetfunction.counta 03/11 12:05
soyoso: 迴圈內再加入另一個迴圈於取得欄號,判斷是否為空白儲存格 03/11 12:08
soyoso: 另加變數=變數+1來累加要填入sheet(2)內列偏移值 03/11 12:10
soyoso: 偏移上以range.offset 03/11 12:10
soyoso: 取最右側欄號和判斷是否為空白儲存格上也可以 03/11 12:17
soyoso: range.specialcells 常數(文字)的方式 03/11 12:18
o1o3o1o31030: 感謝S大,但我看得不是很懂@@ 03/11 15:35
※ 編輯: o1o3o1o31030 (223.136.251.213), 03/11/2017 19:41:52
soyoso: M如為range,要回傳列數和欄數的話,可以range.rows.count 03/11 23:30
soyoso: 和range.columns.count 03/11 23:30
o1o3o1o31030: 是這樣嗎Range(M).Rows.Count?但好像不太對的樣子@@ 03/12 11:23
o1o3o1o31030: M是我自行選取進入自訂函數的範圍 03/12 11:25
o1o3o1o31030: 還是說一開始要宣告甚麼? 03/12 11:25
soyoso: 以m.rows.count試試 03/12 12:34
o1o3o1o31030: 感謝 03/12 15:13