使用Excel 2003 VBA 功能, 當輸入ID能自動產生完整的資料內容
需求如下:
按下"輸入ID"後, 能將"raw data"sheet自動將資料帶出
註:我的原始資料有多筆資料,且空白位置不一定,並能將位置累計加總至三筆資料補滿就不寫入資料(参閲尋找內容Sheet)
麻煩大家了!


Private Sub CommandButton1_Click()
Dim R As Integer, C As Integer
Dim SC_Area As Range, AreaRow As Range
Dim tmpArr(1 To 3, 1 To 3)
With Worksheets("Raw data").UsedRange 'Raw data 被查詢的工作表
For C = 1 To 3
.AutoFilter
.AutoFilter Field:=1, Criteria1:=Range("B1").Text & "-??" 'Range("B1") 要查詢值的位置
.AutoFilter Field:=1 + C, Criteria1:="<>"
R = 0
For Each SC_Area In .SpecialCells(xlCellTypeVisible).Areas
For Each AreaRow In SC_Area.Rows
Select Case (R)
Case 1, 2, 3
tmpArr(R, C) = AreaRow.Columns(1 + C).Text
Case 4
Exit For
End Select
R = R + 1
Next AreaRow
Next SC_Area
Next C
.AutoFilter
End With
Range("B4:D6") = tmpArr ' Range("B4:D6") 要顯示結果的位置
End Sub
*小白* wrote:
你好,1.資料抓取...(恕刪)
Private Sub CommandButton3_Click()
Dim R As Integer, C As Integer
Dim SC_Area As Range, AreaRange As Range, ToRange As Range, FRange As Range
Dim tmpArr()
Set ToRange = Range("F4:J18") '要顯示結果的位置
ReDim tmpArr(ToRange.Rows.Count - 1, 4)
ToRange.ClearContents
With Worksheets("輸入表").UsedRange '被查詢的工作表
Set FRange = .Range("E6:AV6") '被查詢的第一筆資料位置
.AutoFilter
.AutoFilter Field:=1, Criteria1:=Range("I2").Text & "-????" 'Range("I2") 要查詢值的位置
For R = 0 To ToRange.Rows.Count - 1
C = 0
For Each SC_Area In .Offset(FRange.Row - 1, FRange.Column - 1 + (R * 3)).Resize(, 3) _
.SpecialCells(xlCellTypeVisible).Areas 'R*3 因為 A1~L 各有3個欄
For Each AreaRange In SC_Area
If C >= 5 Then
Exit For
ElseIf AreaRange.Text <> "" Then
tmpArr(R, C) = AreaRange.Text
C = C + 1
End If
Next AreaRange
Next SC_Area
Next R
.AutoFilter
End With
ToRange = tmpArr
End Sub