2014-03-27 128 views
0

选择最后一个非空行昨天我问这个问题,但答案不能解决它... Selecting a range until at least one column has numeric value故障与参照

的问题是:

我有一个范围内的一些列和一些行作为基准,所以式是这样该范围(即由118行7列):

{IFERROR(HLOOKUP(Data!D371:D478;Data!B361:HU367;4;FALSKT);"NA")} 

然后我复制范围(where only 60 rows are non-blank and the rest of the rows are blank cells)到其他范围内具有:

=IF(ChosenData!B196="NA";"";ChosenData!B196) 

等等...

我然后使用VBA来将其复制到其他纸在我的工作簿:

Sub GetRet() 
    Worksheets("ChosenData").Select 
    Range("J195").CurrentRegion.Select 
    Selection.Copy 

    Worksheets("Analys").Select 
    Range("L10").Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 

End Sub 

子上面选择所有的118行but I only want to select only the rows until the row where at least one of the columns is non-blank

最后发表建议使用:

Lastrow = Evaluate("=MATCH("""",L10:L1000&M10:M1000&N10:N1000&O1:O1000&P10:P1000&Q10:Q1000&R10:R1000,0)") 

但是这种解决方案选择一些兰多行(which is non-blank)!

最好的问候!

有没有人有建议?

+0

循环througnt行:'对于i = 10 1000'和检查你所需要的所有列是空白。如果是这样 - 记住'我' - 这是你的'lastrow'和'退出' –

+0

@simoco我是新来的Excel,来自R ...你能请张贴一个答案,一个子?最好的问候:) – user1665355

回答

1

试试这个:

Sub test() 
    Dim lastrow As Long 
    Dim i As Long 

    With Worksheets("ChosenData") 
     For i = 10 To 1000 
      'compare concatenation of columns L:Q with empty string 
      If Trim(Join(Application.Transpose(Application.Transpose(.Range("L" & i & ":Q" & i).Value)), "")) = "" Then 
       lastrow = i 
       Exit For 
      End If 
     Next 
    End With 

    MsgBox "Lastrow is:" & lastrow 
End Sub 

,如果你有意思Join作品在这个例子中如何考虑@Tim Williams answer here

Futher改良效果,你可以在循环改变1000last row of entire sheet

+0

@simoco ...我运行该子,但它不返回任何东西:/不是MsgBox至少... – user1665355

+0

对不起,我已经更新了我的代码,现在尝试(应该有'Exit For' 'Exit Sub' in loop) –

+0

太棒了!非常好的答案!现在试着拿到那一行,所以我正确选择了'L10:R67':P – user1665355