返回列表 上一主題 發帖

[發問] Excel問題

[發問] Excel問題

Excel問題
我在access中有一個Table,內有3個column分別為人名,欄位值,列位值,請問我要在excel中能依據欄I 位值和列位值座標自動顯示人名應如何達成。
人名       欄位值       列位值
黃甲乙       15              12
李丙丁       15              17
李泰山       16              19

回復 4# yen956


    謝謝更正,把arr = myRs.GetRows取出陣列,只是讓人家容易在區域變數視窗中觀察其中的值,也沒有比較快,
利於學習而已,實際上還是要用你的方式去做

TOP

本帖最後由 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
聽說速度較慢, 但較不易手誤!

TOP

本帖最後由 lpk187 於 2015-10-25 11:47 編輯

回復 1# 黃志全


    若用一般函數!我不會,不過利用VBA可以很容易達成你需要的答案
  1. Public Sub ex()
  2.     Dim myCon As Object
  3.     Dim myRs As Object
  4.     Dim TabName$, Sql$, i, arr
  5.     Set myCon = CreateObject("ADODB.Connection")
  6.     Set myRs = CreateObject("ADODB.Recordset")
  7.     myCon.Open "provider=Microsoft.ACE.OLEDB.12.0;" & _
  8.                "Data Source=" & ThisWorkbook.Path & "\人員.accdb;" '路徑用本程式路徑相同資料庫名稱為"人員.accdb"
  9.     TabName = "人員" 'Tabel 名稱
  10.     Sql = "SELECT * FROM " & TabName & "';" 'SQL語法,在 TabName 表單中拿出所有項目
  11.     Set myRs = myCon.Execute(Sql)
  12.     arr = myRs.GetRows '取出 Recordset 的項目成為陣列
  13.     For i = 0 To UBound(arr, 2)
  14.         Cells(arr(1, i), arr(2, i)) = arr(0, i) '
  15.     Next
  16.     myRs.Close
  17.     myCon.Close
  18.     Set myRs = Nothing
  19.     Set myCon = Nothing
  20. End Sub
複製代碼

TOP

http://blog.xuite.net/hcm19522/twblog/352087114

TOP

        靜思自在 : 君子為目標,小人為目的。
返回列表 上一主題