返回列表 上一主題 發帖

請求高手...有方法能快速作嗎?

你的意思是要把重覆的 "名稱" 列刪除嗎?
重覆的 "名稱" 最左邊的 "A", "B", "C", 只保留一列?
且刪除列以前, 儘量保留 "地點", "電話" ?
(且 "A" 的重要性 > "B" 的重要性 > "C" 的重要性 >)

TOP

回復 1# 卡嘉塔
如果需求如3樓所說.
則:
先將資料表按升冪排序, 主要鍵→名稱(B欄), 次要鍵→類別(A欄)
  1. Private Sub CommandButton1_Click()
  2.     Dim i As Integer
  3.     Dim strB, strC As Range
  4.     For i = [B2].End(xlDown).Row To 2 Step -1
  5.        Set strB = Cells(i - 1, 2)
  6.        Set strC = Cells(i, 2)
  7.        If strC.Value = strB.Value Then
  8.            If strB.Offset(0, 1) = "" And strC.Offset(0, 1) <> "" Then
  9.                 strB.Offset(0, 1) = strC.Offset(0, 1)
  10.            End If
  11.            If strB.Offset(0, 2).Value = "" And strC.Offset(0, 2).Value <> "" Then
  12.                 strB.Offset(0, 2).Value = strC.Offset(0, 2).Value
  13.            End If
  14.            strC.EntireRow.Delete
  15.        End If
  16.     Next
  17. End Sub
複製代碼
結果如下圖

TOP

本帖最後由 yen956 於 2014-2-23 10:32 編輯

回復 7# 卡嘉塔
1. 回6f, 抱歉, 我的是 2003, 不清楚那個按鈕的作用!
2. 回7f, 那是VBA, 配合 CommandButton1 用的,
3. 建議下次 pos 圖時, 連【欄名】及【列號】一起  pos 出來,
大家比較容易看得懂.
附上檔案(已把【序號】列入了), 請參考看看.

刪除重覆列.7z
http://www.mediafire.com/download/whhfyklg45t6yu1/%E5%88%AA%E9%99%A4%E9%87%8D%E8%A6%86%E5%88%97.7z

TOP

本帖最後由 yen956 於 2014-2-24 13:12 編輯

回復 9# 卡嘉塔
將8F 的 刪除重覆列.7z 抓下來,
打開 VBA 再修改.
  1. Private Sub CommandButton1_Click()
  2.     Dim i As Integer
  3.     Dim strB, strC As Range
  4.     '
  5.     '先將資料表按升冪排序, 主要鍵→名稱(C欄), 次要鍵→類別(A欄); Range("A1:E21")是排序範圍
  6.     [A1].Resize([A1].End(xlDown).Row, [A1].End(xlToRight).Column).Sort _
  7.               Key1:=Range("C2"), Order1:=xlAscending, _
  8.               Key2:=Range("A2"), Order2:=xlAscending, _
  9.               Header:=xlYes
  10.                   
  11.     For i = [C2].End(xlDown).Row To 2 Step -1
  12.        Set strB = Cells(i - 1, 3)
  13.        Set strC = Cells(i, 3)
  14.        If strC.Value = strB.Value Then
  15.       
  16.            '保留D欄資
  17.            If strB.Offset(0, 1) = "" And strC.Offset(0, 1) <> "" Then
  18.                 strB.Offset(0, 1) = strC.Offset(0, 1)
  19.            End If
  20.            
  21.            '保留E欄資
  22.            If strB.Offset(0, 2).Value = "" And strC.Offset(0, 2).Value <> "" Then
  23.                 strB.Offset(0, 2).Value = strC.Offset(0, 2).Value
  24.            End If
  25.            '
  26.            '複製上列VBA, 再修再參數即可
  27.            '
  28.            strC.EntireRow.Delete
  29.        End If
  30.     Next
  31. End Sub
複製代碼

TOP

        靜思自在 : 修行要繫緣修心,藉事練心,隨處養心。
返回列表 上一主題