根据3个相对参考选择范围

时间:2014-06-20 22:27:51

标签: excel vba excel-vba

我有一个非常大的文件,我需要选择仅由3个点分隔的范围才能将其导出; 我的引用是定义的2个列标题,最后一个单元格位于另一列的第一个空白之前。 2列标题“W”和“Z”始终在第5行,但“W”可以在单元格Ax中,在单元格Ay中,在Ax和Ay之间没有固定距离。

非常感谢您的帮助!

编辑 - 因为我无法添加图片而试图添加更多细节:

我们先说一下我关注的2列:

左边的第一个是包含标题“W”的那个,另一个是包含标题“Z”的那个。

我不知道中间是否有20或234列,如果是这样的话,我需要选择所有这些,因为它们在我的限制之内。

如果在标有“Z”的列之外还有更多信息,我不在乎。 所以,有了这个,我就是我的了。

现在,对于高度,我需要检查“YY”列,它始终在“W”和“Z”之间,并且下降到它的最后连续值 - 让我们称之为“E”(这意味着如果我们列中的空白单元格,我不再关心下面的其他值。

因此,我的高度将从包含标签的行转到包含值“E”的行。

1 个答案:

答案 0 :(得分:0)

如果你想要一个明确定义的范围,使用起始行,开始col和结束行,结束col ...

' assumes your first row also includes the header
' a = start row
' b = start col, finds the W with a match
' c = last row of data
' d = last col
a = 5 
b = application.worksheetfunction.match("W",range("5:5"),0))
d = application.worksheetfunction.match("Z",range("5:5"),0))

' c = last row of data....
' this version uses end(xldown) aka ctrl-down arrow from the YY header in row a
c = cells(a, application.worksheetfunction.match("YY",range("5:5"),0)).end(xldown).row
'' OR
'' c = application.worksheetfunction.match("YY",range("5:5"),0)) ' to get the col
'' c = application.worksheetfunction.match("E",cells(5,c).entireColumn,0)) ' to get the row in that col that matches E assuming you dont want to go all the way down
'' OR - loop
'' i = a
'' do While cells(i,application.worksheetfunction.match("YY",range("5:5"),0)) <> ""
''    i = i + 1
'' loop
'' c = i - 1
yourRange = range(cells(a,b),cells(c,d))

或者,你可以使用交叉,但上面应该是一个粗略的开始。我建议指定参考的表格。并且执行检查以捕获一些错误以确保存在W,Z和YY,并且对于W&gt;列进行检查。 YY的列> Z的列