Страницы: 1 2 След.
RSS
--Как сцепить массив?--
 
Доброго всем... чуть не написал "дня" :-)  
Ну вобщем, времени суток.  
 
Вопрос следующий:  
В результате работы формул получил массив. Например такой:    
{"любое значение1";"любое значение2";"любое значение3"}.  
Как в одной ячейке, без дополнительных, получить    
"любое значение1любое значение2любое значение3"?  
 
Пример думаю не нужен.  
 
Спасибо.
 
Серег, а собственно СЦЕПИТЬ чем не устраивает?
Я сам - дурнее всякого примера! ...
 
Серж, если бы Эксель мог передавать массивы промежуточных вычислений (находящиеся только в виртуальной памяти) на лист, ему бы цены небыло, но увы... Лично мной, такой возможности не найдено, даже среди макрофункций. Хотя... может плохо искал :)  
О макросах речь ведь не ведется?
 
{quote}{login=KuklP}{date=01.08.2010 12:42}{thema=}{post}Серег, а собственно СЦЕПИТЬ чем не устраивает?{/post}{/quote}А ты сам-то пробовал?  
 
Для того что бы сцепить значения нескольких ячеек ты что делаешь? Правильно, указываешь каждую по-отдельности или ЮДФ пишешь.    
Так вот, как в массиве указать каждый его элемент для конкатенации?  
Ну или можно только значащие элементы...
 
{quote}{login=kim}{date=01.08.2010 12:49}{thema=}{post}Серж, если бы Эксель мог передавать массивы промежуточных вычислений (находящиеся только в виртуальной памяти) на лист, ему бы цены небыло, но увы... Лично мной, такой возможности не найдено, даже среди макрофункций. Хотя... может плохо искал :)  
О макросах речь ведь не ведется?{/post}{/quote}Нет, "...В результате работы формул получил массив...".  
 
Т.е. никак?..  
Печально...
 
Привет, Игорь. Думаю, Сержу пофиг, каким образом решится проблема. Важен результат. А по сему - Серж, выкладывай пример. С безусловным уважением - Сергей.
Я сам - дурнее всякого примера! ...
 
Мля, ребят, вы последние 2 темы читали? Прикольно!
Я сам - дурнее всякого примера! ...
 
{quote}{login=KuklP}{date=01.08.2010 12:57}{thema=}{post}...А по сему - Серж, выкладывай пример.{/post}{/quote}Не знаю зачем, но держи...  
 
18,5 Кб
 
И я примерчик заготовил :)
 
>или ЮДФ пишешь.  
:
 
{quote}{login=С.М.}{date=01.08.2010 02:27}{thema=}{post}>или ЮДФ пишешь.  
:{/post}{/quote}Спасибо.
 
Насколько мне известно, формулами со встроенными функциями листа, кроме как нанизыванием каждого элемента в отдельности [=m(1)&m(2)&m(3)&m(...)] массив сцепить в текстовую строку нельзя. Обратное можно.
KL
 
В популярной за рубежом бесплатной XLL-надстройке MoreFunc (автор Laurent Longre) есть встроенная функция для этого:  
=MCONCAT(Array,Separators)  
 
Вот примеры из справки этой надстройки.  
Пусть именованный диапазон "PL" (5 строк * 4 столбца) содержит целые числа от 1 до 20:  
=MCONCAT(PL) выдаст "1234567891011121314151617181920"    
=MCONCAT(PL," ") выдаст "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20"
 
{quote}{login=ZVI}{date=02.08.2010 12:08}{thema=}{post}В популярной за рубежом бесплатной XLL-надстройке MoreFunc (автор Laurent Longre) есть встроенная функция для этого:  
=MCONCAT(Array,Separators)  
 
Вот примеры из справки этой надстройки.  
Пусть именованный диапазон "PL" (5 строк * 4 столбца) содержит целые числа от 1 до 20:  
=MCONCAT(PL) выдаст "1234567891011121314151617181920"    
=MCONCAT(PL," ") выдаст "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20"{/post}{/quote}  
Понятно, что для русской локализации в качестве разделителя аргументов функции нужнго вместо запятой ставить символ точки с запятой:  
=MCONCAT(Array;Separators)
 
{quote}{login=С.М.}{date=01.08.2010 02:27}{thema=}{post}>или ЮДФ пишешь.  
:{/post}{/quote}С использованием ф-и Join, ЮДФ становится простой до безобразия :)  
 
Function СцепитьЭлемМассива(Массив)  
Rem Ввод формулы: Ctrl+Shift+Enter  
   If IsArray(Массив) Then  
       СцепитьЭлемМассива = Join(Массив, "")  
   Else  
       СцепитьЭлемМассива = Массив  
   End If  
End Function
 
Кстати, (пока все здесь :)) попробовал использовать предложенную С.М. UDF в решении задачки известной Кириллу. Имя "а" работает, а вот "б" отказывается. Подозреваю, дело в длине текстовой строки, скармливаемой функции ВЫЧИСЛИТЬ().  
Есть ли возможность как то это дело обойти?
 
{quote}{login=kim}{date=02.08.2010 12:28}{thema=}{post}Кстати, (пока все здесь :)) попробовал использовать предложенную С.М. UDF в решении задачки известной Кириллу. Имя "а" работает, а вот "б" отказывается. Подозреваю, дело в длине текстовой строки, скармливаемой функции ВЫЧИСЛИТЬ().  
Есть ли возможность как то это дело обойти?{/post}{/quote}  
Именно. Тут даже два ограничения:  
1) длинна всей формулы - 256  
2) длинна формулы внутри ВЫЧИСЛИТЬ() - 256  
 
Кстати у меня при открыти файла в Excel 2010 (EN) имена а и б не содержат формул и на их месте стоит =#N/A
KL
 
Да вроде длина формулы позволяет:  
Имя "а" - 164  
"б" - 154  
 
<<Кстати у меня при открыти файла в Excel 2010 (EN) имена а и б не содержат формул и на их месте стоит =#N/A>>  
 
У меня тоже, даже в русской локали :) Такой вот конфуз происходит при сохранении файла.
 
Выражение    
 
ЕСЛИ(Лист1!$A$15:$K$19;ПОВТОР(Лист1!$A$23:$K$27&" ";Лист1!$A$15:$K$19);"")  
 
возвращает массив (в русск. версии разделитель скорее всего будет другой):  
 
{"18500 18500 18500 18500 18500 ","12300 12300 12300 12300 ","18800 18800 18800 18800 18800 18800 ","14000 14000 14000 14000 14000 14000 14000 14000 ","15200 15200 ","18900 18900 18900 ","12000 12000 ","12900 12900 ","15400 15400 15400 15400 ","15600 15600 15600 15600 15600 15600 15600 15600 ","18500 18500 18500 18500 18500 ";"","14000 14000 14000 ","","","","","","","11000 ","","";"12000 12000 ","","","","15800 15800 ","","","15800 15800 ","","12900 12900 12900 ","";"","","13500 13500 ","","","","20000 20000 20000 20000 ","","","","";"","","12600 ","15000 15000 15000 15000 15000 ","","12300 ","","","17500 17500 17500 ","","17000 17000 17000 17000 "}  
 
чья суммарная длина:  
492 символа  
 
а длина текстовой строки в любой формуле не может превышать 255 символов
KL
 
Пардон, случайно стер последнюю фразу:  
 
Т.е. на следующем шаге функция СцепитьЭлемМассива() вернет результат неприемлимый для формулы.
KL
 
{quote}{login=KL}{date=02.08.2010 02:57}{thema=}{post}  
... на следующем шаге функция СцепитьЭлемМассива() вернет результат неприемлимый для формулы.{/post}{/quote}  
Обход:
 
{quote}{login=С.М.}{date=02.08.2010 10:13}{thema=Re: }{post}{quote}{login=KL}{date=02.08.2010 02:57}{thema=}{post} ... на следующем шаге функция СцепитьЭлемМассива() вернет результат неприемлимый для формулы.{/post}{/quote} Обход:{/post}{/quote} <BR>Боюсь, в примере kim это не поможет: текстовый параметр представляющий формулу в функции ВЫЧИСЛИТЬ() все равно будет длиннее 255 символов :-( {18500,18500,18500,18500,18500,12000,12000,12300,12300,12300,12300,14000,14000,14000,18800,18800,18800,18800,18800, 18800,13500,13500,12600,14000,14000,14000,14000,14000,14000,14000,14000,15000,15000,15000,15000,15000,15200,15200,15800,15800, 18900,18900,18900,12300,12000,12000,20000,20000,20000,20000,12900,12900,15800,15800,15400,15400,15400,15400,11000,17500,17500, 17500,15600,15600,15600,15600,15600,15600,15600,15600,12900,12900,12900,18500,18500,18500,18500,18500,17000,17000,17000,17000}
KL
 
Ничего себе скока букаф :-)  
 
Я вообще-то просто хотел узнать возможно это или нет.  
Ответ уже получил. Без макросов - нет. Интересно  - почему?
 
To KL  
я сначала ответил, а потом только прочёл все букфы темы :-(  
 
To Serge  
(предполагаю, что шутка с большой бородой)  
набрать в поиксовике ИМЯ на букфу Б, перечитать статьи  
Б... у...  
Б... у...  
Б... з...  
Б... е...  
показать Б язык и успокоиться :-)
 
{quote}{login=С.М.}{date=02.08.2010 04:13}{thema=}{post}  
...предполагаю, что шутка с большой бородой...{/post}{/quote}А что за шутка?  
 
ЗЫ Я вообще-то имел ввиду что теперь посты на три экрана ширее стали, по-крайней мере в Ишаке.
 
Сергей, я вовсе не о букФах.
 
{quote}{login=С.М.}{date=02.08.2010 04:36}{thema=}{post}Сергей, я вовсе не о букФах.{/post}{/quote}Тогда вообще не понятно...
 
{quote}{login=Serge 007}{date=02.08.2010 04:18}{thema=Re: }{post}{quote}{login=С.М.}{date=02.08.2010 04:13}{thema=}{post}{/post}{/quote}ЗЫ Я вообще-то имел ввиду что теперь посты на три экрана ширее стали{/post}{/quote}  
Серж, такое случается, если попадается "неразрывная" строка - длинное слово "без пробелов". В окне перенос производится по пробелам, а Кирилл соорудил строку, где пробелов нет :-)  
Могу добавить 2-3 пробела после запятых (для читабельности). Если кое-кто не будет возражать.
 
{quote}{login=Юрий М}{date=02.08.2010 04:55}{thema=Re: Re: }{post}Могу добавить 2-3 пробела после запятых (для читабельности). Если кое-кто не будет возражать.{/post}{/quote}Лучше не надо :-)  
Я таких чудесей на Планете ещё не встречал ;-)
 
{quote}{login=Юрий М}{date=02.08.2010 04:55}{thema=Re: Re: }{post}{quote}{login=Serge 007}{date=02.08.2010 04:18}{thema=Re: }{post}{quote}{login=С.М.}{date=02.08.2010 04:13}{thema=}{post}{/post}{/quote}ЗЫ Я вообще-то имел ввиду что теперь посты на три экрана ширее стали{/post}{/quote}  
Серж, такое случается, если попадается "неразрывная" строка - длинное слово "без пробелов". В окне перенос производится по пробелам, а Кирилл соорудил строку, где пробелов нет :-)  
Могу добавить 2-3 пробела после запятых (для читабельности). Если кое-кто не будет возражать.{/post}{/quote}  
Это не я, а формула kim :-) Я точно не возражаю :-)
KL
Страницы: 1 2 След.
Читают тему
Наверх