標題:
[發問]
請教如何讓VBA自動比對相同數值後,複製到它處?
[打印本頁]
作者:
jonn0510
時間:
2012-8-5 08:56
標題:
請教如何讓VBA自動比對相同數值後,複製到它處?
請教老師:
儲存格E 若等於 儲存格C 時,則複製("B:H") 到M3 如何用VBA來判斷?謝謝
如附件
B C D E F G H
1 17 -6 06 07 16 20
2 14 -6 06 11 16 20
3 26 -5 26 06 16 20
4 20 -9 06 16 22 27
5 17 -6 06 07 16 27
6 17 -6 17 16 20 22
7 -9 -6 06 06 16 31
------------------------------------
B C D E F G H
3 26 -5 26 06 16 20
6 17 -6 17 16 20 22
作者:
kimbal
時間:
2012-8-5 13:02
Sub test()
Dim outRow As Long
outRow = 0
For Each C In Range(Range("C3"), Range("C3").End(xlDown))
If C.Value = C.Offset(0, 2) Then
Range(C.Offset(0, -1), C.Offset(0, 5)).Copy
Range("M3").Offset(outRow).PasteSpecial
outRow = outRow + 1
End If
Next
End Sub
複製代碼
其實,可以考慮一下用篩選 復制方法, 不用慢慢對代碼
作者:
jonn0510
時間:
2012-8-5 20:31
回復
2#
kimbal
kimbal老師:
感謝您的指導,謝謝您
另外您提到"其實,可以考慮一下用篩選 復制方法, 不用慢慢對代碼".原本有打算用篩選,但是資料很龐大,且經常會用到,於是想一勞永逸.所以才會上網請教.
非常感謝您
作者:
diabo
時間:
2012-8-6 00:35
回復
3#
jonn0510
資料龐大可以考慮 SQL 的做法
記得
1. 設定引用項目 Microsoft ActiveX Data Objects 2.8 Library
2. Sheet1的B2:H2 空白的補上欄位名稱...
Sub test()
'建立ADODB Connection物件變數
Dim cn As ADODB.Connection
Set cn = New ADODB.Connection
'建立ADODB Recordset物件變數
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
'建立資料庫連線
With cn
.Provider = "MSDASQL"
.ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};" & _
"DBQ=" & ThisWorkbook.FullName & ";"
.Open
End With
'SQL字串
mySQL = "Select * FROM [Sheet1$B2:H25] WHERE [主]=[副]"
'解決無法釋放記憶體的BUG
ThisWorkbook.ChangeFileAccess xlReadOnly
Set rs = cn.Execute(mySQL)
ThisWorkbook.ChangeFileAccess xlReadWrite
'將結果COPY到指定位置
Sheets("Sheet1").Range("M12").CopyFromRecordset rs
End Sub
複製代碼
作者:
jonn0510
時間:
2012-8-19 20:47
回復
4#
diabo
diabo大大:
不好意思,這麼久才回覆,因為小弟不太能理解 所謂的 SQL 的做法,因此去查了一下書.
可惜有看沒有懂!不過還是要感謝您願意提供方案.謝謝您
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)