2017-02-21 15 views
0

В качестве примера:Использование для если в Excel VBA для подсчета значения ячеек до последней строки, но в то же время хотят, чтобы сделать его менее чем за 30

For i = 1 To LastRow 
    If Cells(i, 1).Value = "Tube1" Then 
     Val1 = Worksheets("Sheet1").Cells(i, 2).Value 
     Val2 = Worksheets("Sheet2").Cells(i, 2).Value 

Я хочу код, чтобы найти слово «труба» во всей ячейке в листе Excel, но это может быть только до 30. Возьмите, что ключевым словом здесь является «Tube». Имя пути можно изменить с Tube1, Tube2, Tube3 и т. Д., Но это может быть только до Tube30. что означает, что он может только считать слово «трубка» 30 раз. Каждый путь содержит другое значение после ячейки за ним, например; (Tube1, значение). Как получить часть стоимости, и проблема, которая у меня есть сейчас, заключается в том, чтобы убедиться, что код подсчитает, что путь не станет больше 30.

+0

Если вы хотите, чтобы код, чтобы найти слово 'Path' то почему у вас есть слово' Tube1' в вашем примере кода выше? Что вы подразумеваете под «сделать это меньше 30»? Что должно быть меньше 30? Строка может быть не более 30, потому что строка, которую вы ищете, имеет длину всего 4 буквы 'path'. Если вы хотите выйти из цикла, прежде чем перейти к 30, вы должны следить за событиями с другой переменной (чего я не вижу в приведенном выше коде). Возможно, вы сможете помочь нам понять некоторые примеры данных и желаемый результат, прилагаемый к сообщению. – Ralph

+0

извините, это опечатка там, я ее не заметил. ну, честно говоря, я даже не знаю, как объяснить это. любезно невежественный rn. Я хочу найти слово «Tube1» вместо Path. менее 30 здесь означает, что я хочу, чтобы код обнаруживал только 30 слов слова «трубка» здесь. Для i = 1 To LastRow означает проверку слова «трубка» до последней строки, но трубка может быть только до 30, «tube30». я не могу использовать для i = 1 до 30, потому что слово «Tube» можно изменить (Tube1) и может находиться в разных местах на листах excel. извините, но «строки», которые вы имеете в виду там, даже не связаны с вопросом на самом деле – farahxx

+0

ключевое слово здесь «трубка», и я хочу, чтобы она была меньше 30. Название трубки может быть от Tube1, Tube2 до Tube30 или Tube 60, но код может только определить имя «трубка», которое повторяет только 30 раз – farahxx

ответ

0

Я не на 100%, что вы просите, но Я думаю, это будет для вас указатель.

С помощью Instr вы можете найти только ячейки, которые содержат подстроку «Путь». Затем мы немного выполним манипуляции с строкой, чтобы проверить, равно ли число в значении ячейки или меньше 30. Если нет, мы будем Exit цикл for.

Я думаю, что это должно направить вас в правильном направлении, что вы хотите

For i = 1 To LastRow 
    If Instr(1, Cells(i, 1).Value2, "Path", vbTextCompare) > 0 Then 
     If CInt(Replace(Cells(i, 1).Value2, "Path", vbnullstring)) <= 30 then Exit For 

     Val1 = Worksheets("Sheet1").Cells(i, 2).Value2 
     Val2 = Worksheets("Sheet2").Cells(i, 2).Value2 
    End If 
Next i 
+0

спасибо, Том! Я думаю, вы получаете то, что я пытаюсь спросить здесь. это ключ для меня. я постараюсь сделать это в своем коде – farahxx