標題:
[發問]
請教關於利用迴圈判斷在需要的地方插入列
[打印本頁]
作者:
a703130
時間:
2011-10-28 14:57
標題:
請教關於利用迴圈判斷在需要的地方插入列
請問各位前輩們
我目前有個文件因為資料量很龐大
每次整理都需要很久的時間
所以將腦筋動到VBA上,希望能讓我的工作更有效率
但是我卻遇到了問題..百思不得其解下來請前輩幫忙
如附件的檔案,我想要在每個step中間插入一列空白
然後可以保留前後兩行,其餘隱藏
以我手動的方式做, 先搜尋step 14 在上面插入一列
然後會選取step13的倒數第二列,壓住shift,end+↑,再往下選取step13的第二列
將其隱藏 ==> 亦即保留step 13的第一列以及第二列,就像是附件的step13、14
每個文件開始不一定是step13,且每個step的列數是不一樣的
所以我想到的方式是用endup或是enddown,但是要判斷每個step中間要如何插入列,我就沒轍了
因為列好像不能設定變數,((我的能力不足,爬文似乎也沒有找到類似的方法))
[attach]8367[/attach]
所以請前輩們幫忙,希望能夠省下無謂的時間
謝謝
作者:
oobird
時間:
2011-10-28 15:50
插入空白列後就大於65536列了。你的Office2003不支持。
作者:
GBKEE
時間:
2011-10-28 16:28
回復
1#
a703130
Sub Ex()
Dim Rng(1 To 2) As Range
With Sheets("Page1")
Set Rng(1) = .Range("a2")
Set Rng(2) = Rng(1).End(xlDown)
Do While Rng(1).Row <> Rows.Count
If .Range(Rng(1), Rng(2)).Rows.Count >= 3 Then .Range(Rng(1).Offset(1), Rng(2).Offset(-1)).EntireRow.Hidden = True
Set Rng(1) = Rng(2).End(xlDown)
Set Rng(2) = Rng(1).End(xlDown)
Loop
End With
End Sub
複製代碼
作者:
a703130
時間:
2011-10-31 10:25
回復
2#
oobird
大大說的也有道理
如果是在不會超過的情況下,是否有其辦法??
作者:
a703130
時間:
2011-10-31 10:39
回復
3#
GBKEE
謝謝大大指導
不過這方式似乎只能保留第一行&最後一行
沒辦法按照 Step 方式 去做
不知道是否還需要修改什麼地方??
作者:
Hsieh
時間:
2011-10-31 15:30
回復
5#
a703130
Sub nn()
Dim A As Range, Rng As Range, Rng1 As Range, Rng2 As Range
Set d = CreateObject("Scripting.Dictionary")
Range("D:D").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Cells.EntireRow.Hidden = False
For Each A In Range([D2], [D65536].End(xlUp))
If d.exists(A.Value) = False Then
d(A.Value) = A.Value
If Rng2 Is Nothing Then Set Rng2 = A Else Set Rng2 = Union(A, Rng2)
End If
If A = A.Offset(1, 0) Then
If Rng Is Nothing Then Set Rng = A Else Set Rng = Union(A, Rng)
Else
If Rng1 Is Nothing Then Set Rng1 = A.Offset(1, 0) Else Set Rng1 = Union(A.Offset(1, 0), Rng1)
End If
Next
Rng1.EntireRow.Insert
Rng.EntireRow.Hidden = True
Rng2.EntireRow.Hidden = False
End Sub
複製代碼
[attach]8387[/attach]
作者:
a703130
時間:
2011-11-2 09:26
回復
6#
Hsieh
此方法可行
不過這方法似乎已經超過我所知道的語言
不知道前輩是否能幫忙註解,讓我能夠更容易學習
謝謝
作者:
Hsieh
時間:
2011-11-2 09:43
回復
7#
a703130
這並無特殊語法
請針對不解之處發問
作者:
GBKEE
時間:
2011-11-2 09:57
回復 Hsieh
此方法可行
a703130 發表於 2011/11/2 09:26
樓主Excel的版本為2003 依你的附檔 來操作 Hsieh 超版的程式
Rng1.EntireRow.Insert 這裡的程式碼 會發生錯誤 .
如同 oobird 超版說 插入空白列後就大於65536列了。你的Office2003不支持。
所以 樓主 可能需升級Excel的版本.
作者:
linsurvey2005
時間:
2017-2-22 05:08
回復
3#
GBKEE
依標題另請教大大,我的問題想把原始資料插入整列進去
筆數很多需要再不同編號處插入整列分割開
[attach]26698[/attach]
[attach]26699[/attach]
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)