返回列表 上一主題 發帖

[發問] 如何將ARR資料轉入B欄的驗證清單

本帖最後由 singo1232001 於 2022-12-21 11:15 編輯

回復 5# Andy2483


1.字典本身是物件

2.創建字典d後,字典本身會順便創建   d.keys  跟d.items 兩個一維陣列

3.這兩個陣列可直接取用
   但與一般的陣列不同
   無法直接修改(可讀不可改)
  
   要修改一樣得從字典物件去修
   或者
   如前幾樓的方式 先把資料匯入新的arr陣列 改用arr修改處理資料  


補充:在字典與陣列互相欠套的各種方式中  ( 物件包陣列 物件包物件  陣列包物件  陣列包陣列)
         只要陣列在物件之下,皆不能修改 只能讀取,所以只有第一次整組匯入的機會,一進去就不能再改
         只有陣列存在陣列下,才能修改子陣列   
         例如:二維陣列ar(1,1) 或 第二層陣列ar(1)(1)
         這兩種陣列也都可以叫二維陣列 不容易區分 實務上並沒有特別區分講法
          因為在維度的概念上,是一樣的 ,只有效率上會有些許差別,跟應用上有些取差別

TOP

回復 10# dou10801


    Sub SortArray()
  arr = Array("a", "b", "c", "d", "e", "C", "b")
  'arr = Y.keys()
  QuickSort arr, LBound(arr), UBound(arr)
  Debug.Print Join(arr, ",")
End Sub

Function QuickSort(ByRef ar, ByVal iLo As Long, ByVal iHi As Long)
  Dim pivot As Variant, lo, hi As Long
  
  lo = iLo: hi = iHi
  pivot = UCase(ar((lo + hi) \ 2))
  
  While lo <= hi
    While (UCase(ar(lo)) < pivot And UCase(lo) < UCase(iHi)): lo = lo + 1: Wend
    While (UCase(ar(hi)) > pivot And UCase(hi) > UCase(iLo)): hi = hi - 1: Wend
    If (lo <= hi) Then
      tmp = ar(lo): ar(lo) = ar(hi): ar(hi) = tmp
      lo = lo + 1: hi = hi - 1: tmp = ""
    End If
  Wend
  
  If hi > iLo Then QuickSort ar, iLo, hi
  If lo < iHi Then QuickSort ar, lo, iHi
End Function

TOP

本帖最後由 singo1232001 於 2023-3-2 09:44 編輯

回復 14# Scott090

也有調用SQL的寫法   此種寫法要創一張名為"sortSQL"的工作表,表可隱藏  檔案要有檔名
Sub SortArray()
arr = Array("a", "b", "c", "d", "e", "C", "b")
orderSQL arr
Debug.Print Join(arr, ",")
End Sub

Function orderSQL(ar)
With CreateObject("adodb.connection"): V = Application.Version
If V >= 12 Then V = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0; "
If V < 12 Then V = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0; "
.Open V & "Data Source=" & ThisWorkbook.FullName
Set s = Sheets("sortSQL"): s.[A:A].ClearContents: s.[a1] = "sort"
s.[a2].Resize(UBound(ar) + 1, 1) = Application.Transpose(ar)
q = "select * from [sortSQL$A:A] order by sort"
ar = Application.Index(.Execute(q).getrows, 1, 0): End With
End Function

調用SQL排序.zip (16.04 KB)

TOP

        靜思自在 : 話多不如話少,話少不如話好。
返回列表 上一主題