- 帖子
- 1447
- 主題
- 40
- 精華
- 0
- 積分
- 1471
- 點名
- 0
- 作業系統
- Windows 7
- 軟體版本
- Excel 2010 & 2016
- 閱讀權限
- 50
- 性別
- 男
- 來自
- 台灣
- 註冊時間
- 2020-7-15
- 最後登錄
- 2025-5-5
|
4#
發表於 2022-9-2 16:48
| 只看該作者
回復 1# JT1221
另類查詢方式供前輩參考
謝謝前輩發表此帖
Option Explicit
Sub test()
Dim i, x, Arr, Brr(1 To 100000, 1 To 9), c, j, n, Crr
Arr = Sheets("總表").Range("A1").CurrentRegion
Crr = Sheets("查詢").Range("A1").CurrentRegion
c = Sheets("總表").UsedRange.Columns.Count
For i = 1 To UBound(Arr)
For j = 8 To c
If Trim(Arr(i, j)) = "" Or Trim(Arr(i, j)) = "A=B,A=C→B=C" Then
Exit For
Else
n = n + 1
Brr(n, 8) = Trim(Arr(i, j))
For x = 1 To 7
Brr(n, x) = Trim(Arr(i, x))
Next
End If
Next
Next
Workbooks.Add
Cells.Font.Name = "微軟正黑體"
[A1].Resize(100000, 9) = Brr
Cells.Columns.AutoFit
Cells.Rows.AutoFit
Cells.Columns.AutoFit
[2:2].Select
ActiveWindow.FreezePanes = True
[A1].AutoFilter
[A1].Select
ActiveSheet.Name = "新總表"
Sheets.Add.Name = "新查詢"
[A1].Resize(UBound(Crr), 4) = Crr
For i = 1 To UBound(Crr)
For x = 2 To UBound(Brr)
If Brr(x, 1) = Crr(i, 1) Then
If Crr(i, 2) = "" Then
Crr(i, 2) = Brr(x, 3)
End If
If Crr(i, 3) = "" Then
Crr(i, 3) = Brr(x, 6)
End If
If Crr(i, 4) = "" Then
Crr(i, 4) = Brr(x, 8)
Else
Crr(i, 4) = Crr(i, 4) & vbLf & Brr(x, 8)
End If
End If
Next
Next
[A1].Resize(UBound(Crr), 4) = Crr
[A:D].Columns.AutoFit
Cells.Rows.AutoFit
Cells.Borders.LineStyle = xlContinuous
[2:2].Select
ActiveWindow.FreezePanes = True
[A1].AutoFilter
[A1].Select
End Sub |
|