До тех пор, пока указанное значение не будет достигнуто в другой ячейке - PullRequest
0 голосов
/ 14 марта 2020

Я хотел бы объединить количество дней, которые составляют до 80%. Пожалуйста, смотрите пример ниже:

enter image description here

Я могу запустить код, который объединяет диапазон A1: A7 и результат печатается в C1;

Sub Concatenator()

Dim lastLng As Long
Dim result As String
Dim delim As String
Dim b As String

delim = "&"

lastLng = Worksheets("Sheet1").Range("A1048576").End(xlUp).Row

For i = 1 To lastLng

b = Cells(i, 1).Value
result = result & b & delim

Next

result = Left(result, Len(result) - Len(delim))

Worksheets("Sheet1").Cells(1, 3).Value = result

End Sub

Я бы добавил «До» l oop, который повторяется до тех пор, пока значение в столбце не станет больше 80%. Я попытался изменить код выше с помощью цикла «До»;

Sub Concatenator()

Dim lastLng As Long
Dim result As String
Dim delim As String
Dim b As String

delim = "&"

lastLng = Worksheets("Sheet1").Range("A1048576").End(xlUp).Row

Do Until Cells(i, 2).Value = ">80%"

For i = 1 To lastLng1

b = Cells(i, 1).Value
result = result & b & delim

Next

Loop

result = Left(result, Len(result) - Len(delim))

Worksheets("Sheet1").Cells(1, 3).Value = result

End Sub

Ответы [ 2 ]

0 голосов
/ 14 марта 2020

Это то, что у меня сработало

Sub Concatenator()

Dim lastLng As Long
Dim result As String
Dim delim As String
Dim b As String

delim = "&"

lastLng = Worksheets("Sheet1").Range("A1048576").End(xlUp).Row

For i = 1 To lastLng
    If Cells(i, 2).Value > "80" Then Exit For
    b = Cells(i, 1).Value
    result = result & b & delim
Next

result = Left(result, Len(result) - Len(delim))

Worksheets("Sheet1").Cells(1, 3).Value = result

End Sub

Я изменил значение в столбце с процента на число. Я также убрал знак равенства

For i = 1 To lastLng
    If Cells(i, 2).Value > "80" Then Exit For
    b = Cells(i, 1).Value
    result = result & b & delim
Next

Пока это будет работать очень хорошо для меня. Спасибо @The GridLock

0 голосов
/ 14 марта 2020

Насколько я понимаю, это может сработать для вас. Чтобы понять, как настроить код, посмотрите For-L oop и Do-while , затем объедините условия с l oop как следующий код

i = 1
Do Until Cells(i, 2).Value = 0.8 'Loop until request condition
    If i > lastLng1 Then Exit Do 'Loop until end of the range
    b = Cells(i, 1).Value
    result = result & b & delim
    i = i + 1
Loop

'Or------------------------------

For i = 1 To lastLng1                        'Loop until end of the range
    If Cells(i, 2).Value = 0.8 Then Exit For 'Loop until request condition
    b = Cells(i, 1).Value
    result = result & b & delim
Next
...