簡體   English   中英

VBA-將特定值從一個工作表列復制到下一個工作表行

[英]VBA - Copy specific value from one sheet column to next sheet row

我需要幫助,我有2張紙,在第一張紙上,我用不同的數字(1到50)記錄時間,我想將時間戳復制到相同數字的新紙上。 工作表1:工作表1示例

工作表2:工作表2示例

請提供VBA代碼幫助以自動完成此操作。

Sub mytry()
Dim lRow As Long
Dim lRow1 As Long
Dim time1 As Date

Sheets("Time").Select

lRow = Range("A" & Rows.Count).End(xlUp).Row

For iCntr = 2 To lRow

num1 = Cells(iCntr, 1)

    Sheets("Rec").Select
    lRow1 = Range("A" & Rows.Count).End(xlUp).Row
    For iCntr2 = 2 To lRow1
        If Cells(iCntr2, 1) = num1 Then
            time1 = Cells(iCntr2, 2)
            Sheets("Time").Select
            For t1 = 2 To 20
            If Cells(iCntr, t1) = "" Then
            Cells(iCntr, t1) = time1
            End If
            GoTo 1

            Next t1
             1
            Sheets("Rec").Select

        End If


    Next iCntr2

Sheets("Time").Select
Next iCntr

結束子

這不是我做過的最漂亮的事情,但是我要嘗試...

您可能要考慮添加一些變量,因為您知道某些項目將在Sheets(“ Rec”)上的位置:

Dim i as integer
Dim lRow as Long 'Specific to Sheets("Time")
Dim LC1 as Long, LC2 as Long, LC3 as Long 'Up to LC9 in the example for Last Column for Row #

拿走你擁有的東西並滾動,以遍歷Sheets(“ Time”):

lRow = Sheets("Time").Range("A" & Sheets("Time").Rows.Count).End(xlUp).Row

For i = 2 to lRow

我建議您避免在開始時選擇工作表,並隨便使用名稱來指定工作表,或者使用With語句(對於我使用Select Case的路徑,后者可能不太順利)。

然后,您可以在循環內部使用與數字計數等效的Select Case,例如,示例中的9。

Select Case Cells(i,1).Value

Case 1
   LC1=Sheets("Rec").Cells(2, Sheets("Rec").Columns.Count).End(xlToLeft).Column 
   Sheets("Time").Cells(i,2).Copy Sheets("Rec").Cells(2,LC1)

Case 2
   LC2=Sheets("Rec").Cells(3, Sheets("Rec").Columns.Count).End(xlToLeft).Column 
   Sheets("Time").Cells(i,2).Copy Sheets("Rec").Cells(3,LC2)

Case 3
   LC3=Sheets("Rec").Cells(4, Sheets("Rec").Columns.Count).End(xlToLeft).Column 
   Sheets("Time").Cells(i,2).Copy Sheets("Rec").Cells(4,LC3)

End Select

然后,您應該能夠使其運行得非常順利,並確保執行Next i。 這一切看起來像:

Dim i as integer
Dim lRow as Long 
Dim LC1 as Long, LC2 as Long, LC3 as Long 

lRow1 = Sheets("Time").Range("A" & Sheets("Time").Rows.Count).End(xlUp).Row

For i = 2 to lRow

Select Case Cells(i,1).Value

Case 1
   LC1=Sheets("Rec").Cells(2, Sheets("Rec").Columns.Count).End(xlToLeft).Column 
   Sheets("Time").Cells(i,2).Copy Sheets("Rec").Cells(2,LC1)

Case 2
   LC2=Sheets("Rec").Cells(3, Sheets("Rec").Columns.Count).End(xlToLeft).Column 
   Sheets("Time").Cells(i,2).Copy Sheets("Rec").Cells(3,LC2)

Case 3
   LC3=Sheets("Rec").Cells(4, Sheets("Rec").Columns.Count).End(xlToLeft).Column 
   Sheets("Time").Cells(i,2).Copy Sheets("Rec").Cells(4,LC3)

End Select

Next i

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM