Board logo

標題: [發問] 如何搜尋不同分頁的相同名稱欄位(名稱無排序)並條列出來~ [打印本頁]

作者: citizen0923    時間: 2015-9-14 21:23     標題: 如何搜尋不同分頁的相同名稱欄位(名稱無排序)並條列出來~

本帖最後由 citizen0923 於 2015-9-14 21:25 編輯

各位前輩好:

關於如何搜尋不同分頁的相同名稱欄位(名稱無排序)並條列出來,小弟不才已爬文兩三天還是不知從何下手~

目標如下:
--------
分頁A:[搜尋}
搜尋AAA
跳出
AAA 第1筆資料
AAA 第2筆資料
AAA 第3筆資料
--------
分頁B:[列表]
AAA 第1筆資料
BBB  第1筆資料
AAA 第2筆資料
--------
分頁C:[列表]
BBB 第1筆資料
AAA  第3筆資料
BBB 第2筆資料
--------
==============================
目前能試出來的方式只能在同一個分頁裡面達成這個功能
分頁A:[搜尋+列表}
AAA 第1筆資料
BBB  第1筆資料
AAA 第2筆資料

搜尋AAA
AAA 第1筆資料
AAA 第2筆資料

==============================
以上兩個檔案請參閱附件的
[attach]21979[/attach]
==============================
還是想不透如何搜尋跨分頁的資料,
希望各位大大能夠幫忙指點迷津~~有勞前輩費心了謝謝
作者: citizen0923    時間: 2015-9-15 01:55

不好意思~ 忘了提到要是有用VBA的解法也可喔~ 再麻煩大家了~~
作者: GBKEE    時間: 2015-9-15 09:34

本帖最後由 GBKEE 於 2015-9-15 09:35 編輯

回復 2# citizen0923
試試看
  1. Option Explicit
  2. Sub Ex()
  3.     Dim Sh As Worksheet, xlWord As String, Ar(), xAr(), i As Integer, x As Integer
  4.     xlWord = Sheets("查詢").Range("B1")  '要查詢的編號
  5.     For Each Sh In Sheets                'Sheets: 活頁簿的工作表物件集合
  6.         If Sh.Name <> "查詢" Then
  7.             Ar = Sh.UsedRange.Value      'UsedRange(二維陣列): 工作表使用的範圍
  8.             For i = 1 To UBound(Ar)
  9.                 If UCase(Ar(i, 1)) = UCase(xlWord) Then
  10.                     ReDim Preserve xAr(x) '重置陣列元素的索引值,Preserve:保留原有的元素
  11.                     xAr(x) = Application.Index(Ar, i)  '讀取二維陣列中元素
  12.                     x = x + 1
  13.                 End If
  14.             Next
  15.         End If
  16.     Next
  17.     With Sheets("查詢").UsedRange.Offset(4) '這範圍下移4列的範圍
  18.         .Value = ""
  19.         If x > 0 Then
  20.             .Cells(1).Resize(x, UBound(Ar, 2)) = Application.Transpose(Application.Transpose(xAr))
  21.             Application.Transpose'轉置函數
  22.         End If
  23.         MsgBox "查詢 " & IIf(x = 0, "不到 ", "") & xlWord & IIf(x > 0, " OK!", "")
  24.     End With
  25. End Sub
複製代碼

作者: 准提部林    時間: 2015-9-15 17:05

基本的〔篩選〕法:
  1. Sub 篩選貼入()
  2. Dim xStr$, xS As Worksheet, xName$, xE As Range
  3. With ActiveSheet
  4.   Range(.[A1], .UsedRange).Offset(4, 0).EntireRow.Delete
  5.   xName = .Name
  6.   xStr = .[B1]
  7.   If xStr = "" Then Exit Sub
  8. End With
  9.  
  10. For Each xS In Sheets
  11.  If xS.Name <> xName Then
  12.    With xS.UsedRange
  13.      .AutoFilter Field:=1, Criteria1:=xStr
  14.      .Offset(1, 0).Copy [A65536].End(xlUp)(2)
  15.          End With
  16.    xS.AutoFilterMode = False
  17.  End If
  18. Next
  19. End Sub
複製代碼
 
附件下載:
[attach]21986[/attach]
 
作者: citizen0923    時間: 2015-9-20 01:49

前輩日安,參考VBA解法後已經可以正常使用了,真的不勝感激




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