返回列表 上一主題 發帖

[發問] Excel VBA 請益

[發問] Excel VBA 請益

本帖最後由 zz0660 於 2021-7-21 00:19 編輯


請問 寫EXCEL的VBA 如何判斷 AA表單的C1儲存格內容的英文字,來決定QQ表單對應的地方複製,然後貼在AA表單 C2的位置?
請各位協助,謝謝!

QQ.JPG (95.93 KB)

QQ.JPG

本帖最後由 samwang 於 2021-7-21 08:17 編輯

回復 1# zz0660

請測試看看,謝謝

Sub test()
Dim Arr, T, T1, i&, j&
T = Sheets("AA").Range("c1")
With Sheets("QQ")
    Arr = .Range("a1:n" & .[b65536].End(3).Row)
    For i = 1 To UBound(Arr) Step 9
        For j = 2 To UBound(Arr, 2) Step 8
            T1 = Arr(i, j): If T1 = "" Then GoTo 99
            If T1 = T Then
                .Cells(i, j).Offset(1).Resize(4, 5).Copy Sheets("AA").[c2]
                Exit Sub
            End If
99:     Next
    Next
End With
End Sub

TOP

回復 1# zz0660

放在 AA表單的模組

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$C$1" Then
        Set xQ = Sheets("QQ").Cells.Find(AA.[C1], LookIn:=xlValues, LookAt:=xlWhole)
        xQ(2, 1).Resize(8, 8).Copy Sheets("AA").[c2]
    End If
End Sub
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 2# samwang

Arr = .Range("a1:n" & .[b65536].End(3).Row)

For i = 1 To UBound(Arr) Step 9
        For j = 2 To UBound(Arr, 2) Step 8

這幾句是什麼意思?

TOP

回復  samwang

Arr = .Range("a1:n" & ..End(3).Row)

For i = 1 To UBound(Arr) Step 9
        Fo ...
zz0660 發表於 2021-7-21 23:24


step 9 和 step 8 可移除,因為看你的查詢資料有固定才這樣設定,謝謝

Arr = .Range("a1:n" & ..End(3).Row)   '將要查詢資料裝入數組  
    For i = 1 To UBound(Arr) Step 9     '從第1列開始循環,每次跳9列
        For j = 2 To UBound(Arr, 2) Step 8   '從第2欄開始循環,每次跳8欄

TOP

本帖最後由 zz0660 於 2021-7-22 22:50 編輯

回復 5# samwang


    您好,假設QQ裡面的數字都有公式組成,但顯示在AA的地方,只想要單純的數字,請問要多加什麼程式碼?

For j = 2 To UBound(Arr, 2) Step 8   這個要怎麼改成第一欄?
直接把2改成1的話程式會錯誤。

TOP

回復 6# zz0660


您好,假設QQ裡面的數字都有公式組成,但顯示在AA的地方,只想要單純的數字,請問要多加什麼程式碼?
>> 不太能理解您的問題,可否提供附件加以說明,謝謝

For j = 2 To UBound(Arr, 2) Step 8   這個要怎麼改成第一欄?
直接把2改成1的話程式會錯誤。   
>> 2改成1的話程式不會錯誤,可否提供檔案,謝謝

TOP

回復 7# samwang

在此提供檔案 AAQQ.rar (24.62 KB)
QQ貼上的內容 如AA那樣,但只想顯示純數字,還有AA表單有T1~T3的按鈕,按T1就會顯示T1的資料,就這樣囉,感謝您。

TOP

回復 8# zz0660


按T1就會顯示T1的資料
>> T1是指哪裡資料? T2?? T3??

TOP

回復 8# zz0660

請測試看看,下面是T1,如果要T2時T1和T3移除就可以,T3同上,謝謝

Sub T1()
Dim Arr, T, T1, i&, j&
T = Sheets("AA").Range("c1")
With Sheets("QQ")
    Arr = .Range("a1:h" & .[b65536].End(3).Row) 'T1   T1,T2,T3請自行選擇更換
    'Arr = .Range("j1:q" & .[k65536].End(3).Row) 'T2
    'Arr = .Range("s1:z" & .[t65536].End(3).Row) 'T3
    For i = 1 To UBound(Arr) Step 19
        T1 = Arr(i, 2): If T1 = "" Then GoTo 99
        If T1 = T Then
            Sheets("AA").[B3].Resize(16, 8).Value = .Cells(i, 1).Offset(1).Resize(16, 8).Value
            Exit Sub
        End If
99:  Next
End With
End Sub

TOP

        靜思自在 : 【時間如鑽石】時間對一個有智慧的人而言,就如鑽石般珍貴;但對愚人來說,卻像是一把泥土,一點價值也沒有。
返回列表 上一主題