如果A列中的单元格不为空白,则Excel公式仅在其他工作表中显示行

时间:2018-12-13 16:43:24

标签: excel excel-formula

我在一个Excel工作簿中有两个工作表,并且如果列A中有数据,我只想将单元格中有数据的行(从worksheet1放入worksheet2)。我在工作表2中的公式是=IF('Raw Data'!A2<>"", 'Raw Data'!A2,),但实际上我不希望它在第3行和第5行中没有数据的情况下完全引入该行。现在,它正在将整个行引入:

 sample data1

 sample data2

您会看到,如果没有数据,它仍会将行带入工作表2中。有什么想法只将数据带入行吗?

Sub DataInCell()

Dim rw As Long
rw = 2

' Select initial sheet to copy from
Sheets("Raw Data").Select


' Find the last row of data - xlUp will check from the bottom of the spreadsheet up.
FinalRow = Cells(Rows.Count, 1).End(xlUp).Row
' For loop through each row
For x = 2 To FinalRow

       If Cells(x, 1).Value <> 0 Then
        Range("A" & x & ":C" & x).Copy
       Sheets("Sheet1").Select
        NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1 'Continue incrementing through the rows.
        Cells(NextRow, 1).Select ' Find the next row.
        ActiveSheet.Cells(NextRow, "A").PasteSpecial xlPasteAll ' Paste information.
        Sheets("Raw Data").Select 'Reselect sheet to copy from. Probably uneccessary.
        End If

Next x
End Sub

1 个答案:

答案 0 :(得分:0)

在第3行和第4行上更新工作表名称后,您将看到代码覆盖了整行。如果需要部分范围,可以使用Range(Cells, Cells)进行修改。

Option Explicit

Sub Non_Blanks()

Dim ms As Worksheet: Set ms = ThisWorkbook.Sheets("Sheet1") '<-- Master Sheet
Dim ns As Worksheet: Set ns = ThisWorkbook.Sheets("Sheet2") '<-- New Sheet

Dim i As Long, MoveMe As Range, LR As Long

For i = 2 To ms.Range("B" & ms.Rows.Count).End(xlUp).Row
    If ms.Range("A" & i) = "*" Then
        If Not MoveMe Is Nothing Then
            Set MoveMe = Union(MoveMe, ms.Range("A" & i))
        Else
            Set MoveMe = ms.Range("A" & i)
        End If
    End If
Next i

If Not MoveMe Is Nothing Then
    LR = ns.Range("A" & ns.Rows.Count).End(xlUp).Offset(1).Row
    MoveMe.EntireRow.Copy
    ns.Range("A" & LR).PasteSpecial xlPasteValuesAndNumberFormats
End If

End Sub