返回列表 上一主題 發帖

請教一個VBA排序問題

回復 1# tonycho33
  1. Sub nn()
  2. Set d = CreateObject("Scripting.Dictionary")
  3. For Each a In Range("C5:H5,C7:H7,C9:H9").SpecialCells(xlCellTypeConstants)
  4.    If IsEmpty(d(a.Value)) Then d(a.Value) = Cells(a.Row, 2) Else d(a.Value) = d(a.Value) & "," & Cells(a.Row, 2)
  5. Next
  6. For Each a In [K5:K9]
  7. ar = Split(d(a.Value), ",")
  8.    a.Offset(, 1).Resize(, UBound(ar) + 1) = ar
  9. Next
  10. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 3# tonycho33
  1. Sub nn()
  2. Set d = CreateObject("Scripting.Dictionary")
  3. For Each a In Range("C5", [A65536].End(xlUp).Offset(, 7)).SpecialCells(xlCellTypeConstants) '再B:H欄的的非空格做迴圈
  4.    If IsEmpty(d(a.Value)) Then d(a.Value) = Cells(a.Row, 2) Else d(a.Value) = d(a.Value) & "," & Cells(a.Row, 2) '如果未出現過就以該儲存格內容加入否則就將原有字串以逗點連結該儲存格內容
  5. Next
  6. For Each a In Range("k5", [K65536].End(xlUp)) '在K欄所有資料做迴圈
  7. ar = Split(d(a.Value), ",")  '將以K欄儲存格為關鍵字的字典內容以逗點做分割得到一個陣列
  8. a.Offset(, 1).Resize(, UBound(ar) + 1) = ar '將陣列寫入L欄向右
  9. Next
  10. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 5# tonycho33
  1. Sub nn()
  2. Set d = CreateObject("Scripting.Dictionary")
  3. For Each a In Range("C5", [A65536].End(xlUp).Offset(, 7)).SpecialCells(xlCellTypeFormulas) '再B:H欄的的公式儲存格做迴圈
  4.    If a.Value<>"" And IsEmpty(d(a.Value)) Then d(a.Value) = Cells(a.Row, 2) Else d(a.Value) = d(a.Value) & "," & Cells(a.Row, 2) '如果未出現過就以該儲存格內容加入否則就將原有字串以逗點連結該儲存格內容
  5. Next
  6. For Each a In Range("k5", [K65536].End(xlUp)) '在K欄所有資料做迴圈
  7. ar = Split(d(a.Value), ",")  '將以K欄儲存格為關鍵字的字典內容以逗點做分割得到一個陣列
  8. a.Offset(, 1).Resize(, UBound(ar) + 1) = ar '將陣列寫入L欄向右
  9. Next
  10. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 7# tonycho33
  1. Sub nn2()
  2. Set d = CreateObject("Scripting.Dictionary")
  3. For Each a In Range("C5", [O65536].End(xlUp)).SpecialCells(xlCellTypeConstants) '在C:O欄的的非空格做迴圈
  4. If a <> 0 Then
  5.    If IsEmpty(d(a.Value)) Then d(a.Value) = Cells(a.Row, 2) Else d(a.Value) = d(a.Value) & "," & Cells(a.Row, 2) '如果未出現過就以該儲存格內容加入否則就將原有字串以逗點連結該儲存格內容
  6. End If
  7. Next
  8. For Each a In Range("q5", [q65536].End(xlUp)) '在K欄所有資料做迴圈
  9. ar = Split(d(a.Value), ",")  '將以K欄儲存格為關鍵字的字典內容以逗點做分割得到一個陣列
  10. a.Offset(, 1).Resize(, UBound(ar) + 1) = ar '將陣列寫入L欄向右
  11. Next
  12. End Sub
複製代碼
學海無涯_不恥下問

TOP

        靜思自在 : 一個人不怕錯,就怕不改過,改過並不難。
返回列表 上一主題