Страницы: 1
RSS
Выборка из объедененных ячеек
 
Приветствую!  
 
Прошу помочь разобраться. В прикрепленном файле часть данных по дебиторской задолженности, очень не удобная таблица для обработки. Но с этим придется смириться. Вообщем суть вопроса такова:    
- Необходимо сделать выборку (во вкладке "Лист 2") по наименованию, и вытащить данный ячейки (столбец "Задолженность", строка "Итого" после каждого контрагента) выделено желтым.    
 
Обычно я пользовался функцией ВПР, но в данном случае это сделать трудно, во-первых из-за объединенных ячеек, а во-вторых извлечение данных идет из строчки ниже.  
 
Тогда я попробовал использовать функцию АДРЕС, чтобы можно было просто вытащить номер ячейки, а дальше как по "маслу" бы пошло, но и тут неудача.
 
{quote}{login=hitridjus}{date=31.01.2012 11:00}{thema=Выборка из объедененных ячеек}{post}Приветствую! Прошу помочь разобраться.{/post}{/quote}
 
Структурв таблицы - постоянная? Для каждой фирмы - по четыре строки? Или может быть > (<)?
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
с UDF  
алгоритм - тупой перебор по диапазону (второй аргумент), пока не найдется нужная строка (первый аргумент)  
далее в диапазоне ищет ячейку "Итого" и берет соответствующее ей значение из диапазона значений (третий аргумент функции)  
 
не судите строго :)
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
{quote}{login=гость}{date=31.01.2012 12:45}{thema=}{post}Структурв таблицы - постоянная? Для каждой фирмы - по четыре строки? Или может быть > (<)?{/post}{/quote}  
 
Структура не постоянная, все время добавляются строчки.
 
На данном примере все отлично работает. Буду пробовать на основном файле.
 
Что-то не работает, первый вариант. Выдает "#Н/Д"  
В таблице постоянно меняется количество строк на каждого контрагента.  
В файл во вложении я добавил компанию с большим количеством строк.
 
{quote}{login=ikki}{date=31.01.2012 01:20}{thema=}{post}с UDF.{/post}{/quote}  
Отлично, работает, даже при условии разного количества строк у каждого Контрагента, данная функция работает!!!  
Автору - РЕСПЕКТ!
 
оч. смешно!  
 
вы получили решение на другом форуме, формулами.  
а с вопросами пришли сюда.  
 
кстати, там у вас фирма по-разному называется.  
но всё равно получается ошибка. другая, правда.  
 
а по формуле... даже смотреть не хочу.  
сорри
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
hitridjus, я прошу прощения - предложенное Вам решение в post_303141.xls я каким-то образом пропустил.  
но там действительно жестко забито смещение именно на 4 строки.  
поэтому результат ожидаемый.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
ikki, воспользовался Вашим решением заданной темы. Все отлично работает.  
Но появилась новая проблема.    
Дело в том, что источник находится на сетевом диске, вид формулы следующий    
 
=hitridjus(B18;'\\Serv02\отдел продаж\Координатор\Дебеторы\2012 год\[График платежей и дебиторская задолженность 2012 г.xls]дебиторы'!$B$2:$B$2500;'\\Serv02\отдел продаж\Координатор\Дебеторы\2012 год\[График платежей и дебиторская задолженность 2012 г.xls]дебиторы'!$M$2:$M$2500)
 
Все прекрасно работает если одновременно с исполнительным файлом открыт и источник. Но если открыть только исполнительный файл, то в ячейке с формулой выдает #знач!.    
 
Ikki, подскажите как связать источник с исполнительным файлом не нарушая Вашей формулы. Источник я подключил через "Данные -> Подключения"
 
{quote}{login=hitridjus}{date=01.02.2012 10:10}{thema=}{post}Все прекрасно работает если одновременно с исполнительным файлом открыт и источник. Но если открыть только исполнительный файл, то в ячейке с формулой выдает #знач!. {/post}{/quote} Нашел решение данной проблемы http://planetaexcel.ru/tip.php?aid=94, но у меня все равно ни чего не выходит. Видимо для данной функции (function hitridjus), это не подходит.
 
гм.  
А формулы со стандартными функциями при закрытом источнике работают?  
если да - можно попробовать модифицировать то решение через ПОИСКПОЗ() и ИНДЕКС(), которое Вам предлагали.  
правда, единственный вариант, который приходит мне пока в голову - через СМЕЩ(), емнип, тоже не работает с закрытыми файлами.  
 
Вот, нагородил вариант без UDF  
формулисты за такую формулу меня, наверное, не похвалят, но результат она дает правильный :)
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
ikki, к сожалению формулы не работают. Я так понимаю это из-за того, что у меня источник находится не на другом листе как в примере, а в другом файле, который лежит на сервере локальной сети.
 
Уважаемые форумчане!    
Разобранный выше пример, очень помог оптимизировать мою работу. Огромное спасибо.  
 
Но у меня возникла новая проблема.  
Источник: еще более не понятная по функционалу таблица, но какая есть. И с ней приходится работать. Также как и в прошлом примере есть объединенные ячейки, но в этот раз эти ячейки расположены горизонтально перекрывая все действующие столбцы.  
Пытался воспользоваться UDF из прошлого примера, но моих познаний (=0) не хватило.  
 
Прошу помочь откорректировать UDF.
 
в вашем примере некоторые фирмы встречаются по два-три раза.  
что с ними делать? брать первое встретившееся или суммировать?  
и какое кол-во интересует? банок или мест?  
 
-36963-
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Все компании которые встречаются суммировать.  
Интересует количество банок.
 
ок
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Александр, огромное спасибо!!!  
 
Теперь буду искать как сделать, чтобы UDF работала без открытого файла-источника. (О такой ошибке я писал выше)
 

В копилке есть UDF, работающая с закрытыми книгами:  
http://www.planetaexcel.ru/forum.php?thread_id=16564

 
{quote}{login=Hugo}{date=20.03.2012 05:29}{thema=}{post}В копилке есть UDF...{/post}{/quote}  
 
Ув. Hugo, не могли бы вы показать на моем примере, как это прописать?  
например UDF:  
Function hitridjus(x As String, a As Range, b As Range)  
 hitridjus = CVErr(xlErrValue)  
 If (a.Rows.Count <> b.Rows.Count) Or (a.Columns.Count <> b.Columns.Count) Or (a.Columns.Count > 1) Then Exit Function  
 For i = 1 To a.Rows.Count - 1  
   If a.Cells(i, 1).Value = x Then  
     j = i + 1: f = False  
     Do Until f Or j > a.Rows.Count  
       If a.Cells(j, 1).Value = "Итого" Then  
         f = True  
         hitridjus = b.Cells(j, 1).Value  
         Exit Function  
       End If  
       j = j + 1  
     Loop  
     hitridjus = CVErr(xlErrNA)  
   End If  
 Next  
End Function  
 
и пример применения UDF в формуле:  
=hitridjus(B4;'\\Serv02\отдел продаж\Координатор\Дебеторы\2012 год\[График платежей и дебиторская задолженность 2012 г.xls]дебиторы'!$B$2:$B$2500;'\\Serv02\отдел продаж\Координатор\Дебеторы\2012 год\[График платежей и дебиторская задолженность 2012 г.xls]дебиторы'!$K$2:$K$2500)
Страницы: 1
Читают тему
Наверх