Board logo

標題: 請問如何將陣列資料做整理在查找檔顯示出來? [打印本頁]

作者: flask    時間: 2011-8-12 19:38     標題: 請問如何將陣列資料做整理在查找檔顯示出來?

如有上千個檔案它的檔名是A001.XLS....,請問我打開查尋檔案在A1欄位輸入A001按指令按鈕
就可以從A3位置顯示像這樣的格式請問VBA要如何寫?謝謝你
[attach]7397[/attach]
作者: flask    時間: 2011-8-12 21:00

我好象發錯區了!
作者: oobird    時間: 2011-8-12 21:45

  1. Sub yy()
  2.     Dim n%, i%, j%, m%, arr, arr2(), b()
  3.     ActiveSheet.UsedRange.Offset(2, 0) = ""
  4.     Application.ScreenUpdating = False
  5.     Workbooks.Open Filename:=ThisWorkbook.Path & "\" & [a1] & ".xls"
  6.     With ActiveSheet
  7.         n = .[a65536].End(xlUp).Row
  8.         arr = .Range(.[a1], .Cells(n, 5))
  9.         ReDim arr2(1 To 5, 1 To UBound(arr))
  10.     End With
  11.     ActiveWorkbook.Close True
  12.     Set d = CreateObject("scripting.dictionary")
  13.     For i = 1 To n
  14.         If i = 1 Then x = "總計" Else x = arr(i, 4) - arr(i, 5)
  15.         b = Array(arr(i, 1), arr(i, 2), arr(i, 4), arr(i, 5), x)
  16.         If Not d.exists(arr(i, 1)) Then
  17.             m = m + 1
  18.             d(arr(i, 1)) = m
  19.             For j = 1 To 5
  20.                 arr2(j, m) = b(j - 1)
  21.             Next
  22.         Else
  23.             For j = 3 To 5
  24.                 arr2(j, d(arr(i, 1))) = arr2(j, d(arr(i, 1))) + arr(i, j)
  25.             Next
  26.         End If
  27.     Next
  28.     [a3].Resize(m, 5) = Application.Transpose(arr2)
  29.     Application.ScreenUpdating = True
  30. End Sub
複製代碼
[attach]7400[/attach]
作者: flask    時間: 2011-8-13 07:27

謝謝超級版主我知道如何做了,來源檔是否太早關了!讓我有點疑惑,因為超級版主
寫的那會有問題,沒關係我會去了解的,謝謝你的指導....
作者: oobird    時間: 2011-8-13 10:41

本帖最後由 oobird 於 2011-8-13 10:52 編輯

喔,讓我有點疑惑,因為超級版主
寫的那會有問題,沒關係
,哈哈!在下想請教,是哪裡會有問題?
說出來也好讓我學習學習。
作者: flask    時間: 2011-8-13 12:37

超級版主對不起啦!我在試時來源檔close時後面的資料沒顯示出來,所以就把ActiveWorkbook.Close True移到後面就ok了,讓我很疑問為什麼來源檔close
資料是存在哪做處理?所以超級版主那有可能寫錯,是我太菜啦!不見怪..
作者: oobird    時間: 2011-8-13 14:46

Workbooks.Open Filename:=ThisWorkbook.Path & "\" & [a1] & ".xls"
    With ActiveSheet
        n = .[a65536].End(xlUp).Row
        arr = .Range(.[a1], .Cells(n, 5))
執行到這一句時,已把所有數據存在陣列記憶中了,之後的存取都在這個陣列中
打開的活頁簿已經用不著就可以關閉了。
你要移到後面再關也隨你了。不可能移到後面去程式才會ok的。
作者: flask    時間: 2011-8-13 15:36

謝謝超級版主又多學了一點...




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)