Board logo

標題: [發問] 資料剖析後刪除空白列 [打印本頁]

作者: paddyliu    時間: 2013-5-5 22:40     標題: 資料剖析後刪除空白列

參考板上文章試寫一段資料剖析後刪除空白列的VBA,
資料剖析以|符號斷行,但執行出現以下問題:
1.一直不斷執行迴圈
2.刪除空白列是一整列空白,但目前執行看起來是刪除空白列後下方儲存格會上移,
請高手指點哪裡錯誤?感激不盡!

Sub 剖析刪空()

For Each a In Range("A:A")

h = Split(a, "|", 30, vbDatabaseCompare)

    i = 1

    For Each b In h

    a.Offset(columnoffset:=i) = b

    i = i + 1
     
   Next
   
   With Range("A1: BB1000").SpecialCells(xlCellTypeBlanks).Delete

End With

Next

End Sub
作者: Hsieh    時間: 2013-5-5 23:37

回復 1# paddyliu

刪除列,當然下方儲存格會上移,不知道你想要的刪除是甚麼意思?
作者: paddyliu    時間: 2013-5-5 23:53

回復 2# Hsieh

你好,舉例如下:

討債明細  一覽表
(空白列)
A125348 | 張小明 | $1235
V028684 | 陳大花 | $2598
(空白列)
V248514 | 章法華 | $7538
(空白列)
V425686 | 嚕啦啦 | $5485

我執行後變成&不斷迴圈

討債明細  一覽表
                   張小明  $1235
V028684  陳大花  $2598
V248514  章法華  $7538
V425686  嚕啦啦  $5485
V425686

但我要的結果是:
A125348  張小明  $1235
V028684  陳大花  $2598
V248514  章法華  $7538
V425686  嚕啦啦  $5485
作者: genes    時間: 2013-5-6 02:23

回復 3# paddyliu


move delete command outside "for loop"?
  1. Sub 剖析刪空()

  2. For Each a In Range("A:A")

  3. h = Split(a, "|", 30, vbDatabaseCompare)

  4.     i = 1

  5.     For Each b In h

  6.     a.Offset(columnoffset:=i) = b

  7.     i = i + 1
  8.      
  9.    Next

  10. Next

  11. With Range("A1: BB1000").SpecialCells(xlCellTypeBlanks).Delete

  12. End With

  13. End Sub
複製代碼

作者: GBKEE    時間: 2013-5-6 06:28

回復 3# paddyliu
  1. Option Explicit
  2. Sub Ex()
  3.     Dim E As Range, A As Variant
  4.     With Range("a:a")
  5.         .SpecialCells(xlCellTypeBlanks).Delete             '空白列刪除:集中有資料範圍
  6.         For Each E In .SpecialCells(xlCellTypeConstants)   '有資料範圍
  7.             A = Split(E, "|")                               '分割字串為陣列
  8.             E.Resize(, UBound(A) + 1).Value = A
  9.         Next
  10.     End With
  11. End Sub
複製代碼

作者: paddyliu    時間: 2013-5-6 09:28

回復 4# genes
感謝指教,這寫法雖然不會loop,
但刪空的資料會全部向上位移,
就同如我上方的例子,
                     張小明  $1235
V028684  陳大花  $2598
V248514  章法華  $7538
V425686  嚕啦啦  $5485
V425686
如果以我的寫法是要更改那一段呢?
作者: paddyliu    時間: 2013-5-6 12:09

回復 5# GBKEE
感謝GBKEE,領教了,但請問這可以試用於每張工作表嗎?
如我今日開新檔案插入新活頁簿就無法執行了耶?
作者: GBKEE    時間: 2013-5-6 12:42

本帖最後由 GBKEE 於 2013-5-6 12:43 編輯

回復 7# paddyliu

如圖: 程式碼可用於每張工作表
[attach]14900[/attach]

程式碼如置於 其他工作表模組中
With ActiveSheet.Range("a:a")   作用中的工作表
作者: paddyliu    時間: 2013-5-6 13:41

回復 8# GBKEE
如果我想把它放在常用命令列→巨集→做一個快速存取的圖示在上方工具列,
以後只要按一下就可以執行,請問又該如何作業呢?
謝謝!




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)