Board logo

標題: [發問] 刪除多餘的表頭 [打印本頁]

作者: b9208    時間: 2011-2-24 22:23     標題: 刪除多餘的表頭

各位先進!
請問如何設計刪除資料中多餘的表頭(如附件黃色區域列數)
僅保留最上面的表頭。

謝謝
[attach]4854[/attach]
作者: oobird    時間: 2011-2-25 11:04

樓上代碼簡明流暢,想請教
通常Find方法找多筆會用FindNext方法使代碼更簡潔
此例是否有特殊原因不使用?
作者: b9208    時間: 2011-2-25 11:27

回復 4# donald

先進
因表頭五列中,有些欄位有合併儲存格,
執行有問題

個人想法:
依A欄來判斷,由A6開始向下,如儲存格內容包含〞某某公司抬頭〞,則刪除五列列數(含〞某某公司抬頭〞列)
但功力不足,不知是否可行。

謝謝指導
作者: Hsieh    時間: 2011-2-25 11:28

此例是在大範圍內直接搜尋,並不必指定開始搜尋位置
所以,並不影響搜尋結果,因為C永遠是找到相同值的第一個位置
作者: b9208    時間: 2011-2-25 11:44

回復 4# donald

非常抱歉
VBA可以執行
因刪除表頭資料位於 (Sheet2),程式碼位於(Sheet1),執行有問題。
將程式碼位於(Sheet2),則執行OK。

非常感謝
作者: Hsieh    時間: 2011-2-25 13:33

回復 7# b9208


    With ActiveSheet.UsedRange.Offset(1, 0)
只需改這行,ActiveSheet改成你要刪除的工作表名即可
請確實瞭解程式碼,論壇可不是代工廠
作者: b9208    時間: 2011-2-25 23:10

回復 8# Hsieh

按鈕Sheet1於Sheets(“Sheet1”) 中:
修改如下:
With Sheets("WW").UsedRange.Offset(1, 0)
執行有問題(請看附件)

按鈕WW於Sheets(“WW”) 中:
With ActiveSheet.UsedRange.Offset(1, 0)
執行 OK (請看附件)

另加入刪除多餘表頭後,再判斷D欄 = “ “,則刪除該列。
AA = Range("A65536").End(xlUp).Row
    For i = 6 To AA
        If Cells(i, 4) = "" Then
        If myi Is Nothing Then
        Set myi = Cells(i, 4)
        Else
        Set myi = Union(myi, Cells(i, 4))
        End If
        End If
    Next
    If Not myi Is Nothing Then myi.EntireRow.Delete

非常感謝指教

[attach]4870[/attach]
作者: Hsieh    時間: 2011-2-25 23:38

回復 9# b9208
  1. Sub deldata_1()
  2. Dim c As Range
  3.   With Sheets("WW").UsedRange.Offset(1, 0)
  4.       Set c = .Find(Sheets("WW").Cells(1, 1), Lookat:=xlWhole)
  5.       If Not c Is Nothing Then
  6.           Do
  7.               c.Resize(5, 15).Delete (2)
  8.               Set c = .Find(Sheets("WW").Cells(1, 1), Lookat:=xlWhole)
  9.            Loop Until c Is Nothing
  10.       Else
  11.             MsgBox "沒有找到"
  12.       End If
  13.    End With
  14. End Sub
複製代碼

作者: b9208    時間: 2011-2-26 00:45

回復 10# Hsieh

謝謝版主指導
執行沒有問題了




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