返回列表 上一主題 發帖

[發問] Excel VBA sorting 後複製貼上

[發問] Excel VBA sorting 後複製貼上

想請問板上高手
如附件
我有兩個下拉選單的欄位內容分別為 ABCDEF
ABCDEF 為我的資料頁面Data的表頭.
如果我的下拉選單第一個選了B 第二個選了A
然後執行VB 後VB 會先在 Data 頁面找到B 然後將B欄整欄複製到Result頁面的A欄位去,在做第二次找到A 然後A 複製到Result頁面的B欄位去
不知道VB 的程式應該怎麼寫....感謝板上高手


Regards
:)

Book1.rar (6.75 KB)

回復 1# tommy.lin
  1. Sub ex()
  2. With Sheets("Sheet1")
  3. If Application.CountA(.[B:B]) = 0 Then Exit Sub
  4.    For Each a In .Range("B:B").SpecialCells(xlCellTypeConstants)
  5.       With Sheets("Data")
  6.       Set c = .Rows(1).Find(a, lookat:=xlWhole)
  7.       k = IIf(Sheets("result").Cells(1, .Columns.Count).End(xlToLeft) = "", 0, 1)
  8.       Range(c, c.End(xlDown)).Copy Sheets("result").Cells(1, .Columns.Count).End(xlToLeft).Offset(, k)
  9.       End With
  10.    Next
  11. End With
  12. End Sub
複製代碼
學海無涯_不恥下問

TOP

感謝版主....不過程式太精簡@@ 完全不瞭解個步驟做了甚麼....

TOP

請教版主有推薦的書? 可以查到有關版主的code

TOP

回復 4# tommy.lin
不懂的地方按F1看說明是最好的書籍   
Sub ex()
With Sheets("Sheet1")
If Application.CountA(.[B:B]) = 0 Then Exit Sub  'B欄無資料就跳出程序
   For Each a In .Range("B:B").SpecialCells(xlCellTypeConstants)  '循環每個B欄的資料
      With Sheets("Data")
      Set c = .Rows(1).Find(a, lookat:=xlWhole)  '在Sheets("Data")第一列找尋
      k = IIf(Sheets("result").Cells(1, .Columns.Count).End(xlToLeft) = "", 0, 1)  '假如要複製的目標位置在Sheets("result")的A欄,位移量為0
      Range(c, c.End(xlDown)).Copy Sheets("result").Cells(1, .Columns.Count).End(xlToLeft).Offset(, k) '複製資料
      End With
   Next
End With
End Sub
學海無涯_不恥下問

TOP

        靜思自在 : 信心、毅力、勇氣三者具備,則天下沒有做不成的事。
返回列表 上一主題