Страницы: 1 2 След.
RSS
Макрос для объединения ячеек в одну с условием совпадения оригинального номера
 
Добрый день!  
Прошу помощи в решении следующей задачи. Поиск результатов не дал.    
Все сведения находятся в одной книге на разных листах: Журнал 1, Журнал 2.  
Заранее неизвестно, сколько строк будет в Журнале 2 за оригинальным порядковым номером ТП, которые нужно объединить и перенести в одну ячейку Журнала 1 под тем же оригинальным номером ТП.  
Перенос сведений из Журнала 2 в Журнал 1 осуществляется только при совпадении оригинального порядкового номера ТП Журнала 1 с оригинальным порядковым номером ТП Журнала 2.    
Желательно перенос сведений (выполнение макроса) осуществить с помощью кнопки «Перенести сведения в Журнал 1».  
В приложении файл.
 
Файл заархивирован, размер 14,4 КБ.
 
Help! Help! Help!
 
Вот если бы в журнале2 не было объединённых ячеек, то всё уже готово - есть в копилке UDF LOOKUPCOUPLE() (если я правильно понял задачу), а так думать нужно... не возмусь.
 
Вот так например с той формулой. Если журнал2 исправить. Не совсем правда как заказывали...
 
{quote}{login=Hugo}{date=31.01.2011 09:45}{thema=}{post}Вот так например с той формулой. Если журнал2 исправить. Не совсем правда как заказывали...{/post}{/quote}  
 
Спасибо Hugo !!!  
Вариант с формулами тоже очень интересен (буду разбираться).  
Проблема только в том, что заранее неизвестно, сколько строк будет в Журнале 2 за оригинальным порядковым номером ТП (объединенная ячейка), которые нужно объединить и перенести в одну ячейку Журнала 1 под тем же оригинальным номером ТП.  
Поэтому стоит задача переноса сведений только по совпадающему оригинальному порядковому номеру ТП.
 
Ну так я там в формуле диапазон с запасом задал, до 200. Можно и больше, хоть вообще $B:$E, но подтормаживает тогда...
 
{quote}{login=Hugo}{date=31.01.2011 09:28}{thema=}{post}Вот если бы в журнале2 не было объединённых ячеек, то всё уже готово - есть в копилке UDF LOOKUPCOUPLE() (если я правильно понял задачу), а так думать нужно... не возмусь.{/post}{/quote}  
 
Пытаюсь разобраться с формулой.  
Hugo, вопрос: можно ли в моем случае номера договоров привязать к их датам в таком формате: № 1 от 01.01.2010, № 2 от 02.01.2010 г. и т.д.  
Решил отказаться от объединенных ячеек в Журнале 2. :) смотрю UDF может чего соображу. Сам пока чайник. Пока путь не покажут не разберусь.
 
Так привязать в этой формуле не получится. Нужно формулу переделывать, вернее писать похожую, где ввести ещё один диапазон.  
И это не просто, нужно попыхтеть...  
А объединённые ячейки - зло, об этом давно говорится :)  
Для внешней похожести в журнале2 можно повторам по столбцу А поставить цвет шрифта в цвет фона. Это если печатать будете и хочется именно так.
 
Сделал, узко под задачу. Если разобраться - можно сделать поуниверсальнее, например добавить ещё параметр, куда писать "от" или например "до" :)
 
Чуть недоглядел с вариантом ОТ :)  
Так, теперь в ячейку пишем  
=VLOOKUPCOUPLE_OT('Журнал 2'!$B$8:$F$200;'Журнал 2'!$G$8:$G$200;1;B8;5;", ";" от ")  
 
Сама функция такая:  
 
Function VLOOKUPCOUPLE_OT(Table As Variant, Table2 As Variant, SearchColumnNum As Integer, SearchValue As Variant, _  
RezultColumnNum As Integer, Separator_ As String, Predlog As String)  
 
Dim i As Long  
Select Case TypeName(Table)  
Case "Range"  
For i = 1 To Table.Rows.Count  
If Table.Cells(i, SearchColumnNum) = SearchValue Then  
If VLOOKUPCOUPLE_OT <> "" Then  
VLOOKUPCOUPLE_OT = VLOOKUPCOUPLE_OT & Separator_ & Table.Cells(i, RezultColumnNum) & Predlog & Table2.Cells(i, 1)  
Else  
VLOOKUPCOUPLE_OT = Table.Cells(i, RezultColumnNum) & Predlog & Table2.Cells(i, 1)  
End If  
End If  
Next i  
Case "Variant()"  
For i = 1 To UBound(Table)  
If Table(i, SearchColumnNum) = SearchValue Then  
If VLOOKUPCOUPLE_OT <> "" Then  
VLOOKUPCOUPLE_OT = VLOOKUPCOUPLE_OT & Separator_ & Table.Cells(i, RezultColumnNum) & Predlog & Table2.Cells(i, 1)  
Else  
VLOOKUPCOUPLE_OT = Table(i, RezultColumnNum) & Predlog & Table2.Cells(i, 1)  
End If  
End If  
Next i  
End Select  
If VLOOKUPCOUPLE_OT = 0 Then VLOOKUPCOUPLE_OT = ""  
End Function  
 
Ещё нужно предусмотреть, чтоб размеры обоих диапазонов были одинаковые.
 
{quote}{login=Hugo}{date=31.01.2011 11:48}{thema=}{post}Чуть недоглядел с вариантом ОТ :)  
Так, теперь в ячейку пишем  
=VLOOKUPCOUPLE_OT('Журнал 2'!$B$8:$F$200;'Журнал 2'!$G$8:$G$200;1;B8;5;", ";" от ")  
 
:) то что надо (без учета зла – объединения ячеек  )!!!  
Hugo, СПАСИБО !!!!!  
Поистине, умная голова преградам не помеха. Как правильно и то, что лень – двигатель прогресса. :)  
(прим.: Hugo, скинь, пожалуйста, свой сотовый номер на azamat.d@list.ru - решение проблемы нуждается в благодарности).
 
:) Сотовый делу не поможет - я на абонентке. И не в России :)
 
Тогда мне надо разобраться с wedmoney что, куда ...... :)  
а не в России - это где (если не секрет)?
 
:) Но я Вам вечером напишу, если есть желание - можем один вариант проверить. У меня на электричество расходы большие :)
 
Погодите с вебмани - если есть кредитка :)
 
тогда жду вечера  
только с кредиткой в игры не играю ... :) (вдруг похитют ...)    
нужен самый простой вариант
 
off...  
Да просто мысль пришла... Но глянул - да, стрёмно там постороннему, всё не по русски...  
А мысль такая - оплатить расходы на электричество может любой человек с любой карты. И без накладных расходов, без потерь на посредников типа вебманей.  
А расходы в месяц порядка 100$ - так что есть ёмкость :)  
Но нужно доверие, т.е. в данном случае не подходит. Но как вариант среди доверенных лиц - почему нет? Так, изредка по мелочи, вместо "кинуть на телефон", чего у нас не практикуют...  
Остаются вебмани - на выходе ~70%, не анализировал...
 
{quote}{login=Hugo}{date=31.01.2011 10:00}{thema=}{post}Ну так я там в формуле диапазон с запасом задал, до 200. Можно и больше, хоть вообще $B:$E, но подтормаживает тогда...{/post}{/quote}  
 
Hugo, появился вопрос:  
1. При протягивании формулы на лист (см. пример) есть и пустые ячейки и с прелогами "от от от от от ..."    
2. Зависание (идут вычисления) если объем строк большой.  
Что можно сделать ?
 
Да, по первому пункту недоработка, нужно одно условие добавить:  
 
Function VLOOKUPCOUPLE_OT(Table As Variant, Table2 As Variant, SearchColumnNum As Integer, SearchValue As Variant, _  
RezultColumnNum As Integer, Separator_ As String, Predlog As String)  
'Table - таблица, где ищем  
'Table2 - таблица, где ищем даты  
'SearchColumnNum - столбец, где ищем  
'SearchValue - данные, которые ищем  
'RezultColumnNum - колонка, откуда берём результат  
'Separator_ - разделитель, желательно вводить с пробелом в конце  
'Predlog -  разделитель между номером и датой  
 
Dim i As Long  
If SearchValue <> "" Then  
Select Case TypeName(Table)  
Case "Range"  
For i = 1 To Table.Rows.Count  
If Table.Cells(i, SearchColumnNum) = SearchValue Then  
If VLOOKUPCOUPLE_OT <> "" Then  
VLOOKUPCOUPLE_OT = VLOOKUPCOUPLE_OT & Separator_ & Table.Cells(i, RezultColumnNum) & Predlog & Table2.Cells(i, 1)  
Else  
VLOOKUPCOUPLE_OT = Table.Cells(i, RezultColumnNum) & Predlog & Table2.Cells(i, 1)  
End If  
End If  
Next i  
Case "Variant()"  
For i = 1 To UBound(Table)  
If Table(i, SearchColumnNum) = SearchValue Then  
If VLOOKUPCOUPLE_OT <> "" Then  
VLOOKUPCOUPLE_OT = VLOOKUPCOUPLE_OT & Separator_ & Table.Cells(i, RezultColumnNum) & Predlog & Table2.Cells(i, 1)  
Else  
VLOOKUPCOUPLE_OT = Table(i, RezultColumnNum) & Predlog & Table2.Cells(i, 1)  
End If  
End If  
Next i  
End Select  
End If  
If VLOOKUPCOUPLE_OT = 0 Then VLOOKUPCOUPLE_OT = ""  
End Function  
 
Вот с зависаниями хуже, но может это условие уже помогло - не будет пустые ячейки гонять.
 
Hugo, приветствую!  
 
HELP!    
добавилось еще одно условие (про которое забыл указать в начале)  
В случае наличия порядкового номера повторной ТП нужно? чтобы привязка шла по нему тоже (выделено темно-зеленым цветом).
 
Помаленьку превращается в монстра :)
 
{quote}{login=Hugo}{date=14.02.2011 03:52}{thema=}{post}Помаленьку превращается в монстра :){/post}{/quote}  
 
:)  
 
Hugo, вопрос  
 
Зеленым цветом наименования ЮЛ (Столбец AG)- Function VLOOKUPCOUPLE как сделать аналогично Function VLOOKUPCOUPLE_OTT ?
 
Монстра наращивать не будем - просто убираем предлог, а вместо даты берём любой пустой диапазон, я взял L:  
 
=VLOOKUPCOUPLE_OTT('Журнал 2'!$B$8:$F$200;'Журнал 2'!$L$8:$L$200;1;2;B8;C8;4;", ";"")
 
{quote}{login=Hugo}{date=14.02.2011 06:11}{thema=}{post}Монстра наращивать не будем - просто убираем предлог, а вместо даты берём любой пустой диапазон, я взял L:  
 
=VLOOKUPCOUPLE_OTT('Журнал 2'!$B$8:$F$200;'Журнал 2'!$L$8:$L$200;1;2;B8;C8;4;", ";""){/post}{/quote}  
 
 
мдааа :) ... как все просто оказывается ...  
Hugo, СПАСИБО!
 
Новое условие (в файле).  
Подсчет количества дней при совпадении порядкового номера ТП.
 
для примера использована формула    
ЕСЛИ(И('Журнал 1'!AC8<>"";G8<>"");ЧИСТРАБДНИ('Журнал 1'!AC8;G8)-1;"")  
Вопрос как можно подсчитать количество дней при условии совпадания не только порядкового номера ТП Журнала 1 и Журнала 2 (АБВ-Х/001 и т.д.), но и порядкового номера повторной ТП (1, 2, 3 и т.д.).
 
{quote}{login=}{date=22.02.2011 01:18}{thema=}{post}для примера использована формула    
ЕСЛИ(И('Журнал 1'!AC8<>"";G8<>"");ЧИСТРАБДНИ('Журнал 1'!AC8;G8)-1;"")  
Вопрос как можно подсчитать количество дней при условии совпадания не только порядкового номера ТП Журнала 1 и Журнала 2 (АБВ-Х/001 и т.д.), но и порядкового номера повторной ТП (1, 2, 3 и т.д.).{/post}{/quote}  
 
Вопрос как можно подсчитать количество дней при условии совпадания не только порядкового номера ТП Журнала 1 и Журнала 2 (АБВ-Х/001 и т.д.), но и порядкового номера повторной ТП Журнала 1 и Журнала 2 (1, 2, 3 и т.д.).{/
 
Help-аните кто нить. Вопрос требует своего решения. :)
 
Вот сказали бы сразу и давно бы получили решение.
Страницы: 1 2 След.
Читают тему
Наверх