標題:
[發問]
Excel問題
[打印本頁]
作者:
黃志全
時間:
2015-10-25 09:51
標題:
Excel問題
Excel問題
我在access中有一個Table,內有3個column分別為人名,欄位值,列位值,請問我要在excel中能依據欄I 位值和列位值座標自動顯示人名應如何達成。
人名 欄位值 列位值
黃甲乙 15 12
李丙丁 15 17
李泰山 16 19
作者:
hcm19522
時間:
2015-10-25 11:21
http://blog.xuite.net/hcm19522/twblog/352087114
作者:
lpk187
時間:
2015-10-25 11:40
本帖最後由 lpk187 於 2015-10-25 11:47 編輯
回復
1#
黃志全
若用一般函數!我不會,不過利用VBA可以很容易達成你需要的答案
Public Sub ex()
Dim myCon As Object
Dim myRs As Object
Dim TabName$, Sql$, i, arr
Set myCon = CreateObject("ADODB.Connection")
Set myRs = CreateObject("ADODB.Recordset")
myCon.Open "provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & ThisWorkbook.Path & "\人員.accdb;" '路徑用本程式路徑相同資料庫名稱為"人員.accdb"
TabName = "人員" 'Tabel 名稱
Sql = "SELECT * FROM " & TabName & "';" 'SQL語法,在 TabName 表單中拿出所有項目
Set myRs = myCon.Execute(Sql)
arr = myRs.GetRows '取出 Recordset 的項目成為陣列
For i = 0 To UBound(arr, 2)
Cells(arr(1, i), arr(2, i)) = arr(0, i) '
Next
myRs.Close
myCon.Close
Set myRs = Nothing
Set myCon = Nothing
End Sub
複製代碼
作者:
yen956
時間:
2015-10-26 12:14
本帖最後由 yen956 於 2015-10-26 12:18 編輯
回復
3#
lpk187
謝謝 lpk187 大大, 又學到一招,
但 Cells(arr(1, i), arr(2, i)) = arr(0, i) '
似為 Cells(arr(2, i), arr(1, i)) = arr(0, i) 'arr(2, i)列位值, arr(1, i)欄位值
之手誤! 總之, 謝謝!!
我改用
Do While Not myRs.EOF
Cells(myRs("列位值"), myRs("欄位值")) = myRs("人名")
myRs.MoveNext
Loop
聽說速度較慢, 但較不易手誤!
作者:
lpk187
時間:
2015-10-26 13:13
回復
4#
yen956
謝謝更正,把arr = myRs.GetRows取出陣列,只是讓人家容易在區域變數視窗中觀察其中的值,也沒有比較快,
利於學習而已,實際上還是要用你的方式去做
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)