Страницы: 1
RSS
Поиск на соседнем листе суммы чисел по определенному названию, Помогите "модернизировать" существующий макрос
 
Добрый день! Ранее, не без помощи форума сделал макрос, который по имени листа и определенному названию, ищет первые 3 непустых значения справа от названия на этом, находящимся в этой же книге листе, и выводит их в таблицу. Проблема в том, что существующий макрос ищет эти значения только для первого сверху вхождения названия на соответствующем листе. Теперь столкнулся с тем, что это название на листе может встречаться несколько раз и в таком случае нужно искать суммы первых трех значений. Постарался все подробно расписать в примере. В нем же находится существующий макрос, который хотелось бы модернизировать
 
Цитата
Валерий Анисомов написал: макрос, который хотелось бы модернизировать
Проще новый написать ;)
Код
Sub SumFirstThree()
Dim arr(), arrVal(), I&, J&, K&, N&
Dim iSh As Worksheet
lRow = Cells(Rows.Count, "K").End(xlUp).Row
iStr = Range("L6").Text 'искомое значение. БЕЗ 'звездочки'!
ReDim arrVal(lRow - 8, 2)
On Error Resume Next
For I = 8 To lRow
    Set iSh = Worksheets(CStr(Cells(I, "K")))
    If iSh Is Nothing Then
        MsgBox "Лист с именем '" & CStr(Cells(I, "K")) & "' не найден!" 'Если в книге нет Листа с именем из списка, выходим из процедуры
        Exit Sub
    End If
    With iSh
        arr = .Range(.Cells(3, 2), .Cells(.Cells(.Rows.Count, 2).End(xlUp).Row, .Cells(3, .Columns.Count).End(xlToLeft).Column)).Value
    End With
    For J = 1 To UBound(arr, 1)
        If arr(J, 1) Like iStr & "*" Then
            For K = 2 To UBound(arr, 2)
                If arr(J, K) <> Empty And N <= 2 Then
                    arrVal(I - 8, N) = arrVal(I - 8, N) + arr(J, K)
                    N = N + 1
                End If
            Next
        End If
        N = 0
    Next
Range("L8").Resize(UBound(arrVal) + 1, 3) = arrVal
Next
End Sub
Согласие есть продукт при полном непротивлении сторон
 
Спасибо! Только виноват, не написал, что в листе "фрукты" столбец с названием не фиксирован, не всегда обязательно B. Ваш макрос считает только для B, а если он например будет A или C, то не считает. На вскидку, не представляю, что нужно поправить, чтобы считал для любого столбца. И еще если выбрать например в K8 "ананасы", то выдает 15/8/пусто, а по идее должно быть 15/8/8. Это очень сложно поправить?
 
Поправил
Скрытый текст
Согласие есть продукт при полном непротивлении сторон
 
Еще раз спасибо! Есть еще одна проблема, вроде бы последняя: если на листе "фрукты" названия фруктов не фиксированы в определенном столбце, а могут из него "выбиваться" (поправил в примере) это поменяет весь принцип Вашего макроса или можно поправить? Обычно примерно понимаю смысл несложных макросов, тут не могу понять как все работает  
 
Приложил рабочий пример в том виде, в каком собирался использовать макрос. Он получился достаточно непохожим на первоначальный пример. По факту нужно искать сумму десятых значений справа от искомого названия, или первое первое значение с конца, что одно и то же
 
Валерий Анисомов, Вы постоянно меняете условия - Вам скоро откажутся помогать.
Страницы: 1
Наверх