Excel это не сложно

Основные форумы => Вопросы по Excel и VBA => Тема начата: Eltoro от 16.05.2019, 15:46:41



Название: Сбор и сравнение текстовых значений на сводный лист
Отправлено: Eltoro от 16.05.2019, 15:46:41
Доброго дня
Возникла проблема с созданием формулы, которая бы на нескольких листах по формулам ИНДЕКС+ПОИСКПОЗ искала текстовые значения и сравнивала их между собой, НО при этом не учитывала пустые ячейки, и листы, на которых нет такой комбинации.
Если значения не совпадают, то выводится ERROR, если все ок, то с любого листа.

Вытянуть значения получается, как и сравнить, но все формулы не пропускают пустые ячейки и считают их 0, по итогу имеем ERROR.
Пытался сначала сделать хотя бы без проверки на равенство, но оказалось что функция ЕПУСТО считает, что если на листе нет такой комбинации, и мы имеем #Н/Д, то это Ок.
=ЕСЛИ(ЕСЛИОШИБКА(ЕПУСТО(ИНДЕКС(Plastic!$E$6:$AI$1000;ПОИСКПОЗ($A6;Plastic!$A$6:$A$1000;0);ПОИСКПОЗ(G$4;Plastic!$E$4:$AI$4;0)));ИСТИНА);1;ИНДЕКС(Plastic!$E$6:$AI$1000;ПОИСКПОЗ($A6;Plastic!$A$6:$A$1000;0);ПОИСКПОЗ(G$4;Plastic!$E$4:$AI$4;0)))


Название: Re:Сбор и сравнение текстовых значений на сводный лист
Отправлено: boa от 16.05.2019, 16:29:29
Здравствуйте,
Наверное, так хотели
Код: (vb)
=IF(INDEX(Plastic!R1:R1048576;MATCH(RC1;Plastic!C1;0);MATCH(R4C;Plastic!R4;0))=INDEX(Plastic2!R1:R1048576;MATCH(RC1;Plastic2!C1;0);MATCH(R4C;Plastic2!R4;0));
INDEX(Plastic!R1:R1048576;MATCH(RC1;Plastic!C1;0);MATCH(R4C;Plastic!R4;0));
"Err")


Название: Re:Сбор и сравнение текстовых значений на сводный лист
Отправлено: Eltoro от 17.05.2019, 13:53:20
Немного не то, переформулировал понятнее

Исходная задача : имеется файл с n-ым кол-вом листов (в примере 4 – Plastic1-4). На этих листах содержатся текстовые значения типа Я,НН, В и т.п.
Все эти данные надо собрать со всех листов в один сводный лист по пересечению код/дата по ИНДЕКС + ПОИСКПОЗ,
Условие для сбора – формула не должна учитывать лист если ячейка пустая, и если данных нет (#Н/Д). Если значение на листе есть, то оно должно быть равно значениям на других листах, в противном случае возвращаем ERR!

Попытался сделать, но даже без условия сравнения, формула имеет очень много вхождений (что неподдерживается .xls - его использовать обязательно)

Спасибо заранее


Название: Re:Сбор и сравнение текстовых значений на сводный лист
Отправлено: boa от 20.05.2019, 17:18:45
Здравствуйте,
тогда пользовательской функцией
Код: (vb)
Function CheckValue(ByVal dDate As Range, ByVal sKod As String, ParamArray values() As Variant)
Dim sh As Variant
Dim sVal As Variant
Dim iCol&, iRow&
    For Each sh In values
    With Worksheets(sh)
        iCol = .Rows(4).Find(dDate.Text, LookIn:=xlValues, LookAt:=xlWhole).Column
        iRow = .Columns(1).Find(sKod, LookIn:=xlValues, LookAt:=xlWhole).Row
        If IsEmpty(sVal) Then
            sVal = .Cells(iRow, iCol)
        Else
            If sVal <> .Cells(iRow, iCol) Then
                CheckValue = "err " & sh
                Exit Function
            End If
        End If
    End With
    Next sh
    CheckValue = sVal
End Function