簡體   English   中英

如果列A包含文本,列G為空白,則將行復制到新電子表格

[英]if column A has text and column G is blank then copy row to new spreadsheet

我正在嘗試為下游應用程序中的人員創建摘要列表,以供多台生產機器使用。 每台機器都將有自己的標簽來請求材料,我希望將所有請求匯總在一個標簽上(稱為“ Core_Cutter_List”)。

因此,基本上,我試圖創建一個VBA,該行將從電子表格“ 2”的一行復制到電子表格“ Core_Cutter_List”的下一個空白行。 如果列A中有文本,列G為空白,我希望它復制。 我對VBA的了解有限。 我發現的代碼只能測試我的條件之一,即G列為空,但基本上它遍歷了文件中的每個單元格。 您知道如何添加帶有文本的A列的其他條件,以使它不會遍歷工作表中的每個單元格嗎? 謝謝你的幫助!

Sub Test()
'
' Test Macro
'

  Sheets("2").Select

For Each Cell In Sheets(1).Range("G:G")
    If Cell.Value = "" Then
        matchRow = Cell.Row
        Rows(matchRow & ":" & matchRow).Select
        Selection.Copy

        Sheets("Core_Cutting_List").Select
        ActiveSheet.Rows(matchRow).Select
        ActiveSheet.Paste
        Sheets("2").Select
    End If
Next
End Sub

如果需要兩個條件,則應在IF語句中使用And小心地編寫它們:

If cell.Value = "" And Len(cell.Offset(0,-6)) Then應該可行。

不建議使用“ Select ,但建議從一開始就可以使用 - 如何避免在Excel VBA中使用“選擇”

子波紋管執行以下操作

  • 根據列A中的值確定Worksheets(“ 2”)中最后使用的行
  • 根據第1行中的值確定Worksheets(“ 2”)中最后使用的列
  • 根據列A中的值確定Worksheets(“ Core_Cutter_List”)中最后使用的行
  • 遍歷工作表中所有使用的行(“ 2”)
    • 如果列A中的單元格不為空且列G中的單元格為空
      • 將整行復制到工作表中的下一個空行(“ Core_Cutter_List”)
      • 增加工作表的下一個空行(“ Core_Cutter_List”)
    • 循環到Worksheets(“ 2”)中的下一個使用的行

Option Explicit

Public Sub CopyRows()
    Dim ws1 As Worksheet, ws2 As Worksheet, ws1r As Range, ws2r As Range
    Dim ws1lr As Long, ws1lc As Long, ws2lr As Long, i As Long

    Set ws1 = ThisWorkbook.Worksheets("2")
    Set ws2 = ThisWorkbook.Worksheets("Core_Cutter_List")

    ws1lr = ws1.Range("A" & Rows.Count).End(xlUp).Row        'last row in "2"
    ws1lc = ws1.Cells(1, Columns.Count).End(xlToLeft).Column 'last col in "2"
    ws2lr = ws2.Range("A" & Rows.Count).End(xlUp).Row + 1    'last row in "Core_Cutter"

    For i = 1 To ws1lr

        If Len(ws1.Cells(i, "A")) > 0 And Len(ws1.Cells(i, "G")) = 0 Then

            Set ws1r = ws1.Range(ws1.Cells(i, 1), ws1.Cells(i, ws1lc))
            Set ws2r = ws2.Range(ws2.Cells(ws2lr, 1), ws2.Cells(ws2lr, ws1lc))

            ws2r.Value2 = ws1r.Value2
            ws2lr = ws2lr + 1
        End If

    Next i

End Sub

我的測試文件

工作表( “2”)

工作表( “Core_Cutter_List”)

工作表( “Core_Cutter_List”)

工作表( “Core_Cutter_List”)

暫無
暫無

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

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