簡體   English   中英

將數據從 1 個工作表復制到另一個狀態為已更新的工作表

[英]Copy data from 1 sheet to another sheet with a status as updated

我是 vba 宏的新手。 我在第一表 A 和 B 列中有一些數據,我想將它們傳輸到表 2 中,狀態在 c 列中更新。 我創建的這個宏是為了將數據從 sheet1 移動到 sheet2,其中 sheet1 在復制它之后從 sheet1 中刪除數據,然后粘貼到 sheet2 中,狀態如下面 c 列中更新是我的代碼......請幫助pppppppppppppp...... .. 范圍內調試 早些時候,我使用 for 和 if 語句編碼它正在處理某些值,而對於某些值則不是,例如,FHH 顯示在 c 列中顯示為已更新,但 FXV 的 FXV 列 c 狀態為空白。 現在我再次嘗試選擇它作為一個范圍(i,“B”)進行調試......我想要的是讀取列中的值並顯示列C中更新的狀態......請幫助我也不是能夠定義范圍我的意思是它應該適用於整個 B 列和 C 列,現在限制只到 999 任何人都可以幫助我,下面是我的代碼...

Sub CopyData()

Dim i As Integer
Dim ws As Excel.Worksheet

'Copies and cuts the data from sheet1(TIS) and paste the same in sheet2

    Worksheets("SampleFile").Range("A2:A9999").Copy Worksheets("sheet2").Range("A2") 'Copy
    Worksheets("SampleFile").Range("A2:A9999").Cut Worksheets("sheet2").Range("A2") 'Cut
    Worksheets("SampleFile").Range("B2:B9999").Copy Worksheets("sheet2").Range("B2") 'Copy
    Worksheets("SampleFile").Range("B2:B9999").Cut Worksheets("sheet2").Range("B2") 'Cut
    
'Sheet 2 col C data updated
    
For i = 2 To 9999
   With ws.Cells(i, "B")
     Select Case .Value
      Case "FXV": .Range("C" & i).Value = "Updated"
      Case "FHH": .Range("C" & i).Value = "Updated"
      Case "FGA": .Range("C" & i).Value = "Updated"
      Case "FST": .Range("C" & i).Value = "Updated"
      Case "FFJ": .Range("C" & i).Value = "Updated"
      End Select
     End With
     Next i
     
   ' If Worksheets("sheet2").Range("B" & i).Value = "FGA" Then
'         Worksheets("sheet2").Range("C" & i).Value = "Updated"
         
 '        ElseIf Worksheets("sheet2").Range("B" & i).Value = "FST" Then
         
  '       Worksheets("sheet2").Range("C" & i).Value = "Updated"
         
   '      ElseIf Worksheets("sheet2").Range("B" & i).Value = "FCT" Then
         
    '     Worksheets("sheet2").Range("C" & i).Value = "Updated"
         
      '   ElseIf Worksheets("sheet2").Range("B" & i).Value = "FFH" Then
     
     '    Worksheets("sheet2").Range("C" & i).Value = "Updated"
         
      '   ElseIf Worksheets("sheet2").Range("B" & i).Value = "FFJ" Then
         
       '  Worksheets("sheet2").Range("C" & i).Value = "Updated"
         
        ' ElseIf Worksheets("sheet2").Range("B" & i).Value = "FXV" Then
         
         'Worksheets("sheet2").Range("C" & i).Value = "Updated"
       
       'End If
       

End Sub

查看代碼中的注釋

Dim ws As Excel.Worksheet

set ws = Worksheets("sheet2") '<< this needs to be set to a worksheet

'why copy *and* cut ?
With Worksheets("SampleFile")
    .Range("A2:A9999").Copy ws.Range("A2") 'Copy
    .Range("A2:A9999").Cut ws.Range("A2") 'Cut
    .Range("B2:B9999").Copy ws.Range("B2") 'Copy
    .Range("B2:B9999").Cut ws.Range("B2") 'Cut
End With
    
For i = 2 To ws.cells(ws.rows.count, "B").End(xlUp).Row
   With ws.Cells(i, "B")
       Select Case .Value
           'you can use a list of values
           Case "FXV","FHH","FGA","FST","FFJ"
                .Offset(0, 1).Value = "Updated" 'use Offset()
       End Select
   End With
Next i

暫無
暫無

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

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