Функция Instr с двумя условиями - PullRequest
0 голосов
/ 26 июня 2019

У меня есть строка в ячейке «А1» и другая строка в ячейке «А2» Листа 2, которую я беру, используя функцию ВЛЕВО.Они меняются при каждом импорте.Я пытаюсь найти первую строку в столбце «AP» и вторую строку в столбце «AA» Sheet1 и отсортировать лист по этим значениям.Затем я хочу скопировать весь Лист1 и вставить его в Лист2.Мой код ничего мне не дает.Почему не так?

Sub rc1()
    Dim lastrow As Long
    Dim i As Integer, icount As Integer
    Dim j As Integer, jcount As Integer
    Dim LResult As String

    LResult = Sheets("Sheet2").Range("A1")
    LResult = Left(LResult, 4)
    JResult = Sheets("Sheet2").Range("A2")
    JResult = Left(JResult, 2)

    lastrow = Sheets("Sheet1").Range("A30000").End(xlUp).Row

    Sheets("Sheet2").Activate
    Sheets("Sheet2").Range("B2:AQ" & lastrow).Select
    Selection.ClearContents

    icount = 1
    For i = 2 To lastrow
        For j = 2 To lastrow
            If InStr(1, LCase(Sheets("Sheet1").Range("AP" & i)), LCase(LResult)) <> 0 And InStr(1, LCase(Sheets("Sheet1").Range("AA" & j)), LCase(JResult)) <> 0 Then
                icount = icount + 1
                Sheets("Sheet2").Range("B" & icount & ":AQ" & icount) = Sheets("Sheet1").Range("A" & i & ":AP" & i).Value
            End If
        Next j
    Next i
End Sub

1 Ответ

0 голосов
/ 26 июня 2019

Я думаю, что ваша проблема здесь:

LResult = Sheets("Sheet2").Range("A1")
LResult = Left(LResult, 4)
JResult = Sheets("Sheet2").Range("A2")
JResult = Left(LResult, 2)

должна ли последняя строка не быть JResult = Left(JResult, 2)?

в том виде, в котором он работает в данный момент, он перезапишет значение, назначенное вами для ячейки sheet2 A2, с двумя самыми левыми символами в ячейке sheet2 A1. Если это значение не отображается в столбце AA, то критерии в вашем операторе if никогда не будут оценены как истинные.

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