2014-03-26 46 views
0

我有一个问题,选择范围,直到至少有一个列有数值

我有一个数据表:

A  B  C 
    Type Height Length 
    1  2  2 
    2  3  9 
    3  8  2 
      2  3 
    1    0 
        1 

我一直在阅读如何选择范围,但问题我解决不了的是如何选择until the row where at least one column contains a numeric value以上的范围。但问题在于范围是a part of a reference,并且Excel假定使用的行数较大,因为很多行都是空白的并且是参考的一部分。

所以我的问题是:

How do I select the above range until the first row where none of columns A, B or C contain at least one numeric entry, and where the number of used rows is larger because the range is a part of reference

我试图

Sub Choose() 
Dim Lastrow As Integer 
Lastrow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row 
MsgBox Lastrow 
'Range("A2:C" & Lastrow).Select 
End Sub 

但MSGBOX返回118,这是因为我要选择的范围是一个参考的一部分......

有没有人有一个想法?

编辑: 那也不行,还是选择空单元格,因为它是参考...

Sub Sort3() 
Dim oneRange As Range 
Dim aCell As Range 
Worksheets("Analys").Select 
Set oneRange = ActiveCell.CurrentRegion.Range("D1") 
Set aCell = Range("M10") 

oneRange.Sort Key1:=aCell, Order1:=xlDescending, Header:=xlYes 
End Sub 
+0

因为您想查找'第一行,其中列A,B或C都不包含至少一个数字条目'最简单的解决方案是使用循环。如果你想要单线解决方案,你可以使用'Lastrow = Evaluate(“= MATCH(”“”,A:A&B:B&C:C,0)“),但它可能很慢。这个更快一些:'Lastrow = Evaluate(“= MATCH(”“”“,A1:A1000&B1:B1000&C1:C1000,0)”)'但你应该确定'1000'(或任何其他数字)大于lastrow –

+0

@simoco谢谢,但它仍然选择少数行.... 110,而它应该选择118 ... – user1665355

回答

1

如果你有 “破烂” 栏目,如:

sample

,并希望要获得“所有数据”的范围,则:

Sub GetTheBlock() 
    Range("A1").CurrentRegion.Select 
End Sub 

将选择A1:C7

+0

@加里的学生这不是问题。问题是你的解决方案将选择多行,因为当前区域是一个引用,其中很多行是空白的。列是“衣衫褴褛”,但我不想选择没有条目的任何行。我想选择的最后一行将有一列中至少有一个数据输入(字符或不):) – user1665355

+0

@ user1665355:**使用simoco建议的修复方法来发表我的帖子** .......请不要担心关于包括空白行 - >他们将边界** CurrentRegion ** –

+0

嗯好吧...然后我想根据一列对选定的区域进行排序..它会工作吗? – user1665355

相关问题