Здравствуйте форумчане До сегодняшнего момента устраивал визуальный контроль который приведен в файле вылазили отдельные косяки в итогах которые можно было найти глазами в нижестоящей выборке но сегодня демоны прислали данные в которых куча косяков и визуально по общему итогу их не видно, пытался сопоставить отдельно по кодам две таблицы лист "Свод 2014" с таблицей лист "Проверка" при помощи функции ВПР но косяк в том что в Своде есть коды которые должны сопоставится (пример в листе "сопост" к примеру 7400 - лист "свод" 2014=сумм(7401, 7402, 7403....)- лист "Проверка" как можно реализовать данное условие.
Добрый день. Я думаю мало кто понял что такое "в Своде есть коды которые должны сопоставится" Предположения конечно можно строить... но зачем?
P.S. Хотя в общем смысл понятен (после анализа данных). Как сделать формулами - я пас. Я бы макросом делал, как-то опять словари-массивы... думать нужно. Только с теми жёлтыми в "сопост" непонятно...
Заготовка. Нужно доделывать динамические диапазоны.
Ну пока как с формулами - работает где указано :)
Вроде как работает.
Sub sravn()
Dim a, b, i&, t&
With CreateObject("Scripting.Dictionary"): .comparemode = 1
a = Sheets(1).[i11:u86].Value
For i = 1 To UBound(a): .Item(CStr(a(i, 1))) = i: Next
b = Sheets(2).[a2:b70].Value
For i = 1 To 3
If Not .exists(CStr(b(i, 2))) Then
.Item(CStr(b(i, 2))) = .Item(CStr(b(i, 1)))
Else
t = .Item(CStr(b(i, 2)))
a(t, 13) = a(t, 13) + a(.Item(CStr(b(i, 1))), 13)
End If
Next
For i = 4 To UBound(b): .Item(CStr(b(i, 2))) = .Item(CStr(b(i, 1))): Next
b = Sheets(3).[a5:d81].Value
ReDim c(1 To UBound(b), 1 To 1)
For i = 1 To UBound(b)
t = .Item(CStr(b(i, 1)))
a(t, 13) = a(t, 13) - b(i, 4)
Next
For i = 1 To UBound(b)
t = .Item(CStr(b(i, 1)))
If a(t, 13) = 0 Then c(i, 1) = "OK" Else c(i, 1) = "NO"
Next
Sheets(3).[e5].Resize(UBound(c), 1).Value = c
End With
End Sub
Hugo извиняюсь за вопрос, что делает этот макрос он сравнивает только коды и говорит что коды из листа "Проверка" соответствуют кодам из листа "Свод 2014" с учетом кодов листа "сопост" и макрос пишет все ОК. Если да, то тут все будет хорошо полюбому меня больше беспокоит косяк в отражении по данным кодам сумм в листе Проверка и сумм отраженным по данным кодам в листе Свод 2014. ПС Если я запрыгнул в перед извиняюсь я просто смутно понимаю что ваш макрос делает на самом деле
и еще что нужно переделать в таблице в соответствии с вашим комментарием "нужно переделывать таблицу "сопост". Т.к. смотреть на цвет не по феншую"
Про цвет - просто было бы удобнее, когда те коды, которые "наоборот", были бы в двух других отдельных столбцах. Тогда в макросе можно прописать их динамическое определение по расположению, а не по цвету, что проще и быстрее. Ну если эти коды не меняются часто - можно оставить как есть, прописывая в коде For i = 1 To 3 и далее For i = 4 To UBound(b)
Ну а остальные диапазоны можно динамически определять кодом по наличию данных. Но делать некогда, да и не интересно. Попробуйте сами.
Hugo СПАСИБО Ваш код работает отлично Я нашел руками почему не идет общая сумма просто отдельные товарищи которым бы руки повыдергивать не отразили объемы которые им довели можете глянуть выборку в файле
Эт я просто сначало начал сомневатся как же все ОК если общий итог не идет и полез сопоставлять руками и обнаружил что рукожопы просто тупо не поставили доведенные суммы а по массиву который имелся в наличии ваш макрос отработал на отлично