Excel 仅选择包含两列之间数据的单元格

Excel 仅选择包含两列之间数据的单元格,excel,vba,Excel,Vba,我正在寻找一种只选择包含两列之间数据的单元格的方法。我无法理解完成这项任务所需要的逻辑 我认为这是我最好的选择,但我愿意接受其他建议 Sheet1.Columns("A3:B1000").SpecialCells(xlCellTypeConstants, 23).Select 使用这段代码,我可以选择包含值的范围,但是它不能同时在两列之间工作。如果列A有数据,但列B没有,它仍将选择列A 下面是我想做的 下面的代码将通过过滤任何空白单元格,然后选择所有可见单元格来实现您所期望的功能,例如,我使用

我正在寻找一种只选择包含两列之间数据的单元格的方法。我无法理解完成这项任务所需要的逻辑

我认为这是我最好的选择,但我愿意接受其他建议

Sheet1.Columns("A3:B1000").SpecialCells(xlCellTypeConstants, 23).Select
使用这段代码,我可以选择包含值的范围,但是它不能同时在两列之间工作。如果列A有数据,但列B没有,它仍将选择列A

下面是我想做的


下面的代码将通过过滤任何空白单元格,然后选择所有可见单元格来实现您所期望的功能,例如,我使用了A列和B列,请根据需要进行修改

注意:我同意CallumDA的评论,您通常希望避免选择任何内容,但下面的示例代码将向您展示如何将给定的范围添加到变量中,如果您想对其执行某些操作,而不仅仅是选择它

Sub foo()
    Dim ws As Worksheet: Set ws = Sheets("Sheet1")
    'declare and set your worksheet, amend as required
    Lastrow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    'get the last row with data on Column A
    Dim rng As Range
    ws.Range("$A$1:$B$" & Lastrow).AutoFilter Field:=1, Criteria1:="<>"
    ws.Range("$A$1:$B$" & Lastrow).AutoFilter Field:=2, Criteria1:="<>"
    Set rng = ws.Range("A2:B" & Lastrow).SpecialCells(xlCellTypeVisible)
    ws.Range("$A$1:$B$" & Lastrow).AutoFilter
    rng.Select
End Sub
Sub-foo()
将ws标注为工作表:设置ws=工作表(“工作表1”)
'声明并设置工作表,根据需要进行修改
Lastrow=ws.Cells(ws.Rows.Count,“A”).End(xlUp).Row
'获取列A上包含数据的最后一行
变暗rng As范围
ws.Range($A$1:$B$”&Lastrow)。自动筛选字段:=1,标准1:=“”
ws.Range($A$1:$B$”&Lastrow)。自动筛选字段:=2,标准1:=“”
设置rng=ws.Range(“A2:B”和Lastrow).SpecialCells(xlCellTypeVisible)
ws.Range($A$1:$B$”&Lastrow)。自动筛选
rng.选择
端接头

您是否考虑过使用带有IF条件的FOR循环来检查特定行中的两个单元格是否都有值。如果条件为true,则选择两个单元格。为什么要选择它们?通常
.Select
.Selection
我考虑过FOR循环,但我不确定如何检索信息并编译以供使用。我希望现在就选择它,这样我就可以将它粘贴到另一行。隐藏行或删除行不是一个选项,因为我不想影响相邻单元格中的公式。