国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
(18)數(shù)組,Split拆分,join合并,Filter搜索

http://www.51zxw.net/study.asp?vip=10241777  資料學(xué)習(xí)的網(wǎng)址

''數(shù)組
''數(shù)組就是一個列或一組數(shù)據(jù)表
'數(shù)組存儲在內(nèi)存中 A.讀寫速度快 B.永遠無法保存
''數(shù)組的分類 一般分為:1維 ,2維,3維 ....60維
Sub shuzuText()
Dim arr1(3)        '4個 從0開始
Dim arr2(1 To 3)  '3個  從1開始
Dim arr3(1 To 3, 1 To 2)   '6個  3行2列
Dim arr4(3, 2)           '12個  0-3 ,0-2    4行3列
End Sub
Sub text1()
Dim arr1(0 To 3)
arr2 = [{"A","B","C","D"}]
arr3 = Application.Transpose([{1;2;3;4}])

arr4 = [{"張","1";"王","2";"陳","3"}]      '''      用 ,號是隔列     用 ;  隔行
''array 公式
arr5 = Array(1, 2, 3, 4)
arr6 = Array(Array("a", "b"), Array(1, 2, 3))
End Sub
Sub 向數(shù)組中直接寫入數(shù)據(jù)()
Dim arr(1 To 10)
arr(1) = "我"
arr(2) = "是"
arr(3) = "誰"
''數(shù)組循環(huán)寫入()
Dim arr1(1 To 4)
Dim rng As Range
For Each rng In Range("a1:a3")
n = n + 1
arr1(n) = rng
Next
''寫入一般數(shù)組
Dim arry()   ''動態(tài)的
arry = Array("A", "B", "C")
End Sub
Sub 單元格區(qū)域數(shù)據(jù)批量寫入數(shù)組()
''一行一列可轉(zhuǎn)為一維數(shù)組   向數(shù)組中寫入多行 是二維數(shù)組
arr = [a1:a3]                        ''豎向  二維數(shù)組   1,1   2,1   3,1
arr = Application.Transpose([a1:a3])    ''Transpose 轉(zhuǎn)置為  一維數(shù)組
arr1 = [A1:C3] ''橫向    1,1   1,2  1,3
arr1 = Application.Transpose([A1:C3])        ''先轉(zhuǎn)為豎向
arr1 = Application.Transpose(Application.Transpose([A1:C3])) ''先轉(zhuǎn)為豎向 再轉(zhuǎn)為1維素數(shù)組
End Sub
Sub 取數(shù)組中指定的元素()
arr = [a1:a3]
a = arr(1, 1)
b = arr(2, 1)
End Sub
Sub 數(shù)組循環(huán)取值()
arr = [a1:A10]    ''二維數(shù)組
[b1] = arr(2, 1)
   For i = 1 To 8
     Cells(i, 3) = arr(i, 1)
   Next
End Sub
Sub 數(shù)組一次性賦值()
arr = [a1:a8]
Range("d1:d8") = arr
Range("d1:d" & 8) = arr
End Sub
Sub 用transpose函數(shù)轉(zhuǎn)置()
arr = [a1:E1]
arr1 = Application.Transpose(arr)   ''--橫 變 豎
[a7:d7] = arr1         ''錯誤 :::已經(jīng)變成豎列   只顯示第一列內(nèi)容
[F1:F7] = arr1         ''正常
''要注意兩邊的尺寸
End Sub
Sub 數(shù)組計算()
'在數(shù)組中求和 平均
arr = [a1:b5]
a = WorksheetFunction.Sum(arr)     ''合
a = WorksheetFunction.Average(arr)   ''平均
a = WorksheetFunction.Max(arr)      ''最大
a = WorksheetFunction.Min(arr)     ''最下
a = WorksheetFunction.Small(arr, 2)   ''第2個最小的
a = WorksheetFunction.Large(arr, 2)   ''第2個最大的
End Sub
Sub 數(shù)組實例()
Dim arr1(1 To 20)   ''用于存儲 數(shù)據(jù)

arr = [b2:c9]
For Each a In arr
   If a > 80 Then
   n = n + 1
   arr1(n) = a     ''存入數(shù)組
   End If
Next
S = WorksheetFunction.Average(arr1)
End Sub
Sub 數(shù)組效率測試一般方法()
t = Timer
Set rng = Cells(Rows.Count, 1).End(xlUp)   ''最后個單元格
arr = Range([a1], rng)
For Each a In arr
    If a > 80 Then
      n = n + 1
      Cells(n, 3) = a
    End If
Next
MsgBox Format(Timer - t, "0.0000")    ''返回反應(yīng)時間
End Sub
Sub 數(shù)組效率測試數(shù)組方法()

'Dim arr1(1 To 999)
Dim arr1(1 To 999, 1 To 1)
t = Timer
Set rng = Cells(Rows.Count, 1).End(xlUp)
arr = Range([a1], rng)     ''數(shù)組寫入
For Each a In arr
If a > 80 Then
   n = n + 1
  ' arr1(n) = a ''將滿足條件的賦值
  arr1(n, 1) = a
End If
Next
'[d3].Resize(n) = Application.Transpose(arr1)  ''轉(zhuǎn)置
[d1].Resize(n, 1) = arr1
End Sub
Sub ULBound()  '上界UBound 下界 LBound
Dim arr(4 To 8, 1 To 3, 1 To 9)
MsgBox UBound(arr, 1)   ''第一維 的 上界
MsgBox LBound(arr, 1)  ''第一維 的 下界
MsgBox UBound(arr, 2)  ''第二維 的 上界
End Sub
Sub 利用數(shù)組提取不重復(fù)的值()
Dim arr1(1 To 10)
Set lastcell = Cells(Rows.Count, 1).End(xlUp)
arr = Range("a1", lastcell)  ''將A列姓名存入數(shù)組
For i = 1 To lastcell.Row ''循環(huán)A列單元格 ''ubound(arr)
  
   For j = 1 To UBound(arr1)   ''用于記錄   循環(huán)跟這個數(shù)組對比
      X = arr(i, 1): y = arr1(j)   ''輔助代碼
          If arr(i, 1) = arr1(j) Then
          GoTo 100    ''有相等跳到下個循環(huán)
          End If
   Next
     ''
     k = k + 1 ''用于累計
     arr1(k) = arr(i, 1)
100:
Next

[e2].Resize(k) = Application.Transpose(arr1)
End Sub
Sub 利用數(shù)組提取不重復(fù)的值并計算()
Dim arr1(1 To 10, 1 To 2)
Set endr = Cells(Rows.Count, 1).End(xlUp)
arr = Range("b1", endr)
For i = 1 To endr.Row ''循環(huán)A列單元格
   
    For j = 1 To UBound(arr1)   ''空的 用于記錄 找到arr1 數(shù)組的最大值,形成循環(huán)
    X = arr(i, 1): y = arr1(j, 1) ''輔助代碼
        If arr(i, 1) = arr1(j, 1) Then  ''循環(huán)判斷單元格  是否等于 arr1
            arr1(j, 2) = arr(i, 2) + arr1(j, 2)  ''如果A列單元格  等于 arr1(j, 1)   將B列單元格的值 賦值給 arr1(j,1) 疊加
           GoTo 100
        End If
    Next

k = k + 1                 ''如果沒有相等
arr1(k, 1) = arr(i, 1)   ''把姓名,值  寫入 arr1  數(shù)組
arr1(k, 2) = arr(i, 2)

100:
Next

[e2].Resize(k, 2) = arr1
End Sub
''有 Redim 重新申明 ,之后可以重新申明數(shù)組的上界,而不是一個估計的值
Sub Redim條件篩選實列()
Dim arr(), arr1()
rn = Cells(Rows.Count, 1).End(xlUp).Address
arr1 = Range("a1", rn)   ''把區(qū)域單元格寫入數(shù)組

m = WorksheetFunction.CountIf(Range("a2", rn), ">=80")   ''統(tǒng)計區(qū)域內(nèi)>=80的個數(shù)
ReDim arr(1 To m)  ''重新確定數(shù)組上限

For Each ar In arr1
   If ar >= 80 Then
      n = n + 1
      arr(n) = ar
   End If

Next
[e1].Resize(UBound(arr)) = Application.Transpose(arr)
End Sub
Sub 數(shù)組重新定義保存()
Dim arr()
i = 9
arr = [{1,2,3}]
ReDim Preserve arr(1 To 5)   ''重新定義數(shù)組 并保存之前的數(shù)組
ReDim Preserve arr(1 To 9)
ReDim arr(1 To 9)
End Sub
Sub 動態(tài)數(shù)組多表合并()  ''利用數(shù)組匯總
Dim rng As Range
Dim arr()

For Each Sh In Sheets   ''對工作簿進行循環(huán)
   If Sh.Name <> "統(tǒng)計" Or Sh.Name <> "加密機密文件" Then
      
   ''Sh.UsedRange.Rows.Count 統(tǒng)計工作簿已使用的區(qū)域
   arr1 = Sh.Range("A1:B" & Sh.UsedRange.Rows.Count)  ''將工作簿數(shù)據(jù)區(qū)域賦值
   act = act + UBound(arr1)                           ''累加各表的行 ,將作為重新聲明arr1
   ReDim Preserve arr(1 To 2, 1 To act)  ''重新聲明 arr 2行 X列
     For j = 1 To UBound(arr1)
        n = n + 1  ''匯總表累計
       arr(1, n) = arr1(j, 1) ''arr1對應(yīng)寫入arr中
       arr(2, n) = arr1(j, 2)
     Next
  End If

Next
Sheets("統(tǒng)計").Range("a1").Resize(n, 2) = Application.Transpose(arr)
End Sub
''
''  Split 函數(shù)(作用于1維數(shù)組)
'返回一個下標從零開始的一堆數(shù)組
Sub Splittext()
Dim i$
i = "a-b-c-d-e-f"
arr = Split(i, "-")  '以橫線為 拆分成一維數(shù)組
[a22].Resize(1, UBound(arr)) = arr

End Sub
Sub 數(shù)據(jù)互換()
[a1].CurrentRegion.Select
arr = [a1].CurrentRegion ''數(shù)組賦值

For Each a In arr      ''對數(shù)組進行循環(huán)
    arr1 = Split(a, "-")
    n = n + 1
   
    Cells(n, 3) = arr1(1) & "-" & arr1(0)
Next
End Sub
''join  函數(shù)作用于1維數(shù)組 返回字符串
Sub join數(shù)據(jù)合并()
i = Sheet4.Cells(Rows.Count, 1).End(xlUp).Row
For j = 1 To i
   Set k = Range(Cells(j, 1), Cells(j, Columns.Count).End(xlToLeft))
   arr = Application.Transpose(Application.Transpose(k))
 Cells(j, 5) = "" & Join(arr, "")

Next
End Sub
''Filter 函數(shù)  filter(要搜索的1維數(shù)組,搜索的字符串,[True/False])
Sub filtertext()  ''對數(shù)組內(nèi)容進行篩選
 
arr = [{"abc","bb","c","ba","dd","nba"}]
a = filter(arr, "b", True)  ''數(shù)組搜索 包含 "B"

a = filter(arr, "b", False)  ''數(shù)組搜索 不包含 "B"

End Sub


''支持數(shù)組的函數(shù) sumif ,countif,match,index ,vlookup
Sub indextext()
arr = [a2:C13]
arr1 = WorksheetFunction.Index(arr, 0, 2)  ''取該數(shù)組的第2列    如行不為0形不成數(shù)組

arr2 = WorksheetFunction.Index(arr, 3, 0)  ''去該數(shù)組的第3行

End Sub

Sub 查詢系統(tǒng)()
[F1:n99].Clear
arr = Range("A1", Cells(Rows.Count, "c").End(xlUp))
For i = 1 To UBound(arr)
       If arr(i, 1) Like [e1] Then       ''
       n = n + 1               '' 擴展一個區(qū)域用于存放數(shù)組
      Cells(n, "i").Resize(1, 3) = WorksheetFunction.Index(arr, 1, 0)  ''取該數(shù)組的行
     End If
Next

End Sub

Sub VBAs數(shù)組格式化單元格()
Cells.ClearFormats   ''清除格式
'arr = Range("c2:c" & Cells(Rows.Count).End(xlUp).Row)  ''該列形成   數(shù)組
arr = Range("c2:c10")  ''該列形成   數(shù)組
For i = 1 To UBound(arr)
   If arr(i, 1) > 300 Then  ''
      Set rng = Cells(i + 1, "e").EntireRow.Range("a1:c1")  ''第2列開始   取這整行
      X = rng.Address
      n = n + 1
         If n = 1 Then
          Set rngs = rng
         Else
          Set rngs = Union(rngs, rng)  '單元格合并
           y = rngs.Address
        End If
   End If
Next
rngs.Interior.ColorIndex = 9
End Sub
Sub 排序()
arr = Selection
For i = 1 To UBound(arr)
  For j = i + 1 To undound    ''單列相互對比
       If arr(i, 1) > arr(j, 1) Then
      
          k = arr(i, 1)     ''數(shù)組 位子互換
          arr(i, 1) = arr(j, 1)
          arr(j, 1) = k
      End If
  Next
Next

[g1].Resize(UBound(arr)) = arr
End Sub
Sub VBA數(shù)組分類匯總()
 
 Dim arr1()
arr = Range("a2:c10")     ''賦值區(qū)域
For i = 1 To UBound(arr)
  ReDim Preserve arr1(1 To 2, 1 To n + 1)
  For j = 1 To UBound(arr1, 2)               '''求這個數(shù)組2維的上界
      If arr1(1, j) = arr(i, 1) Then      ''是否和arr 數(shù)組記錄相等
        arr1(2, j) = arr1(2, j) + arr(i, 2)  '' 相等就相加
        GoTo 100
      End If
  Next
 
 
  n = n + 1
  arr1(1, n) = arr(i, 1)    ''如果arr1 不等于arr當(dāng)前數(shù)組記錄 則把當(dāng)前的數(shù)組記錄保存在arr1中
  arr1(2, n) = arr(i, 2)    ''第 X行  1,2 列  記錄保存
100:
Next


[a15].Resize(n, 2) = Application.Transpose(arr1)
End Sub

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
帶您走進VBA數(shù)組7
VBA學(xué)習(xí)筆記(4)
零鈔
VBA數(shù)組學(xué)習(xí)筆記
Excel 數(shù)組精華
Excel VBA 9.4 數(shù)組寫入excel的方法和技巧
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服