Результаты поиска
krosav4ig
Дата: Пятница, 20.03.2015, 16:45 |
Сообщение № 641 | Тема: Объединить разные строки
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация:
997
±
Замечаний:
0% ±
Excel 2007,2010,2013
..
email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
Сообщение отредактировал krosav4ig - Пятница, 20.03.2015, 16:56
Ответить
Сообщение .. Автор - krosav4ig Дата добавления - 20.03.2015 в 16:45
krosav4ig
Дата: Пятница, 20.03.2015, 17:18 |
Сообщение № 642 | Тема: Объединить разные строки
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация:
997
±
Замечаний:
0% ±
Excel 2007,2010,2013
расскажите, как сделали?)
вот так расскажите, как сделали?)
вот так (массивная формула)Код
=ЕСЛИ(И(A2<>"";ЕНД(ПОИСКПОЗ(СТРОКА();ЕСЛИ(($A$1:$A$10="")*($A$2:$A$11<>"")+(СТРОКА($A$2:$A$11)=2);СТРОКА($A$2:$A$11));)));ИНДЕКС(A:A;ПРОСМОТР(СТРОКА();ЕСЛИ(($A$1:$A$10="")*($A$2:$A$11<>"")+(СТРОКА($A$2:$A$11)=2);СТРОКА($A$2:$A$11))))&A2;"")
расскажите, как сделали?)
вот так расскажите, как сделали?)
вот так (массивная формула)Код
=ЕСЛИ(И(A2<>"";ЕНД(ПОИСКПОЗ(СТРОКА();ЕСЛИ(($A$1:$A$10="")*($A$2:$A$11<>"")+(СТРОКА($A$2:$A$11)=2);СТРОКА($A$2:$A$11));)));ИНДЕКС(A:A;ПРОСМОТР(СТРОКА();ЕСЛИ(($A$1:$A$10="")*($A$2:$A$11<>"")+(СТРОКА($A$2:$A$11)=2);СТРОКА($A$2:$A$11))))&A2;"")
krosav4ig
email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
Ответить
Сообщение расскажите, как сделали?)
вот так расскажите, как сделали?)
вот так (массивная формула)Код
=ЕСЛИ(И(A2<>"";ЕНД(ПОИСКПОЗ(СТРОКА();ЕСЛИ(($A$1:$A$10="")*($A$2:$A$11<>"")+(СТРОКА($A$2:$A$11)=2);СТРОКА($A$2:$A$11));)));ИНДЕКС(A:A;ПРОСМОТР(СТРОКА();ЕСЛИ(($A$1:$A$10="")*($A$2:$A$11<>"")+(СТРОКА($A$2:$A$11)=2);СТРОКА($A$2:$A$11))))&A2;"")
Автор - krosav4ig Дата добавления - 20.03.2015 в 17:18
krosav4ig
Дата: Пятница, 20.03.2015, 21:47 |
Сообщение № 643 | Тема: Печать файлов Word
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация:
997
±
Замечаний:
0% ±
Excel 2007,2010,2013
еще вариант [vba]Код
Sub PrintDoc() CreateObject("Shell.Application").Namespace(0). _ ParseName(ThisWorkbook.Path & "\otdr.doc").InvokeVerbEx "Print" End Sub
[/vba]
еще вариант [vba]Код
Sub PrintDoc() CreateObject("Shell.Application").Namespace(0). _ ParseName(ThisWorkbook.Path & "\otdr.doc").InvokeVerbEx "Print" End Sub
[/vba] krosav4ig
email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
Ответить
Сообщение еще вариант [vba]Код
Sub PrintDoc() CreateObject("Shell.Application").Namespace(0). _ ParseName(ThisWorkbook.Path & "\otdr.doc").InvokeVerbEx "Print" End Sub
[/vba] Автор - krosav4ig Дата добавления - 20.03.2015 в 21:47
krosav4ig
Дата: Воскресенье, 22.03.2015, 00:00 |
Сообщение № 644 | Тема: Закраска ячеек, которые содержат нуль и не равны пусто
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация:
997
±
Замечаний:
0% ±
Excel 2007,2010,2013
еще вариант формулы для УФ
email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
Ответить
Сообщение еще вариант формулы для УФ Автор - krosav4ig Дата добавления - 22.03.2015 в 00:00
krosav4ig
Дата: Воскресенье, 22.03.2015, 02:53 |
Сообщение № 645 | Тема: Закраска ячеек, которые содержат нуль и не равны пусто
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация:
997
±
Замечаний:
0% ±
Excel 2007,2010,2013
KSV , пасяба подозреваю, что это из-за того, что содержимое ячейки считывается только один раз
тут это значительно влияет на результат [offtop]добавил еще 1 процедуру
[vba]
Код
Private Sub Test3() Dim lngTime As Long Dim i As Long Dim b As Boolean lngTime = GetTickCount() For i = 1& To IterationCount b = (a & "" = "0") Next lngTime = GetTickCount() - lngTime Debug.Print "Test3 = "; lngTime End Sub
[/vba]
на выходе получил
[vba]
Код
' при пустой A1 Test1 = 98109 Test1 = 98016 Test1 = 98000 Test2 = 98610 Test2 = 98500 Test2 = 98000 Test3 = 50062 Test3 = 49828 Test3 = 50000 ' при A1 = 0 Test1 = 99734 Test1 = 99671 Test1 = 99703 Test2 = 99766 Test2 = 99797 Test2 = 99797 Test3 = 51078 Test3 = 51094 Test3 = 51265 ' A1 = 777 Test1 = 100531 Test1 = 100141 Test1 = 100172 Test2 = 100329 Test2 = 100187 Test2 = 100297 Test3 = 51360 Test3 = 51360 Test3 = 51375
[/vba]
[p.s.]intel core 2 duo E6550, Win 6.1 build 7600 x32, Office 2013 Pro+ x32[/offtop]
KSV , пасяба подозреваю, что это из-за того, что содержимое ячейки считывается только один раз
тут это значительно влияет на результат [offtop]добавил еще 1 процедуру
[vba]
Код
Private Sub Test3() Dim lngTime As Long Dim i As Long Dim b As Boolean lngTime = GetTickCount() For i = 1& To IterationCount b = (a & "" = "0") Next lngTime = GetTickCount() - lngTime Debug.Print "Test3 = "; lngTime End Sub
[/vba]
на выходе получил
[vba]
Код
' при пустой A1 Test1 = 98109 Test1 = 98016 Test1 = 98000 Test2 = 98610 Test2 = 98500 Test2 = 98000 Test3 = 50062 Test3 = 49828 Test3 = 50000 ' при A1 = 0 Test1 = 99734 Test1 = 99671 Test1 = 99703 Test2 = 99766 Test2 = 99797 Test2 = 99797 Test3 = 51078 Test3 = 51094 Test3 = 51265 ' A1 = 777 Test1 = 100531 Test1 = 100141 Test1 = 100172 Test2 = 100329 Test2 = 100187 Test2 = 100297 Test3 = 51360 Test3 = 51360 Test3 = 51375
[/vba]
[p.s.]intel core 2 duo E6550, Win 6.1 build 7600 x32, Office 2013 Pro+ x32[/offtop]krosav4ig
email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
Сообщение отредактировал krosav4ig - Воскресенье, 22.03.2015, 03:12
Ответить
Сообщение KSV , пасяба подозреваю, что это из-за того, что содержимое ячейки считывается только один раз
тут это значительно влияет на результат [offtop]добавил еще 1 процедуру
[vba]
Код
Private Sub Test3() Dim lngTime As Long Dim i As Long Dim b As Boolean lngTime = GetTickCount() For i = 1& To IterationCount b = (a & "" = "0") Next lngTime = GetTickCount() - lngTime Debug.Print "Test3 = "; lngTime End Sub
[/vba]
на выходе получил
[vba]
Код
' при пустой A1 Test1 = 98109 Test1 = 98016 Test1 = 98000 Test2 = 98610 Test2 = 98500 Test2 = 98000 Test3 = 50062 Test3 = 49828 Test3 = 50000 ' при A1 = 0 Test1 = 99734 Test1 = 99671 Test1 = 99703 Test2 = 99766 Test2 = 99797 Test2 = 99797 Test3 = 51078 Test3 = 51094 Test3 = 51265 ' A1 = 777 Test1 = 100531 Test1 = 100141 Test1 = 100172 Test2 = 100329 Test2 = 100187 Test2 = 100297 Test3 = 51360 Test3 = 51360 Test3 = 51375
[/vba]
[p.s.]intel core 2 duo E6550, Win 6.1 build 7600 x32, Office 2013 Pro+ x32[/offtop]Автор - krosav4ig Дата добавления - 22.03.2015 в 02:53
krosav4ig
Дата: Воскресенье, 22.03.2015, 03:02 |
Сообщение № 646 | Тема: Закраска ячеек, которые содержат нуль и не равны пусто
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация:
997
±
Замечаний:
0% ±
Excel 2007,2010,2013
[offtop]для чистоты эксперимента считываю значение из A1 в переменную на выходе получается не все так однозначно
[vba]
Код
'A1 пусто Test1 = 329 Test1 = 312 Test1 = 328 Test1 = 328 Test1 = 312 Test1 = 313 Test1 = 328 Test1 = 328 Test1 = 328 Test1 = 312 Test2 = 328 Test2 = 328 Test2 = 328 Test2 = 328 Test2 = 328 Test2 = 328 Test2 = 344 Test2 = 328 Test2 = 328 Test2 = 329 Test3 = 531 Test3 = 515 Test3 = 516 Test3 = 516 Test3 = 531 Test3 = 516 Test3 = 531 Test3 = 515 Test3 = 516 Test3 = 531 'A1 = 0 Test1 = 469 Test1 = 453 Test1 = 453 Test1 = 453 Test1 = 468 Test1 = 469 Test1 = 469 Test1 = 469 Test1 = 453 Test1 = 469 Test2 = 468 Test2 = 469 Test2 = 453 Test2 = 484 Test2 = 469 Test2 = 469 Test2 = 468 Test2 = 469 Test2 = 469 Test2 = 484 Test3 = 625 Test3 = 641 Test3 = 641 Test3 = 640 Test3 = 641 Test3 = 640 Test3 = 641 Test3 = 641 Test3 = 640 Test3 = 641 'A1 = 777 Test1 = 641 Test1 = 640 Test1 = 641 Test1 = 641 Test1 = 625 Test1 = 656 Test1 = 625 Test1 = 656 Test1 = 625 Test1 = 656 Test2 = 625 Test2 = 641 Test2 = 641 Test2 = 625 Test2 = 625 Test2 = 625 Test2 = 640 Test2 = 641 Test2 = 625 Test2 = 625 Test3 = 813 Test3 = 828 Test3 = 828 Test3 = 797 Test3 = 844 Test3 = 812 Test3 = 828 Test3 = 829 Test3 = 828 Test3 = 828 'A1 = lkj Test1 = 1109 Test1 = 1094 Test1 = 1094 Test1 = 1109 Test1 = 1109 Test1 = 1110 Test1 = 1093 Test1 = 1110 Test1 = 1109 Test1 = 1172 Test2 = 1125 Test2 = 1109 Test2 = 1094 Test2 = 1094 Test2 = 1109 Test2 = 1094 Test2 = 1109 Test2 = 1109 Test2 = 1094 Test2 = 1094 Test3 = 406 Test3 = 391 Test3 = 390 Test3 = 407 Test3 = 406 Test3 = 406 Test3 = 406 Test3 = 391 Test3 = 422 Test3 = 406
[/vba]
[/offtop]
[offtop]для чистоты эксперимента считываю значение из A1 в переменную на выходе получается не все так однозначно
[vba]
Код
'A1 пусто Test1 = 329 Test1 = 312 Test1 = 328 Test1 = 328 Test1 = 312 Test1 = 313 Test1 = 328 Test1 = 328 Test1 = 328 Test1 = 312 Test2 = 328 Test2 = 328 Test2 = 328 Test2 = 328 Test2 = 328 Test2 = 328 Test2 = 344 Test2 = 328 Test2 = 328 Test2 = 329 Test3 = 531 Test3 = 515 Test3 = 516 Test3 = 516 Test3 = 531 Test3 = 516 Test3 = 531 Test3 = 515 Test3 = 516 Test3 = 531 'A1 = 0 Test1 = 469 Test1 = 453 Test1 = 453 Test1 = 453 Test1 = 468 Test1 = 469 Test1 = 469 Test1 = 469 Test1 = 453 Test1 = 469 Test2 = 468 Test2 = 469 Test2 = 453 Test2 = 484 Test2 = 469 Test2 = 469 Test2 = 468 Test2 = 469 Test2 = 469 Test2 = 484 Test3 = 625 Test3 = 641 Test3 = 641 Test3 = 640 Test3 = 641 Test3 = 640 Test3 = 641 Test3 = 641 Test3 = 640 Test3 = 641 'A1 = 777 Test1 = 641 Test1 = 640 Test1 = 641 Test1 = 641 Test1 = 625 Test1 = 656 Test1 = 625 Test1 = 656 Test1 = 625 Test1 = 656 Test2 = 625 Test2 = 641 Test2 = 641 Test2 = 625 Test2 = 625 Test2 = 625 Test2 = 640 Test2 = 641 Test2 = 625 Test2 = 625 Test3 = 813 Test3 = 828 Test3 = 828 Test3 = 797 Test3 = 844 Test3 = 812 Test3 = 828 Test3 = 829 Test3 = 828 Test3 = 828 'A1 = lkj Test1 = 1109 Test1 = 1094 Test1 = 1094 Test1 = 1109 Test1 = 1109 Test1 = 1110 Test1 = 1093 Test1 = 1110 Test1 = 1109 Test1 = 1172 Test2 = 1125 Test2 = 1109 Test2 = 1094 Test2 = 1094 Test2 = 1109 Test2 = 1094 Test2 = 1109 Test2 = 1109 Test2 = 1094 Test2 = 1094 Test3 = 406 Test3 = 391 Test3 = 390 Test3 = 407 Test3 = 406 Test3 = 406 Test3 = 406 Test3 = 391 Test3 = 422 Test3 = 406
[/vba]
[/offtop] krosav4ig
К сообщению приложен файл:
test.xls
(50.5 Kb)
email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
Сообщение отредактировал krosav4ig - Воскресенье, 22.03.2015, 03:11
Ответить
Сообщение [offtop]для чистоты эксперимента считываю значение из A1 в переменную на выходе получается не все так однозначно
[vba]
Код
'A1 пусто Test1 = 329 Test1 = 312 Test1 = 328 Test1 = 328 Test1 = 312 Test1 = 313 Test1 = 328 Test1 = 328 Test1 = 328 Test1 = 312 Test2 = 328 Test2 = 328 Test2 = 328 Test2 = 328 Test2 = 328 Test2 = 328 Test2 = 344 Test2 = 328 Test2 = 328 Test2 = 329 Test3 = 531 Test3 = 515 Test3 = 516 Test3 = 516 Test3 = 531 Test3 = 516 Test3 = 531 Test3 = 515 Test3 = 516 Test3 = 531 'A1 = 0 Test1 = 469 Test1 = 453 Test1 = 453 Test1 = 453 Test1 = 468 Test1 = 469 Test1 = 469 Test1 = 469 Test1 = 453 Test1 = 469 Test2 = 468 Test2 = 469 Test2 = 453 Test2 = 484 Test2 = 469 Test2 = 469 Test2 = 468 Test2 = 469 Test2 = 469 Test2 = 484 Test3 = 625 Test3 = 641 Test3 = 641 Test3 = 640 Test3 = 641 Test3 = 640 Test3 = 641 Test3 = 641 Test3 = 640 Test3 = 641 'A1 = 777 Test1 = 641 Test1 = 640 Test1 = 641 Test1 = 641 Test1 = 625 Test1 = 656 Test1 = 625 Test1 = 656 Test1 = 625 Test1 = 656 Test2 = 625 Test2 = 641 Test2 = 641 Test2 = 625 Test2 = 625 Test2 = 625 Test2 = 640 Test2 = 641 Test2 = 625 Test2 = 625 Test3 = 813 Test3 = 828 Test3 = 828 Test3 = 797 Test3 = 844 Test3 = 812 Test3 = 828 Test3 = 829 Test3 = 828 Test3 = 828 'A1 = lkj Test1 = 1109 Test1 = 1094 Test1 = 1094 Test1 = 1109 Test1 = 1109 Test1 = 1110 Test1 = 1093 Test1 = 1110 Test1 = 1109 Test1 = 1172 Test2 = 1125 Test2 = 1109 Test2 = 1094 Test2 = 1094 Test2 = 1109 Test2 = 1094 Test2 = 1109 Test2 = 1109 Test2 = 1094 Test2 = 1094 Test3 = 406 Test3 = 391 Test3 = 390 Test3 = 407 Test3 = 406 Test3 = 406 Test3 = 406 Test3 = 391 Test3 = 422 Test3 = 406
[/vba]
[/offtop] Автор - krosav4ig Дата добавления - 22.03.2015 в 03:02
krosav4ig
Дата: Воскресенье, 22.03.2015, 08:58 |
Сообщение № 647 | Тема: Очистка ячеек таблицы Word из vba кода Excel
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация:
997
±
Замечаний:
0% ±
Excel 2007,2010,2013
aequit , держите еще один вариант, без перебора ячеек
aequit , держите еще один вариант, без перебора ячеекkrosav4ig
email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
Сообщение отредактировал krosav4ig - Воскресенье, 22.03.2015, 09:11
Ответить
Сообщение aequit , держите еще один вариант, без перебора ячеекАвтор - krosav4ig Дата добавления - 22.03.2015 в 08:58
krosav4ig
Дата: Воскресенье, 22.03.2015, 10:09 |
Сообщение № 648 | Тема: Сводная таблица с 3 листов. Между нужн столбцами есть лишние
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация:
997
±
Замечаний:
0% ±
Excel 2007,2010,2013
добавлять нужно Таблица1[#Все], Таблица14[#Все], и т.д. без [#Все] таблицы добавляются в сводную без заголовков, а заголовками принимается первая строка данных
добавлять нужно Таблица1[#Все], Таблица14[#Все], и т.д. без [#Все] таблицы добавляются в сводную без заголовков, а заголовками принимается первая строка данных krosav4ig
email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
Ответить
Сообщение добавлять нужно Таблица1[#Все], Таблица14[#Все], и т.д. без [#Все] таблицы добавляются в сводную без заголовков, а заголовками принимается первая строка данных Автор - krosav4ig Дата добавления - 22.03.2015 в 10:09
krosav4ig
Дата: Понедельник, 23.03.2015, 11:46 |
Сообщение № 649 | Тема: Присвоить имя формуле, чтобы она работала во всех вкладках
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация:
997
±
Замечаний:
0% ±
Excel 2007,2010,2013
или, как вариант, переписать формулу так Код
=ИНДЕКС(Исходн!$C:$C;ПОИСКПОЗ(ДВССЫЛ("r1c"&СТОЛБЕЦ();)&ДВССЫЛ("r"&СТРОКА()&"c1";);Исходн!$A:$A&Исходн!$B:$B;0);1)
в принципе, тут можно обойтись и без массива Код
=ВПР(ДВССЫЛ("r"&СТРОКА()&"c1";);ИНДЕКС(Исходн!$B:$B;ПОИСКПОЗ(ДВССЫЛ("r1c"&СТОЛБЕЦ(););Исходн!$A:$A;)):ИНДЕКС(Исходн!$C:$C;ПОИСКПОЗ(ДВССЫЛ("r1c"&СТОЛБЕЦ(););Исходн!$A:$A));2;)
или, как вариант, переписать формулу так Код
=ИНДЕКС(Исходн!$C:$C;ПОИСКПОЗ(ДВССЫЛ("r1c"&СТОЛБЕЦ();)&ДВССЫЛ("r"&СТРОКА()&"c1";);Исходн!$A:$A&Исходн!$B:$B;0);1)
в принципе, тут можно обойтись и без массива Код
=ВПР(ДВССЫЛ("r"&СТРОКА()&"c1";);ИНДЕКС(Исходн!$B:$B;ПОИСКПОЗ(ДВССЫЛ("r1c"&СТОЛБЕЦ(););Исходн!$A:$A;)):ИНДЕКС(Исходн!$C:$C;ПОИСКПОЗ(ДВССЫЛ("r1c"&СТОЛБЕЦ(););Исходн!$A:$A));2;)
krosav4ig
email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
Сообщение отредактировал krosav4ig - Понедельник, 23.03.2015, 12:18
Ответить
Сообщение или, как вариант, переписать формулу так Код
=ИНДЕКС(Исходн!$C:$C;ПОИСКПОЗ(ДВССЫЛ("r1c"&СТОЛБЕЦ();)&ДВССЫЛ("r"&СТРОКА()&"c1";);Исходн!$A:$A&Исходн!$B:$B;0);1)
в принципе, тут можно обойтись и без массива Код
=ВПР(ДВССЫЛ("r"&СТРОКА()&"c1";);ИНДЕКС(Исходн!$B:$B;ПОИСКПОЗ(ДВССЫЛ("r1c"&СТОЛБЕЦ(););Исходн!$A:$A;)):ИНДЕКС(Исходн!$C:$C;ПОИСКПОЗ(ДВССЫЛ("r1c"&СТОЛБЕЦ(););Исходн!$A:$A));2;)
Автор - krosav4ig Дата добавления - 23.03.2015 в 11:46
krosav4ig
Дата: Понедельник, 23.03.2015, 21:15 |
Сообщение № 650 | Тема: Как сделать выборку по тексту в одной ячейке и перенести?
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация:
997
±
Замечаний:
0% ±
Excel 2007,2010,2013
у меня получилась куча формул в макросе выделяете одну или несколько ячеек с данными из столбца B на листе Datapool , жмете кнопку и смотрите результат на листе New format код в модуле листа Datapool
[vba]
Код
Option Base 1 Private Sub ggg() Const NumCols% = 5 Dim NumRows& Dim strAddr$, strTmp$ Dim strFind(), strReplace(), Arr2() Dim Arr As Variant Dim rng As Range, rng2 As Range With Application If Not ActiveSheet Is Me Or .Index(Selection, 1, 0).Count > 1 Then Exit Sub strAddr = Selection.Address(, , .ReferenceStyle) Set rng = Selection.Offset(, 1) strFind = Array(""")" & vbLf & "(" & ChrW(20135) & ChrW(21697) & ChrW(23646) & ChrW(24615) & ":Color:""", _ """)" & vbLf & "(" & ChrW(21830) & ChrW(23478) & ChrW(32534) & ChrW(30721) & ":""", _ """)" & vbLf & "(" & ChrW(20135) & ChrW(21697) & ChrW(25968) & ChrW(-28209) & ":""", _ """" & ChrW(12289) & "Size:""") strReplace = Array(""")" & vbLf & """", _ """" & vbLf & """") Arr = Evaluate("transpose(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(" & strAddr & "," & _ strFind(1) & "," & strReplace(1) & ")," & strFind(2) & "," & strReplace(2) & ")," & _ strFind(3) & "," & strReplace(2) & ")," & strFind(4) & "," & strReplace(2) & _ "),"" piece)"",""""))") If Selection.Count = 1 Then: strTmp = Arr: Else strTmp = Join(Arr, vbLf) Arr2 = .Transpose(Split(strTmp, vbLf)) NumRows = UBound(Arr2) \ NumCols Arr = .Index(.Index(Arr2, Evaluate("(ROW(" & Cells(1).Address(, , _ .ReferenceStyle) & ":INDEX(" & Columns(1).Address(, , .ReferenceStyle) & "," & NumRows & _ "))-1)*" & NumCols & "+COLUMN(" & Cells(1).Address(, , .ReferenceStyle) & ":INDEX(" & _ Rows(1).Address(, , .ReferenceStyle) & "," & NumCols & "))")), Evaluate("ROW(" & _ Cells(1).Address(, , .ReferenceStyle) & ":INDEX(" & Columns(1).Address(, , _ .ReferenceStyle) & "," & NumRows & "))"), Array(1, 4, 5, 2, 3)) End With With Worksheets("New format") With .[B1].Offset(.Cells(.Rows.Count, 1).End(xlUp).Row).Resize(NumRows, NumCols) .NumberFormat = "general": .Columns(2).NumberFormat = "@": .Value = Arr With .Resize(1, 1).Offset(, -1) Set rng2 = .Resize(NumRows) .NumberFormat = "general" .FormulaArray = "=COUNT(1/(" & .Offset(, 1).Address & ":" & .Offset(, 1).Address(0, 0) & "<" & _ .Offset(-1, 1).Address & ":" & .Offset(-1, 1).Address(0, 0) & "))" .AutoFill rng2: Arr = Application.Index(rng, rng2) rng2.NumberFormat = "@": rng2.Value = Arr End With .Replace ChrW(12304) & "*" & ChrW(12305) & " ", "", 2, 1 End With End With End Sub
[/vba]
у меня получилась куча формул в макросе выделяете одну или несколько ячеек с данными из столбца B на листе Datapool , жмете кнопку и смотрите результат на листе New format код в модуле листа Datapool
[vba]
Код
Option Base 1 Private Sub ggg() Const NumCols% = 5 Dim NumRows& Dim strAddr$, strTmp$ Dim strFind(), strReplace(), Arr2() Dim Arr As Variant Dim rng As Range, rng2 As Range With Application If Not ActiveSheet Is Me Or .Index(Selection, 1, 0).Count > 1 Then Exit Sub strAddr = Selection.Address(, , .ReferenceStyle) Set rng = Selection.Offset(, 1) strFind = Array(""")" & vbLf & "(" & ChrW(20135) & ChrW(21697) & ChrW(23646) & ChrW(24615) & ":Color:""", _ """)" & vbLf & "(" & ChrW(21830) & ChrW(23478) & ChrW(32534) & ChrW(30721) & ":""", _ """)" & vbLf & "(" & ChrW(20135) & ChrW(21697) & ChrW(25968) & ChrW(-28209) & ":""", _ """" & ChrW(12289) & "Size:""") strReplace = Array(""")" & vbLf & """", _ """" & vbLf & """") Arr = Evaluate("transpose(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(" & strAddr & "," & _ strFind(1) & "," & strReplace(1) & ")," & strFind(2) & "," & strReplace(2) & ")," & _ strFind(3) & "," & strReplace(2) & ")," & strFind(4) & "," & strReplace(2) & _ "),"" piece)"",""""))") If Selection.Count = 1 Then: strTmp = Arr: Else strTmp = Join(Arr, vbLf) Arr2 = .Transpose(Split(strTmp, vbLf)) NumRows = UBound(Arr2) \ NumCols Arr = .Index(.Index(Arr2, Evaluate("(ROW(" & Cells(1).Address(, , _ .ReferenceStyle) & ":INDEX(" & Columns(1).Address(, , .ReferenceStyle) & "," & NumRows & _ "))-1)*" & NumCols & "+COLUMN(" & Cells(1).Address(, , .ReferenceStyle) & ":INDEX(" & _ Rows(1).Address(, , .ReferenceStyle) & "," & NumCols & "))")), Evaluate("ROW(" & _ Cells(1).Address(, , .ReferenceStyle) & ":INDEX(" & Columns(1).Address(, , _ .ReferenceStyle) & "," & NumRows & "))"), Array(1, 4, 5, 2, 3)) End With With Worksheets("New format") With .[B1].Offset(.Cells(.Rows.Count, 1).End(xlUp).Row).Resize(NumRows, NumCols) .NumberFormat = "general": .Columns(2).NumberFormat = "@": .Value = Arr With .Resize(1, 1).Offset(, -1) Set rng2 = .Resize(NumRows) .NumberFormat = "general" .FormulaArray = "=COUNT(1/(" & .Offset(, 1).Address & ":" & .Offset(, 1).Address(0, 0) & "<" & _ .Offset(-1, 1).Address & ":" & .Offset(-1, 1).Address(0, 0) & "))" .AutoFill rng2: Arr = Application.Index(rng, rng2) rng2.NumberFormat = "@": rng2.Value = Arr End With .Replace ChrW(12304) & "*" & ChrW(12305) & " ", "", 2, 1 End With End With End Sub
[/vba]
krosav4ig
email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
Ответить
Сообщение у меня получилась куча формул в макросе выделяете одну или несколько ячеек с данными из столбца B на листе Datapool , жмете кнопку и смотрите результат на листе New format код в модуле листа Datapool
[vba]
Код
Option Base 1 Private Sub ggg() Const NumCols% = 5 Dim NumRows& Dim strAddr$, strTmp$ Dim strFind(), strReplace(), Arr2() Dim Arr As Variant Dim rng As Range, rng2 As Range With Application If Not ActiveSheet Is Me Or .Index(Selection, 1, 0).Count > 1 Then Exit Sub strAddr = Selection.Address(, , .ReferenceStyle) Set rng = Selection.Offset(, 1) strFind = Array(""")" & vbLf & "(" & ChrW(20135) & ChrW(21697) & ChrW(23646) & ChrW(24615) & ":Color:""", _ """)" & vbLf & "(" & ChrW(21830) & ChrW(23478) & ChrW(32534) & ChrW(30721) & ":""", _ """)" & vbLf & "(" & ChrW(20135) & ChrW(21697) & ChrW(25968) & ChrW(-28209) & ":""", _ """" & ChrW(12289) & "Size:""") strReplace = Array(""")" & vbLf & """", _ """" & vbLf & """") Arr = Evaluate("transpose(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(" & strAddr & "," & _ strFind(1) & "," & strReplace(1) & ")," & strFind(2) & "," & strReplace(2) & ")," & _ strFind(3) & "," & strReplace(2) & ")," & strFind(4) & "," & strReplace(2) & _ "),"" piece)"",""""))") If Selection.Count = 1 Then: strTmp = Arr: Else strTmp = Join(Arr, vbLf) Arr2 = .Transpose(Split(strTmp, vbLf)) NumRows = UBound(Arr2) \ NumCols Arr = .Index(.Index(Arr2, Evaluate("(ROW(" & Cells(1).Address(, , _ .ReferenceStyle) & ":INDEX(" & Columns(1).Address(, , .ReferenceStyle) & "," & NumRows & _ "))-1)*" & NumCols & "+COLUMN(" & Cells(1).Address(, , .ReferenceStyle) & ":INDEX(" & _ Rows(1).Address(, , .ReferenceStyle) & "," & NumCols & "))")), Evaluate("ROW(" & _ Cells(1).Address(, , .ReferenceStyle) & ":INDEX(" & Columns(1).Address(, , _ .ReferenceStyle) & "," & NumRows & "))"), Array(1, 4, 5, 2, 3)) End With With Worksheets("New format") With .[B1].Offset(.Cells(.Rows.Count, 1).End(xlUp).Row).Resize(NumRows, NumCols) .NumberFormat = "general": .Columns(2).NumberFormat = "@": .Value = Arr With .Resize(1, 1).Offset(, -1) Set rng2 = .Resize(NumRows) .NumberFormat = "general" .FormulaArray = "=COUNT(1/(" & .Offset(, 1).Address & ":" & .Offset(, 1).Address(0, 0) & "<" & _ .Offset(-1, 1).Address & ":" & .Offset(-1, 1).Address(0, 0) & "))" .AutoFill rng2: Arr = Application.Index(rng, rng2) rng2.NumberFormat = "@": rng2.Value = Arr End With .Replace ChrW(12304) & "*" & ChrW(12305) & " ", "", 2, 1 End With End With End Sub
[/vba]
Автор - krosav4ig Дата добавления - 23.03.2015 в 21:15
krosav4ig
Дата: Понедельник, 23.03.2015, 21:30 |
Сообщение № 651 | Тема: Закраска ячеек, которые содержат нуль и не равны пусто
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация:
997
±
Замечаний:
0% ±
Excel 2007,2010,2013
[offtop]KSV , ну про неявное приведение типа мне тоже понятно, я имел ввиду разницу времени выполнения между логическим И и произведением при числовых(!=0) и текстовых значениях A1[/offtop]
[offtop]KSV , ну про неявное приведение типа мне тоже понятно, я имел ввиду разницу времени выполнения между логическим И и произведением при числовых(!=0) и текстовых значениях A1[/offtop] krosav4ig
email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
Сообщение отредактировал krosav4ig - Вторник, 24.03.2015, 16:37
Ответить
Сообщение [offtop]KSV , ну про неявное приведение типа мне тоже понятно, я имел ввиду разницу времени выполнения между логическим И и произведением при числовых(!=0) и текстовых значениях A1[/offtop] Автор - krosav4ig Дата добавления - 23.03.2015 в 21:30
krosav4ig
Дата: Вторник, 24.03.2015, 12:05 |
Сообщение № 652 | Тема: Нормировка от 0 до 1 и от 0 до -1
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация:
997
±
Замечаний:
0% ±
Excel 2007,2010,2013
Лучше в имена закинуть сразу (_norm):
Код
=Лист1!$B8:СМЕЩ(Лист1!$B8;-Лист1!$L$8-1;)
ИМХО лучше Код
=Лист1!$B8:ИНДЕКС(Лист1!$B:$B;СТРОКА()-Лист1!$L$8-1;)
Лучше в имена закинуть сразу (_norm):
Код
=Лист1!$B8:СМЕЩ(Лист1!$B8;-Лист1!$L$8-1;)
ИМХО лучше Код
=Лист1!$B8:ИНДЕКС(Лист1!$B:$B;СТРОКА()-Лист1!$L$8-1;)
krosav4ig
email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
Ответить
Сообщение Лучше в имена закинуть сразу (_norm):
Код
=Лист1!$B8:СМЕЩ(Лист1!$B8;-Лист1!$L$8-1;)
ИМХО лучше Код
=Лист1!$B8:ИНДЕКС(Лист1!$B:$B;СТРОКА()-Лист1!$L$8-1;)
Автор - krosav4ig Дата добавления - 24.03.2015 в 12:05
krosav4ig
Дата: Вторник, 24.03.2015, 13:24 |
Сообщение № 653 | Тема: Подсчет уникальных значений без ограничения диапазона
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация:
997
±
Замечаний:
0% ±
Excel 2007,2010,2013
если в 1 столбце будут только числа, записанные текстом, то можно еще так формула массива Код
=СЧЁТ(1/ЧАСТОТА(-A3:A20;-A3:A20)/(B3:B20="И1"))
upd. обнаружился косяк вот формула Код
=СЧЁТ(1/ЕСЛИ(B3:B20="И1";ЧАСТОТА(A3:A20*(B3:B20="И1");A3:A20*(B3:B20="И1"))))
если в 1 столбце будут только числа, записанные текстом, то можно еще так формула массива Код
=СЧЁТ(1/ЧАСТОТА(-A3:A20;-A3:A20)/(B3:B20="И1"))
upd. обнаружился косяк вот формула Код
=СЧЁТ(1/ЕСЛИ(B3:B20="И1";ЧАСТОТА(A3:A20*(B3:B20="И1");A3:A20*(B3:B20="И1"))))
krosav4ig
email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
Сообщение отредактировал krosav4ig - Вторник, 24.03.2015, 15:49
Ответить
Сообщение если в 1 столбце будут только числа, записанные текстом, то можно еще так формула массива Код
=СЧЁТ(1/ЧАСТОТА(-A3:A20;-A3:A20)/(B3:B20="И1"))
upd. обнаружился косяк вот формула Код
=СЧЁТ(1/ЕСЛИ(B3:B20="И1";ЧАСТОТА(A3:A20*(B3:B20="И1");A3:A20*(B3:B20="И1"))))
Автор - krosav4ig Дата добавления - 24.03.2015 в 13:24
krosav4ig
Дата: Среда, 25.03.2015, 11:27 |
Сообщение № 654 | Тема: СЦЕПИТЬ 2 значения ВПР (с одинаковым искомым)
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация:
997
±
Замечаний:
0% ±
Excel 2007,2010,2013
вот, держите формула + UDF Код
=JoinArr(ТРАНСП(ПРОСМОТР(НАИМЕНЬШИЙ(ЕСЛИ('Вопрос 2'!$B$6:$B$29=D6;СТРОКА('Вопрос 2'!$B$6:$B$29));СТРОКА($A$1:ИНДЕКС($A:$A;СЧЁТЕСЛИ('Вопрос 2'!$B$6:$B$29;D6))));СТРОКА('Вопрос 2'!$B$6:$B$29);'Вопрос 2'!$D$6:$D$29));",")
[vba]
Код
Function JoinArr$(arr As Variant, Optional delim$ = ", ") JoinArr = join(arr, delim) End Function
[/vba]
по поводу 2 вопроса: читайте правила форума , создавайте отдельную тему
вот, держите формула + UDF Код
=JoinArr(ТРАНСП(ПРОСМОТР(НАИМЕНЬШИЙ(ЕСЛИ('Вопрос 2'!$B$6:$B$29=D6;СТРОКА('Вопрос 2'!$B$6:$B$29));СТРОКА($A$1:ИНДЕКС($A:$A;СЧЁТЕСЛИ('Вопрос 2'!$B$6:$B$29;D6))));СТРОКА('Вопрос 2'!$B$6:$B$29);'Вопрос 2'!$D$6:$D$29));",")
[vba]
Код
Function JoinArr$(arr As Variant, Optional delim$ = ", ") JoinArr = join(arr, delim) End Function
[/vba]
по поводу 2 вопроса: читайте правила форума , создавайте отдельную тему krosav4ig
email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
Сообщение отредактировал krosav4ig - Среда, 25.03.2015, 12:46
Ответить
Сообщение вот, держите формула + UDF Код
=JoinArr(ТРАНСП(ПРОСМОТР(НАИМЕНЬШИЙ(ЕСЛИ('Вопрос 2'!$B$6:$B$29=D6;СТРОКА('Вопрос 2'!$B$6:$B$29));СТРОКА($A$1:ИНДЕКС($A:$A;СЧЁТЕСЛИ('Вопрос 2'!$B$6:$B$29;D6))));СТРОКА('Вопрос 2'!$B$6:$B$29);'Вопрос 2'!$D$6:$D$29));",")
[vba]
Код
Function JoinArr$(arr As Variant, Optional delim$ = ", ") JoinArr = join(arr, delim) End Function
[/vba]
по поводу 2 вопроса: читайте правила форума , создавайте отдельную тему Автор - krosav4ig Дата добавления - 25.03.2015 в 11:27
krosav4ig
Дата: Среда, 25.03.2015, 12:47 |
Сообщение № 655 | Тема: СЦЕПИТЬ 2 значения ВПР (с одинаковым искомым)
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация:
997
±
Замечаний:
0% ±
Excel 2007,2010,2013
добавил решение в предыдущий пост
email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
Ответить
Сообщение добавил решение в предыдущий пост Автор - krosav4ig Дата добавления - 25.03.2015 в 12:47
krosav4ig
Дата: Среда, 25.03.2015, 13:12 |
Сообщение № 656 | Тема: подтянуть ВПРом несколько значений
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация:
997
±
Замечаний:
0% ±
Excel 2007,2010,2013
если добавить доп.столбец, то можно сводной и по горизонтали расположить
если добавить доп.столбец, то можно сводной и по горизонтали расположить krosav4ig
email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
Ответить
Сообщение если добавить доп.столбец, то можно сводной и по горизонтали расположить Автор - krosav4ig Дата добавления - 25.03.2015 в 13:12
krosav4ig
Дата: Среда, 25.03.2015, 16:08 |
Сообщение № 657 | Тема: Сортировка формулами
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация:
997
±
Замечаний:
0% ±
Excel 2007,2010,2013
Вчера, когда смотрел эту тему, из-за отсутствия примера подумал, что из строки типа "0, 1, 0, 3, 0, 0" нужно получить "1, 3, 0, 0, 0, 0", даже формулу с UDF-кой придумал, а оказалось, что числа в отдельных ячейках. Ну так не интересно... Но раз формула у мну ужо есть, то держите(сь) формула (массивная) Код
=JoinArr(ТРАНСП(ЕСЛИОШИБКА(ПРОСМОТР(ПОИСКПОЗ(НАИМЕНЬШИЙ(ЕСЛИ(-ПСТР(A1;ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1);ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1)));ДЛСТР(A1)+1)-ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС(A:A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1));МУМНОЖ(-(-ПСТР(A1;ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1);ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1)));ДЛСТР(A1)+1)-ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС(A:A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1))>=ТРАНСП(-ПСТР(A1;ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1);ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1)));ДЛСТР(A1)+1)-ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС(A:A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))^0));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1)));ЕСЛИ(-ПСТР(A1;ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1);ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1)));ДЛСТР(A1)+1)-ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС(A:A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1));МУМНОЖ(-(-ПСТР(A1;ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1);ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1)));ДЛСТР(A1)+1)-ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС(A:A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1))>=ТРАНСП(-ПСТР(A1;ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1);ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1)));ДЛСТР(A1)+1)-ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС(A:A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))^0)););СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1));--ПСТР(A1;ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1);ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1)));ДЛСТР(A1)+1)-ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС(A:A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1)));)))
UDF [vba]Код
Function JoinArr$(arr As Variant, Optional delim$ = ", ") JoinArr = join(arr, delim) End Function
[/vba]
Вчера, когда смотрел эту тему, из-за отсутствия примера подумал, что из строки типа "0, 1, 0, 3, 0, 0" нужно получить "1, 3, 0, 0, 0, 0", даже формулу с UDF-кой придумал, а оказалось, что числа в отдельных ячейках. Ну так не интересно... Но раз формула у мну ужо есть, то держите(сь) формула (массивная) Код
=JoinArr(ТРАНСП(ЕСЛИОШИБКА(ПРОСМОТР(ПОИСКПОЗ(НАИМЕНЬШИЙ(ЕСЛИ(-ПСТР(A1;ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1);ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1)));ДЛСТР(A1)+1)-ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС(A:A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1));МУМНОЖ(-(-ПСТР(A1;ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1);ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1)));ДЛСТР(A1)+1)-ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС(A:A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1))>=ТРАНСП(-ПСТР(A1;ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1);ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1)));ДЛСТР(A1)+1)-ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС(A:A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))^0));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1)));ЕСЛИ(-ПСТР(A1;ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1);ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1)));ДЛСТР(A1)+1)-ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС(A:A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1));МУМНОЖ(-(-ПСТР(A1;ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1);ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1)));ДЛСТР(A1)+1)-ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС(A:A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1))>=ТРАНСП(-ПСТР(A1;ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1);ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1)));ДЛСТР(A1)+1)-ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС(A:A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))^0)););СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1));--ПСТР(A1;ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1);ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1)));ДЛСТР(A1)+1)-ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС(A:A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1)));)))
UDF [vba]Код
Function JoinArr$(arr As Variant, Optional delim$ = ", ") JoinArr = join(arr, delim) End Function
[/vba] krosav4ig
email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
Сообщение отредактировал krosav4ig - Среда, 25.03.2015, 16:08
Ответить
Сообщение Вчера, когда смотрел эту тему, из-за отсутствия примера подумал, что из строки типа "0, 1, 0, 3, 0, 0" нужно получить "1, 3, 0, 0, 0, 0", даже формулу с UDF-кой придумал, а оказалось, что числа в отдельных ячейках. Ну так не интересно... Но раз формула у мну ужо есть, то держите(сь) формула (массивная) Код
=JoinArr(ТРАНСП(ЕСЛИОШИБКА(ПРОСМОТР(ПОИСКПОЗ(НАИМЕНЬШИЙ(ЕСЛИ(-ПСТР(A1;ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1);ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1)));ДЛСТР(A1)+1)-ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС(A:A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1));МУМНОЖ(-(-ПСТР(A1;ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1);ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1)));ДЛСТР(A1)+1)-ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС(A:A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1))>=ТРАНСП(-ПСТР(A1;ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1);ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1)));ДЛСТР(A1)+1)-ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС(A:A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))^0));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1)));ЕСЛИ(-ПСТР(A1;ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1);ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1)));ДЛСТР(A1)+1)-ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС(A:A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1));МУМНОЖ(-(-ПСТР(A1;ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1);ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1)));ДЛСТР(A1)+1)-ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС(A:A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1))>=ТРАНСП(-ПСТР(A1;ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1);ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1)));ДЛСТР(A1)+1)-ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС(A:A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))^0)););СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1));--ПСТР(A1;ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1);ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1)));ДЛСТР(A1)+1)-ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(A1;СТРОКА($A$1:ИНДЕКС(A:A;ДЛСТР(A1)));1)=",";СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1))));СТРОКА($A$1:ИНДЕКС($A:$A;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))+1))-1)+2;1)));)))
UDF [vba]Код
Function JoinArr$(arr As Variant, Optional delim$ = ", ") JoinArr = join(arr, delim) End Function
[/vba] Автор - krosav4ig Дата добавления - 25.03.2015 в 16:08
krosav4ig
Дата: Четверг, 26.03.2015, 15:04 |
Сообщение № 658 | Тема: Выбор последнего значения
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация:
997
±
Замечаний:
0% ±
Excel 2007,2010,2013
еще вариант до кучи 1 выделяете любую ячейку в исходной таблице, жмете Ctrl+Shift+Space , 2 жмете Ctrl+Shift+F3, ставите верхние две галочки > OK 3 если появляется вопрос "Заменить существующее определение ...?, то зажимаете Alt+а (русская, при русской раскладке клавиатуры) теперь можно использовать формулу Код
=ПРОСМОТР(9E+307;ДВССЫЛ(A9))
для последнего значения и формулу Код
=ПРОСМОТР(9E+307;ДВССЫЛ(A9) $A$1:ДВССЫЛ(ТЕКСТ(C8;"\_дд.МММ")))
для последнего значения на определенную дату (дата в C8) после добавления строк или столбцов в исходную таблицу нужно повторить шаги 1-3
еще вариант до кучи 1 выделяете любую ячейку в исходной таблице, жмете Ctrl+Shift+Space , 2 жмете Ctrl+Shift+F3, ставите верхние две галочки > OK 3 если появляется вопрос "Заменить существующее определение ...?, то зажимаете Alt+а (русская, при русской раскладке клавиатуры) теперь можно использовать формулу Код
=ПРОСМОТР(9E+307;ДВССЫЛ(A9))
для последнего значения и формулу Код
=ПРОСМОТР(9E+307;ДВССЫЛ(A9) $A$1:ДВССЫЛ(ТЕКСТ(C8;"\_дд.МММ")))
для последнего значения на определенную дату (дата в C8) после добавления строк или столбцов в исходную таблицу нужно повторить шаги 1-3 krosav4ig
email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
Ответить
Сообщение еще вариант до кучи 1 выделяете любую ячейку в исходной таблице, жмете Ctrl+Shift+Space , 2 жмете Ctrl+Shift+F3, ставите верхние две галочки > OK 3 если появляется вопрос "Заменить существующее определение ...?, то зажимаете Alt+а (русская, при русской раскладке клавиатуры) теперь можно использовать формулу Код
=ПРОСМОТР(9E+307;ДВССЫЛ(A9))
для последнего значения и формулу Код
=ПРОСМОТР(9E+307;ДВССЫЛ(A9) $A$1:ДВССЫЛ(ТЕКСТ(C8;"\_дд.МММ")))
для последнего значения на определенную дату (дата в C8) после добавления строк или столбцов в исходную таблицу нужно повторить шаги 1-3 Автор - krosav4ig Дата добавления - 26.03.2015 в 15:04
krosav4ig
Дата: Пятница, 27.03.2015, 01:24 |
Сообщение № 659 | Тема: СЦЕПИТЬ 2 значения ВПР (с одинаковым искомым)
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация:
997
±
Замечаний:
0% ±
Excel 2007,2010,2013
marik2k , на английской раскладке жмем ALT+F11+IM, вставляем в открывшийся созданный модуль код функции и закрываем редактор VBE
marik2k , на английской раскладке жмем ALT+F11+IM, вставляем в открывшийся созданный модуль код функции и закрываем редактор VBE krosav4ig
К сообщению приложен файл:
_2_.xlsm
(20.5 Kb)
email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
Ответить
Сообщение marik2k , на английской раскладке жмем ALT+F11+IM, вставляем в открывшийся созданный модуль код функции и закрываем редактор VBE Автор - krosav4ig Дата добавления - 27.03.2015 в 01:24
krosav4ig
Дата: Пятница, 27.03.2015, 02:56 |
Сообщение № 660 | Тема: Как отфильтровать размеры крепежных изделий?
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация:
997
±
Замечаний:
0% ±
Excel 2007,2010,2013
billy_bones , тут смотрели?
email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
Ответить
Сообщение billy_bones , тут смотрели?Автор - krosav4ig Дата добавления - 27.03.2015 в 02:56