Выберите набор ячеек в одном столбце на основе значения в другом - PullRequest
1 голос
/ 14 января 2009

У меня есть большой набор данных в Excel следующей формы


A   B
1   stuff1
6   stuff2
3   stuff3
1   stuff4
1   stuff5
7   stuff6
3   stuff7
2   stuff8
.   .
.   .
.   .
5   stuffn

и что я хотел бы, это некоторый код VBA, который выберет все ячейки в B, которые имеют «1» в столбце A - я буду использовать этот набор, чтобы выполнить некоторые задачи в другой части моего кода

есть идеи?

Спасибо

Ответы [ 3 ]

0 голосов
/ 14 января 2009

Это должно работать:

Sub SelectCellsInColBBasedOnColA()
    Dim TheSheet As Worksheet
    If TypeOf ActiveSheet Is Worksheet Then
        Set TheSheet = ActiveSheet
    Else
        Exit Sub
    End If

    Dim Row As Integer
    Dim CellsToSelect As String
    For Row = 1 To TheSheet.Range("A" & CStr(TheSheet.Rows.Count)).End(xlUp).Row
        If TheSheet.Range("A" & CStr(Row)).Value = 1 Then
            If CellsToSelect <> "" Then CellsToSelect = CellsToSelect & ","
            CellsToSelect = CellsToSelect & "B" & CStr(Row)
        End If
    Next Row
    TheSheet.Range(CellsToSelect).Select
End Sub
0 голосов
/ 14 января 2009

Всегда есть ADO.

'Reference: Microsost ActiveX n.n Object Library '
'but it is not necessary, Dim rs and cn as object '
'if you do not wish to use a reference '

Dim rs As ADODB.Recordset
Dim cn As ADODB.Connection

'From: http://support.microsoft.com/kb/246335 '

strFile = Workbooks(1).FullName
strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFile _
    & ";Extended Properties=""Excel 8.0;HDR=No;IMEX=1"";"

Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")

cn.Open strCon

'Substitute a name range for [Sheet1$] '
'or include a range of cells : [Sheet1&A1:C7] '
'F1 is field 1, because we have no header (HDR: No) '
strSQL = "SELECT * FROM [Sheet3$] " _
       & "WHERE F1=1"

rs.Open strSQL, cn

'Write out to another sheet '
Worksheets(2).Cells(2, 1).CopyFromRecordset rs
0 голосов
/ 14 января 2009

Я не знаю точно, что вы пытаетесь сделать в longrun, но для этого шага вы можете сделать это в столбце C =if(a1=1,b1,"")
, а затем применить фильтр к столбцу c и выбрать опцию не пустой
, тогда вы можете просто выбрать весь столбец c

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...