![](/img/trans.png)
[英]Copy last 3 char of text in one column to another column if cell is blank in excel spreadsheet with vba
[英]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中使用“選擇”
子波紋管執行以下操作
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”)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.