Страницы: 1
RSS
Поиск и сравнение по нескольким критериям
 
Доброго дня Вам!  
Прошу помощи,незнаю как оптимизировать процес сравнения.Есть выборка по счетам на разных листах,по названию счёта и его окончанию нужно найти и проверить сумму остатка совпадают или нет(причем противоположная сумма,должна быть с противоположным знаком)проблема в том что одни счета находится на одном листе,другие на другом и т.д.,в файле более понятней видно ситуацию.  
Заодно может кто подскажет ,что нужно добавить в страку макрос,чтоб удолялись не только строки с ''0'' но и с пустой ячейкой If Application.Rows®.Columns(6).Value = "0" Then Rows®.Delete  
Заранее блогодарю
 
If Application.Rows®.Columns(6).Value = "" Then Rows®.Delete  
либо  
If Application.Rows®.Columns(6).Value is nothing Then Rows®.Delete
 
{quote}{login=}{date=04.02.2010 01:26}{thema=}{post}If Application.Rows®.Columns(6).Value = "" Then Rows®.Delete  
либо  
If Application.Rows®.Columns(6).Value is nothing Then Rows®.Delete{/post}{/quote}  
Тогда с 0 остаются,а надо чтоб и с 0 и пустые удаляло
 
If Application.Rows®.Columns(6).Value = "" or Application.Rows®.Columns(6).Value = 0 Then Rows®.Delete  
 
как то так наверно
 
{quote}{login=Dophin}{date=04.02.2010 02:07}{thema=}{post}If Application.Rows®.Columns(6).Value = "" or Application.Rows®.Columns(6).Value = 0 Then Rows®.Delete  
 
как то так наверно{/post}{/quote}  
 
О спасибки,так работает!!
 
{quote}{login=The_Prist}{date=04.02.2010 03:13}{thema=}{post}Какая интересная конструкция....  
а так?  
If Application.Sum(Cells(r, 6)) = 0 Then Rows®.Delete{/post}{/quote}  
И так работает!
 
это же просто чудо!
 
{quote}{login=NIKE1972}{date=04.02.2010 01:07}{thema=Поиск и сравнение по нескольким критериям}{post}Доброго дня Вам!  
Прошу помощи,незнаю как оптимизировать процес сравнения.Есть выборка по счетам на разных листах,по названию счёта и его окончанию нужно найти и проверить сумму остатка совпадают или нет(причем противоположная сумма,должна быть с противоположным знаком)проблема в том что одни счета находится на одном листе,другие на другом и т.д.,в файле более понятней видно ситуацию.  
Заранее блогодарю  
А по етой темке нет идей,количество счетов в файле минимизированно,на самом деле их там тьма тьмущая,в ручную сравнивать сложно :(
 
я ничего не понял
 
{quote}{login=Dophin}{date=04.02.2010 04:08}{thema=}{post}я ничего не понял{/post}{/quote}  
Похоже я замудрил с обьяснением  
смысл сверки к примеру счёт AUD140020 в листе RIG, должен сверится со счётом AUD140001 в листе SW,JPY140001 в листе EST, должен сверится со счётом JPY140010  
в листе RIG и т.д.
 
Я понял, а что в результате сравнения нужно то? Слово "ошибка" подойдет?    
 
Для листа SW формула проверки для первой строки будет вот такая:  
 
=ЕСЛИ(ПРАВСИМВ($C1;2)="01";ЕСЛИ(ВПР(ЛЕВСИМВ($C1;ДЛСТР($C1)-2)&"20";RIG!$C$1:$F$29;4)<> -SW!F1;"ОШИБКА";"");ЕСЛИ(ПРАВСИМВ($C1;2)="10";ЕСЛИ(ВПР(ЛЕВСИМВ($C1;ДЛСТР($C1)-2)&"20";EST!$C$1:$F$15;4)<> -SW!F1;"ОШИБКА";"");ЕСЛИ(ПРАВСИМВ($C1;2)="30";ЕСЛИ(ВПР(ЛЕВСИМВ($C1;ДЛСТР($C1)-2)&"30";GER!$C$1:$F$10;4)<> -SW!F1;"ОШИБКА";"");"")))  
 
Ниже объяснение по частям:  
 
Если (ПРАВСИМВ($C1;2)="01" - это проверка счета на условие,  
ЛЕВСИМВ($C1;ДЛСТР($C1)-2)&"20" - это новое значение искомого счета,  
ВПР(ЛЕВСИМВ($C1;ДЛСТР($C1)-2)&"20";RIG!$C$1:$F$29;4) - поиск суммы счета на листе RIG,  
<> -SW!F1 - сравнение с суммой с обратным знаком,    
если условие верно и суммы не совпадают, то выдается "ошибка", если совпадают не выдается ничего: "".    
Аналогично проверка других условий. "20" - поиск в EST, "30" - поиск в "GER".  
 
Для остальных листов сделайте по аналогии.
 
Сравнить - как? Какой результат сравнения?  
При сравнении счетов - возможна только одна пара или несколько? Т.е. одному счету из RIG соответствует только один счет из другого листа?  
Если на каждую валюту свой лист, то необходимо как-то унифицировать названия листов, т.е. соотнести числа в окончаниях счетов с названиями, иначе для формул это неподъемно.
 
{quote}{login=vikttur}{date=05.02.2010 09:03}{thema=}{post}Сравнить - как? Какой результат сравнения?  
При сравнении счетов - возможна только одна пара или несколько? Т.е. одному счету из RIG соответствует только один счет из другого листа?  
Если на каждую валюту свой лист, то необходимо как-то унифицировать названия листов, т.е. соотнести числа в окончаниях счетов с названиями, иначе для формул это неподъемно.{/post}{/quote}Суммы должны совподать,если несовпали было бы классно если бы ето как то отмечалось,при сравнении счетов возможна толко одна пара AUD140020 в листе RIG, равен AUD140001 в листе SW и в каждом листе присутствует весь спектр основных валют
 
С моей формулой разобрались? Она все это и делает. Можно такое-же запихнуть в условное форматирование для каждого листа.
 
"в каждом листе присутствует весь спектр основных валют"  
Вы не ответили на вопрос по количеству листов. Еще раз - на каждую валюту свой лист или как в примере - только четыре листа?  
 
McCinly, лучше формулой оставлять - условное форматирование летучее.
 
{quote}{login=vikttur}{date=05.02.2010 10:59}{thema=}{post}"в каждом листе присутствует весь спектр основных валют"  
Вы не ответили на вопрос по количеству листов. Еще раз - на каждую валюту свой лист или как в примере - только четыре листа?  
 
Всего четыре листа,каждый лист ето филиал,у каждого филиала свои счета,последние две цифры в счёте индефицируют принадлежность счёта к филиалу,тоесть если в RIG счет оканчивается на 20 то етот счёт работает с филиалом SW где ''зеркальный'' счёт будет оканчиватся на 01  
 
McCinly, лучше формулой оставлять - условное форматирование летучее.{/post}{/quote}
 
{quote}{login=vikttur}{date=05.02.2010 10:59}{thema=}{post}"в каждом листе присутствует весь спектр основных валют"  
Вы не ответили на вопрос по количеству листов. Еще раз - на каждую валюту свой лист или как в примере - только четыре листа?  
 
McCinly, лучше формулой оставлять - условное форматирование летучее.{/post}{/quote}  
Всего четыре листа,каждый лист ето филиал,у каждого филиала свои счета,последние две цифры в счёте индефицируют принадлежность счёта к филиалу,тоесть если в RIG счет оканчивается на 20 то етот счёт работает с филиалом SW где ''зеркальный'' счёт будет оканчиватся на 01
 
{quote}{login=McCinly}{date=05.02.2010 07:51}{thema=}{post}Я понял, а что в результате сравнения нужно то? Слово "ошибка" подойдет?    
 
Для листа SW формула проверки для первой строки будет вот такая:  
 
=ЕСЛИ(ПРАВСИМВ($C1;2)="01";ЕСЛИ(ВПР(ЛЕВСИМВ($C1;ДЛСТР($C1)-2)&"20";RIG!$C$1:$F$29;4)<> -SW!F1;"ОШИБКА";"");ЕСЛИ(ПРАВСИМВ($C1;2)="10";ЕСЛИ(ВПР(ЛЕВСИМВ($C1;ДЛСТР($C1)-2)&"20";EST!$C$1:$F$15;4)<> -SW!F1;"ОШИБКА";"");ЕСЛИ(ПРАВСИМВ($C1;2)="30";ЕСЛИ(ВПР(ЛЕВСИМВ($C1;ДЛСТР($C1)-2)&"30";GER!$C$1:$F$10;4)<> -SW!F1;"ОШИБКА";"");"")))  
 
Ниже объяснение по частям:  
 
Если (ПРАВСИМВ($C1;2)="01" - это проверка счета на условие,  
ЛЕВСИМВ($C1;ДЛСТР($C1)-2)&"20" - это новое значение искомого счета,  
ВПР(ЛЕВСИМВ($C1;ДЛСТР($C1)-2)&"20";RIG!$C$1:$F$29;4) - поиск суммы счета на листе RIG,  
<> -SW!F1 - сравнение с суммой с обратным знаком,    
если условие верно и суммы не совпадают, то выдается "ошибка", если совпадают не выдается ничего: "".    
Аналогично проверка других условий. "20" - поиск в EST, "30" - поиск в "GER".  
 
Для остальных листов сделайте по аналогии.{/post}{/quote}  
у меня почемуто формулу не получается подставить,сперва ругается в ЕСЛИ(ПРАВСИМВ($C1;2)="01" на точку с запятой,меняю её на запятую,пропускает дальше и ругается на "01"  
(руки наверно не так заточены)
 
Если нужен английский вариант -    
=IF(RIGHT($C1;2)="01";IF(VLOOKUP(LEFT($C1;LEN($C1)-2)&"20";RIG!$C$1:$F$29;4)<> -SW!F1;"ОШИБКА";"");IF(RIGHT($C1;2)="10";IF(VLOOKUP(LEFT($C1;LEN($C1)-2)&"20";EST!$C$1:$F$15;4)<> -SW!F1;"ОШИБКА";"");IF(RIGHT($C1;2)="30";IF(VLOOKUP(LEFT($C1;LEN($C1)-2)&"30";GER!$C$1:$F$10;4)<> -SW!F1;"ОШИБКА";"");"")))  
Писать в G1 листа SW, протянуть вниз. Проверить работу можно изменив какое-либо значение в столбце F
 
{quote}{login=Hugo}{date=08.02.2010 04:26}{thema=Re: Re: }{post}Если нужен английский вариант -    
=IF(RIGHT($C1;2)="01";IF(VLOOKUP(LEFT($C1;LEN($C1)-2)&"20";RIG!$C$1:$F$29;4)<> -SW!F1;"ОШИБКА";"");IF(RIGHT($C1;2)="10";IF(VLOOKUP(LEFT($C1;LEN($C1)-2)&"20";EST!$C$1:$F$15;4)<> -SW!F1;"ОШИБКА";"");IF(RIGHT($C1;2)="30";IF(VLOOKUP(LEFT($C1;LEN($C1)-2)&"30";GER!$C$1:$F$10;4)<> -SW!F1;"ОШИБКА";"");"")))  
Писать в G1 листа SW, протянуть вниз. Проверить работу можно изменив какое-либо значение в столбце F{/post}{/quote}  
Спасибо за помощь!но результат непоменялся  
 
The formula you typed contains an error.  
 
Может надо что то в настройках EXCEL поменять?
 
{quote}{login=The_Prist}{date=08.02.2010 05:23}{thema=}{post}Попробуйте "точку с запятой"(;) заменить на "запятую"(,)  
 
=IF(RIGHT($C1,2)="01",IF .... и т.д.{/post}{/quote}  
Заменил и всё сразу заработало!!!  
Спасибо!!!!!!!!
 
Вот сделал формулы и диапазоны для всех страниц.
 
Пока делал, тут всё уже заработало )))  
 
Просто формулы скопировать не получится, необходимо еще настроить динамические имена диапазонов. Формулы - Диспетчер Имён. Зато потом до 5000 строк нормально будет работать. Если нужно больше увеличьте в формуле задания динамического имени    
=СМЕЩ(SW!$C$1;0;0;СЧЁТЗ(SW!$C$1:$C$5000);4)  
Значение 5000 на большее.
 
{quote}{login=McCinly}{date=08.02.2010 06:04}{thema=}{post}Пока делал, тут всё уже заработало )))  
 
Просто формулы скопировать не получится, необходимо еще настроить динамические имена диапазонов. Формулы - Диспетчер Имён. Зато потом до 5000 строк нормально будет работать. Если нужно больше увеличьте в формуле задания динамического имени    
=СМЕЩ(SW!$C$1;0;0;СЧЁТЗ(SW!$C$1:$C$5000);4)  
Значение 5000 на большее.{/post}{/quote}  
Если несложно,может просвятите неуча ,,,,настроить динамические имена диапазонов ???
 
Смотрите вот сюда  
http://www.planetaexcel.ru/tip.php?aid=98  
 
А если проще то выбирается смещение от ячейки С1 на нужное количество строк  СЧЁТЗ(SW!$C$1:$C$5000) и на 4-е столбца)  
 
СЧЁТЗ(SW!$C$1:$C$5000) считает количество разных счетов в столбце С с 1-й по 5000 строку и все это в    
=СМЕЩ(SW!$C$1;0;0;СЧЁТЗ(SW!$C$1:$C$5000);4)  
 
Маленький такой диапазончик в 4-е столбца и на нужное количество строк.    
А вы к Nike имеете отношение? Больно у них лозунг хорош: "Just do it!" (просто сделайте это).
 
{quote}{login=McCinly}{date=08.02.2010 06:37}{thema=}{post}Смотрите вот сюда  
http://www.planetaexcel.ru/tip.php?aid=98  
 
А если проще то выбирается смещение от ячейки С1 на нужное количество строк  СЧЁТЗ(SW!$C$1:$C$5000) и на 4-е столбца)  
 
СЧЁТЗ(SW!$C$1:$C$5000) считает количество разных счетов в столбце С с 1-й по 5000 строку и все это в    
=СМЕЩ(SW!$C$1;0;0;СЧЁТЗ(SW!$C$1:$C$5000);4)  
 
Маленький такой диапазончик в 4-е столбца и на нужное количество строк.    
А вы к Nike имеете отношение? Больно у них лозунг хорош: "Just do it!" (просто сделайте это).{/post}{/quote}  
Разобрался и всё чудесно работает!Спасибо!!!с Nike только потребительские отношения  
Удачного дня!
 
{quote}{login=NIKE1972}{date=08.02.2010 05:34}{thema=Re: }{post}{quote}{login=The_Prist}{date=08.02.2010 05:23}{thema=}{post}Попробуйте "точку с запятой"(;) заменить на "запятую"(,)  
 
=IF(RIGHT($C1,2)="01",IF .... и т.д.{/post}{/quote}  
Заменил и всё сразу заработало!!!  
Спасибо!!!!!!!!{/post}{/quote}  
 
У вас наверное MS Office 2000 стоит, на 2000ом работает (,) a на 2003ем (;)  
непонятно зачем народ мутить.
[*]<a href="mailto:info@ledrex\";>
 
Может, автору уже и не нужно, но мне было интересно.  
=ИНДЕКС(ВЫБОР(ЦЕЛОЕ(ПРАВСИМВ(C1;2)/10+1);rig;est;sw;ger);ПОИСКПОЗ(ПСТР(C1;1;ДЛСТР(C1)-2)&"01";ВЫБОР(ЦЕЛОЕ(ПРАВСИМВ(C1;2)/10+1);rigval;estval;swval;gerval);0))=-F1  
В формуле для каждого листа меняется только "01" на нужное; "10", "20", "30".
 
Опять не прицепил :)
Страницы: 1
Наверх