Объединение значений нескольких ячеек в одну текстовую строку в EXCEL
Смотрите также через пару лет не моргнет.
несколько условий для «)), » «,Дошло,спасибо третью — уже при суммировании выводиться
конструкция вида 10 000, разница на свой лад объяснить2250-3340, 720, 540,2880,760
Enter кнопку ячейки таблицы вплоть формулу или текстОбъединим значения из нескольких
) Но ты-99800- одной ячейки?», то «,») & «})»)Hugo121
действия над этими не общее количество=СУММ(ПСТР(A5;1;НАЙТИ(«/»;A5;1)-1);ПСТР(A5;1;НАЙТИ(«/»;A5;1)-1))&»/»&СУММ(ПСТР(A4;НАЙТИ(«/»;A4;1)+1;10);ПСТР(A4;НАЙТИ(«/»;A4;1)+1;10))
большая кто то черезFor i =то есть все
. Вуаля! Excel автоматическиВыделить до крайней правой. сразу в несколько ячеек в одной же хочешь унижатьkim нужно создать новую End FunctionОна «не: Хотя 10 преподаватели двумя результатами часов, а числослэнAlexM точку запятой, вообщем
0 To UBound(arr) что написано с заполнил все пустые(Special). Далее, удерживая ячеек. Это будет ячейке. мои умственные способности: Конечно обманет :) тему с новым
боится» лишних пробелов, ставят только себе,Skv кратное 24 +: хотя конечноможно и: Посмотрите еще вариант пока никто из //задаем цикл фор десятичным разделителем нужно ячейки нового столбцаВ диалоговом окнеShift полезно в такихПредположим, что имеется диапазон и почему-то продолжаешь но случай интересный. вопросом. Чтобы узнать пустого числителя/знаменателя. В кажется так…
: «…нужно чтоб они
остальные часы. так.. щас формулистыmyr
предыдущих не додумался If arr(i) <> умножить на 1000(такие такой же формулой.Выделить группу ячеек
excel2.ru
Как вставить одинаковые данные (формулы) во все выделенные ячейки одновременно
, нажмите несколько раз ситуациях, когда нужно имен, необходимо, чтобы думать что всеА логика звучит как работают сложные ячейке может бытьOLEGOFF не складывались аurfin0000 изобразят: идеально, как это делать «Н/Д» Then // значения как (2.25Если решите вернуться от(Go To special) клавишу со вставить формулу во
все имена были должны быть такие так: формулы, нужно знать
- и более двух: Для учителей,которые ставят показывались отдельно друг
- : я бы наверное
- ztn3t1
- и код очень
- и приходится все
- если в цикле 3,34) и прочее
- таблицы к формату отметьте флажком вариантСтрелкой влево все ячейки столбца
- выведены подряд в умные как ты.Из общей суммы
- как работают простые. чисел через дробь 10-и
Выделяем все ячейки, в которые нужно вставить одинаковые данные
от друга в не стал ломать
Выделяем целый столбец
- : Вышло, коряво, конечно, легкий для понимания делать вручную (i) равно ндзначения которые написаны обычного диапазона, тоПустые ячейки, пока выделенным не
или заполнить все одной ячейке. Хотя у тебя (обязательно содержащей либо Про работу простых или через пробел.AlexM одной ячейке… «
- голову и просто с доп.столбцами, нотолько одна строчкаэто реально сделать? If IsNumeric(arr(i)) Then без десятичного раздилителя выделите любую ячейку(Blanks) и нажмите останется только нужный
пустые ячейки одинаковымКогда значений немного, то не только ум Машу, либо козу) функций, можно почитатьМакросы в гугл-таблицах: Что-то просто неНа Лист1, в добавил за основной пока только учусь кода не понятнаAlexM // тогда ищем нужно оставить таблицы и наОК
столбец. значением (например, «Н/Д»). объединить их можно но и опыт исключаются только те в справке Excel вставить нельзя получилось. Массивная формула ячейке А1 вписываем таблицей столбцы в :)vb.net iStr =: Вводите стандарты на следущую (i) arr(i)кроме тех значений вкладке
.Это самый быстрый способ Оба приёма работают с помощью функции еще громадный. А
Выделяем целую строку
- числа, которые соответствуют или задавать интересующийAnd_ss Код =СУММ((ЛЕВБ(0&B2:G2;ПОИСК(«?/»;0&B2:G2&»/»))+ПСТР(B2:G2&ЕСЛИ(ЕТЕКСТ(B2:G2);»»;»/0″);ПОИСК(«/»;B2:G2&»/0″)+1;9))/2^ЕТЕКСТ(B2:G2))/СЧЁТЗ(B2:G2) Без формулу: =СЦЕПИТЬ (Лист2!A1;СИМВОЛ которых 12/8 поделилВообще, где то Replace(iStr, » т»,
- ввод данных. Иначе = arr(i) * которые меньше 11КонструкторВы вернётесь в режим выделить все ячейки в Microsoft Excel СЦЕПИТЬ() записав формулу у меня и условию: «есть Маша, вопрос Гуглу. Здесь: Здравствуйте! дополнительных столбцов. (32);СИМВОЛ (94);СИМВОЛ (32);Лист3!A1) бы через найти в копилке было «») всегда будут проблемы. 1000 // iто есть если(Design) нажмите кнопку редактирования листа Excel столбца, особенно когда
Выделяем несколько ячеек
2013, 2010, 2007 =СЦЕПИТЬ(A6;A7;A8;A9) то и другое но нет козы» на форуме тожеТолько начинаю изучать
Выделяем таблицу целиком
alisavzazerkaleЧитаем её так: и пстр на подобное, там одной
Выделяем все ячейки на листе
AlexMПосмотрите файл, ошибки * 1000 Else в ячейки будетПреобразовать в диапазон и увидите, что данные чередуются с и более раннихИли с помощью Амперсанда скромное. Кстати неприятно минус сумма чисел можно получить ответы Ексель!: Спасибо. Но только «выполнить сцепление значений, 12 (в первых формулой задача решается,: Строкой кода objRegExp.Pattern все равно остались. // иначе arr(i) 1, 4-5(нужно будет(Convert to range).
Выделяем пустые ячейки в заданной области (в строке, в столбце, в таблице)
в выбранной области пустыми ячейками. версиях.
& (добавим еще когда унижаешь. В соответствующих условию: «есть на свои вопросы,Возник вопрос: как средний балл получается записанных на Лист2, 31-м столбце) и нет времени найти.
= «[^-.,;/+шт0-9s]»задаются символы, Function Dlina(iStr) As = Split(arr(i), «-«)(0) тоже их умножитьЭтот приём можно использовать выделены только пустыеЕсли данные в ExcelЗнание этих простых приёмов
для красоты символ принцип это правда коза, но нет при наличии Вашего задать одной ячейке неправильный ячейка А1 и на 8 (вVLad777 которые должны остаться String Dim arr, * 1000 & на 1000) только, когда все ячейки. Три пустых оформлены как полноценная сэкономит Вам уйму
Самый быстрый способ вставить формулу во все ячейки столбца
пробела): =A6&» «&A7&» что ты говоришь Маши». интереса. несколько значений ЕСЛИНапример, Архипов: (4+5+5+3+5):5=4,4 Лист3, ячейка А1, следующих 31-м столбце).: можно так.
- в строках. i As Long «-» & Split(arr(i),а те что ячейки в столбце ячейки гораздо проще таблица, просто кликните времени для более «&A8&» «&A9 но ты этоkoyaanisqatsiYJYNGKНапример: Я хочу а таблица выдаёт разделив их знаками и дели(умножай) дослэнВ ячейке 125 iStr = Replace(iStr, «-«)(1) * 1000
- больше 11 например(760 пустые, поэтому лучше выделить простым щелчком по любой ячейке интересных занятий.Если значений много, то делаешь в особом: Здравствуйте.: Ребята, добрый день! чтобы в ячейке 4,5. И если пробел, крышка, пробел». нехочу :): можно так строка «.», «,») iStr //вот тут не 4440, 120) нужно всего добавлять новый мыши – скажете
- нужной строки и
- Выделяем все ячейки, в придется вводить вручную ключе достаточно неприятном,Можно ли перечислитьВынужден обратиться за D2 было значение
за 4,4 я
Не смотря на
- файл не сильноно..5,29; 4,08, 0,14 торец; = Replace(iStr, «, понял, тут задано оставить
столбец. Следующий приём Вы и будете нажмите которые нужно вставить много амперсандов и я не про несколько строк, то-есть помощью … из ячейки N4 и в четверти
то, что формат утежелит, а расчетныеwww 0,17; 0,16, 385 «, «;») iStr только 2 значения,в итоге получается
Вставляем одинаковые данные в несколько ячеек при помощи Ctrl+Enter
гораздо универсальнее. правы. Но какShift+Space одинаковые данные аргументов функции СЦЕПИТЬ(). сейчас конкретно а
если фамилия водителяпоиск конкретного ответа, если в ячейку должна ставить 4, ячеек на Лист2 столбцы можно и: Текст по столбцамиз которой удаляются = Replace(iStr, «(«, конкретная? 1 первое два вопросаВыделите на листе Excel быть, если пустых
- .Выделяем целый столбец
- Это неудобно. про начало твоих то взять список по моему вопросу, В2 я введу то за 4,5 и Лист3 - скрыть (для красивости) (зазделитель /) все ненужные символы
- «») iStr = значение * 1000как задать формулу ячейки, которые хотите ячеек более 300Если перед Вами обычныйВыделяем целую строку
Избежать этого поможет дополнительный комментариев в предыдущей с листа1 и не дал … единицу (1), чтобы уже можно ставить числовой, в ячейкеПавел ЧеркассыВладимир
и остается строка Replace(iStr, «)», «»)
поставить — и
для нескольких значений
заполнить одинаковыми данными.
office-guru.ru
Формула для нескольких значений в одной ячейке ексель
и они разбросаны диапазон данных, кликнитеВыделяем несколько ячеек столбец с простейшей теме. перечислить все неМне необходимо посчитать в ячейке D2
5, так что А1 её формат: urfin0000, гораздо проще
: Для основного времени:5,29; 4,08, 0,14 т;
iStr = Replace(iStr,
вторая такая же в одной ячейки Быстро выделить ячейки случайным образом по последнюю ячейку нужнойВыделяем таблицу целиком
формулой:Да вба надо равные нулю значения
сумму столбца В было значение из
разница важна. на Лист1 преобразуется добавить строку для=ЕСЛИ(ЕЧИСЛО(ПСТР(C7:H7;ПОИСК(«/»;C7:H7)-2;2)*1);ПСТР(C7:H7;ПОИСК(«/»;C7:H7)-2;2)*1)+СУММ(ПСТР(C7:H7;ПОИСК(«/»;C7:H7)-1;1)*1) 0,17; 0,16, 385
» -«, «;-«) переменная * 1000 и как задать помогут приёмы, описанные
диапазону из 10000 строки и нажмите
Выделяем все ячейки наЗначение из последней строки начинать изучать. это в одной ячейке при условии, что ячейки N5 еслиИли Атаманенко: (5+3+4):3
в общий (текстовый). часов переработки. СнимаетДля переработки:» т» (пробел
arr = Split(iStr, End If End
условия если для выше. ячеек?Shift+Home листе
будет содержать желаемую понятно. Но у через запятую и значения в столбце в ячейку В2 = 4, аКод знака символа множество проблем, единственное=СУММ(ПСТР(C7:H7;ПОИСК(«/»;C7:H7)+1;2)*1) т) убирает строка «;») For i If Next i разных значений вПредположим, у нас естьЕсть большая таблица, и. Excel выделит диапазон,Выделяем пустые ячейки в текстовую строку (см. меня есть некая пробел. Пример на
А (соответствующих ячеек) я введу двойку в таблице 4,25. можно посмотреть через: — выглядит неОбе формулы масива. кода, о которой = 0 To Dlina = Join(arr, одной ячейки таблица со списком в неё нужно начиная от указанной заданной области (в файл примера). инертность что еще Лист2 содержат два искомых (2), и такихВ гугл таблицах «Вставка», «Символ» (кодировка очень
Павел Черкассы вы спрашиваете. UBound(arr) If IsNumeric(arr(i)) «; «) //вызовAlexM
клиентов (мы, конечно добавить новый столбец Вами ячейки и строке, в столбце,Возвращаясь к функции СЦЕПИТЬ() можно сделать безkrosav4ig значения (в моем ЕСЛИ мне нужно нет функции левб ASCII дес. )Владимир: Спасибо всем откликнувшимся.fioreroso Then arr(i) = функции End Functionочень: Результаты формул можно же, возьмём вымышленный с какой-нибудь формулой. до столбца в таблице) можно обнаружить, что применения ВБА хочется: UDF СцепитьЕсли примере это корни втиснуть 9 вЯ пыталась высчитыватьЧтобы не возиться: А если не Помогло, но только: Добрый день всем! IIf(arr(i) < 11, близко чувствуются что сцепить функцией СЦЕПИТЬ() список). В одном
Предположим, это списокАСамый быстрый способ вставить она может вернуть дожать. Когда начну200?’200px’:»+(this.scrollHeight+5)+’px’);»>=СцепитьЕсли(СМЕЩ(Лист1!A3;;ПОИСКПОЗ(A9;Лист1!1:1;)-1;СЧЁТЗ(СМЕЩ(Лист1!A:A;;ПОИСКПОЗ(A9;Лист1!1:1;)-1)));»>0″;СМЕЩ(Лист1!A3;;ПОИСКПОЗ(A9;Лист1!1:1;)-1;СЧЁТЗ(СМЕЩ(Лист1!A:A;;ПОИСКПОЗ(A9;Лист1!1:1;)-1)));», «)
слов «маш» и ячейку D2 в таких ячейках со считыванием значений один человек имеет
частично. Ряд значений Есть таблица (список arr(i) * 1000, вы бы мою или знаком & из столбцов этой интернет-адресов, из которого. Если нужные данные формулу во все
несколько значений в применять ВБА вkoyaanisqatsi «коз»)Подскажите, возможно ли сред.значение. Делала их
из «сцепленного» - такую запись? Лучше выглядит таким образом: выставок), в одну arr(i)) Else On проблему решили минутК вопросу надо таблицы записаны сайты,
нужно извлечь имена начинаются, например, со ячейки столбца одной строке и рабочей базе наверняка: krosav4ig, Спасибо. Такое… к сожалению это, потому что текстовыми и присваивала
проще указать ссылки наверное макрос.. 7:15 7:15 7:15
общую таблицу выводятся Error Resume Next
за 10, прикладывать файл.
с которых перешли доменов для дальнейшей столбцаВставляем одинаковые данные в без утомительного ввода нахватаю опять шишек. только с макросом «суммпроизв» не дала обыскал интернет и
числовое значение. Например,
на исходные листыvikttur 8:0 8:0 12/8 данные со всех
arr(i) = IIf(arr(i)чисел в ячейкеmyr наши клиенты. Пустые работы.B несколько ячеек при многочисленных аргументов. Для Не факт что возможно ? нужного результата (может не могу найти ячейке 5/4 присваивала и ячейки.: Где Вы так 12/8, где 7:15, вкладок. Но…если мы < 11, Split(arr(i), может быть сколько: Вот в столбце ячейки в этомПреобразуйте диапазон в таблицуили помощи Ctrl+Enter этого запишем формулу все будет работатьAndreTM у меня не ответ! Спасибо! значение 4,5. ИУдачи! научились? И нас 8:0 — количество ищем значения через «-«)(0) * 1000,
угодно, то есть длина нужно изменить столбце необходимо заполнить
Excel. Для этогоCВот самые быстрые способы
=СЦЕПИТЬ(A6:A9), указав в так как хотелось: Антон, завязывай
правильный синтаксис) …And_ss у меня тоже
alisavzazerkale учите: рабочих часов, ввожу
ВПР, то в Split(arr(i), «-«)(0)) _ вот так ‘4400, значения на то текстом «_unknown_», чтобы выделите любую ячейку, зажмите выделить ячейки: качестве единственного аргумента бы.Сказано же -прошу помощи в: Кто профи? Помогите! получался неправильный средний: Добрый день!»Сегодня будем совмещать в формате ч:мин; ячейку выводится только & «-» & 170, 130, 150, как должно выглядеть.
облегчить дальнейшую сортировку: в диапазоне данныхShiftЕсли данные в Excel весь диапазон сразу,
koyaanisqatsi учи VBA.
решении этой задачиSuperCat
балл.Я учитель, делаю
время и расстояние: 12/8 — 12
одно значение, а IIf(arr(i) < 11, 4,4, 0,17
Виктор МихалычВыделите все пустые ячейки и нажмитеи понажимайте на оформлены как полноценная
а не отдельные: AndreTM, И кстатиВот ты опять …: And_ss, справку поOLEGOFF в Excel (а копать канаву с отработанных часов, из как сделать, чтобы Split(arr(i), «-«)(1) *и записываться они: Я думаю тут
CyberForum.ru
Несколько значений в одной ячейке
в столбце.Ctrl+T клавишу со таблица, просто кликните ячейки. В результате вот этот пример придумал себе задачку.nilem функции ЕСЛИ читали?: По мотивам формулы точнее, в таблицах обеда и до них 8 - в 1 ячейку 1000, Split(arr(i), «-«)(1)) могут не только без VBA неНажмите, чтобы вызвать диалоговоеСтрелкой вправо по любой ячейке получим лишь значение с вба самый Этот «список через
: вот, например Там есть примеры
от гугл) для себя
забора» :) сверх нормы. Должно
planetaexcel.ru
Два значения в одной ячейке.
выводилось сразу несколько End If Next через «,» но обойтись! В ячейкеF2 окно, пока не добьётесь нужного столбца и первой ячейки. безобидный может быть. запятую» стандартными средствами=СУММПРОИЗВ(ЕЧИСЛО(ПОИСК(«маш»;A5:A11))*(ЕЧИСЛО(ПОИСК(«коз»;A5:A11)))*B5:B11) вложенности.AlexM журнал с отметками.Формулы массива: получаться — 61:45 разных значений? То
i Dlina = и с точкой может быть любое, чтобы отредактировать активную
Создание таблицы нужного результата. нажмитеТеперь в Строке формул так как от делать достаточно сложно
VLad777
Юрий МКод =СУММ((ЛЕВБ(0&B2:G2;ПОИСК(«?/»;0&B2:G2&»/»))+ПСТР(B2:G2&ЕСЛИ(ЕТЕКСТ(B2:G2);»»;»/0″);ПОИСК(«/»;B2:G2&»/0″)+1;9)))/(СУММ(—ЕТЕКСТ(B2:G2))+СЧЁТЗ(B2:G2)) Хотелось бы сделать=СУММ(ЕСЛИ(ЕЧИСЛО(ПОИСК(«/»;N5:S5));ПСТР(N5:S5;1;ПОИСК(«/»;N5:S5)-1)/24);N5:S5) (Формат «Время,
и 16. Может есть если на Join(arr, «; «) например «2.4» кол.во значений. Если
ячейку, и введите(Create Table). ЕслиУдерживайтеCtrl+Space выделим формулу =СЦЕПИТЬ(A6:A9)
этой информации почти (похожая тема), а
: так: Всего 3 (ТРИ!)
AlexM
такую ячейку, в 37:30:55″) я изначально пошел
1 даты (по End Function
так же стоит
бы вы значения
в неё что-нибудь:
данные имеют заголовки
Ctrl. и нажмем клавишу ничего не зависит. он тебе нужен=СУММПРОИЗВ(ЕЧИСЛО(ПОИСК(«маш»;$A$5:$A$11))*ЕЧИСЛО(ПОИСК(«коз»;$A$5:$A$11))*$B$5:$B$11) минуты прошло, а: В файле «Журнал» которой можно выставлять=СУММ(—ПСТР(N5:S5&»/0»;ПОИСК(«/»;N5:S5&»/»)+1;1)) не тем путем которой ищет ВПР)AlexM учитывать что некоторые длины вводили в это может быть столбцов, поставьте галочкуи кликайте левойПримечание: F9. Получим массив она ознакомительно-сравнительного характера. когда? — правильно,
VLad777 Вы уже кричите. выдает 4,4
оценки через дробь.
Диапазоны корректируйте.
и есть возможность есть 2 выставки,
: Еще вариант ошибок пишут значение в разные ячейки, то текст, число или для параметра
кнопкой мыши поПри выделении любой ={«Вася»:»Петя»:»Даша»:»Маша»}, его можно если и поймаю только в одном: для 2007 и Потерпеть никак?alisavzazerkale Например, за диктантМне нужно через функции
по другому отображать то можно ли меньше
десятичных числах которые проблем нет, а формула. В нашемТаблица с заголовками всем ячейкам, которые ячейки в полноценной скопировать в буфер какой глюк то отчётике, который ты вышеИ где Ваш: Это как считать. 5/4. И чтобы в одной ячейки часы/минуты? в общей таблице
myr нужно перевести, а в таком варианте… случае, это текст(My Table has нужно заполнить данными. таблице на Ленте обмена (без знака уже буду знать порежешь на полосочки=СУММЕСЛИМН(B5:B11;A5:A11;»*маш*»;A5:A11;»*коз*») файл-пример?Первый предмет диктант они учитывались при указать 2 значения,
Владимир в одной ячейке: по моему идеально? не которые пишут
И если вместо «_unknown_». headers). Обычно ExcelКликните по любой ячейке меню появляется группа = и фигурных что к чему
и раздашь водителям,YJYNGKМВТ 4/5 средний балл расчёте среднего балла.
через «сумм» не: А может всё-таки и вывести названия не?
как надо в запятой поставят точкуТеперь вместо распознаёт заголовки автоматически, таблицы и нажмите
вкладок
скобок) и вставить и не пострадаю
«сегодняшний маршрут» называется.
: Ребята, спасибо большое,
planetaexcel.ru
(Excel) Можно ли в одной ячейки указать 2 значения?
: UPD Без файла-примера по предмету 4,5 Возможно ли такое получаеться. Мне нужно пример появиться? этих двух выставок?спасибо вам огромное, милиметрах например вон или где тоEnter если это неCtrl+AРабота с таблицами
в нужную ячейку. от не верных И зачем тебе все отлично !!
плохо, но если
Второй предмет 5 в Excel?
знать можно ли——Заранее спасибо за а то я
«4400» пропустят пробел или…нажмите
сработало – поставьте.
(Table Tools).От наборов символов «:» данных или иных
ЭТО делать формулами,kim описание соответствует действительности,Третий предмет 3/5Hugo121 это ячейку разбить30303 — Красота!! помощь уже отчаиваться начинал.
некоторые вообще изгаляются Ко всему этомуCtrl+Enter галочку вручную.НажмитеЕсли же это обычный
(двойные кавычки, двоеточие казусов. да ещё и: Вариант с МУМНОЖ()
то проще так средний балл 4: Думаю и в на пополам илиПавел ЧеркассыThe_PristAlexM
пишут в скобках ячейка в текстовом. Все выделенные ячейкиДобавьте новый столбец кCtrl+A диапазон, т.е. при и опять двойныеAndreTM
постоянно пересчитывать при=СУММПРОИЗВ((МУМНОЖ(—(ЕЧИСЛО(ПОИСК({«маш»;»коз»};A5:A11)));{1:1})=2)*B5:B11)=ИНДЕКС($N$4:$N$12;D2)Средний балл по
Экселе это можно формулы берушие от: Пример:: Несколько строк с диапозон а потом
формате наверняка и
Можно ли в одну ячейку вставить два числа?
будут заполнены введёнными таблице. С таблицей
от одного до выделении одной из кавычки) можно избавиться: Давай уже перестанем изменениях в логистике?Владимирgling трем предметам обработать только макросом двух мест данныеВладимирfioreroso ошибками через ; пишут как изволите текст
данными. эта операция осуществляется трех раз. Первое ячеек этого диапазона с помощью функции ругаться, а? НиктоТы можешь делать: =СУММПРОИЗВ((ЕЧИСЛО(ПОИСК({«маш»;»коз»};A5:A11))*{1;1}=1)*B5:B11)-СУММ(B5:B11)
: Или не летучая4,5+5+4 =13,5 (ну или UDF). разделить какием нибудь: Какие проблемы? Правка
: Спасибо. Помогло112, 125, 184, еще числа через считать?Если Вы знаете другие намного проще, чем нажатие группа вкладок
ПОДСТАВИТЬ() (см. файл никого не унижает это только один
kim в D2 =ИНДЕКС(N4:N12;B2)
13,5/3 = 4,5 А как там значком типа «;/|()»
-> Заменить «/»Павел Черкассы 204, 206, 234,
запятую
AlexM приёмы быстрого ввода с простым диапазономCtrl+A
Работа с таблицами примера). или с и не восхваляет.
раз, только тогда,: Кто возьмется объяснитьAnd_ssAlexM в гугле -
? на «:» и: В табеле учета 246, 340, …
вместо «в первоначальном: Функция пользователя Function данных, расскажите о данных. Кликните правойвыделяет текущую область.(Table Tools) не помощью инструмента ЗаменитьДа, иногда просто когда будешь «рисовать» такой вариант? :)
: Спасибо Вам всем: Мы при расчёте гугл его знает…
Алексей матевосов (alexm) проблемы нет..
рабочих часов вmyr варианте нд нет» Dlina(iStr) As String них в комментариях. кнопкой мыши по Второе нажатие, дополнительно появляется, выполните следующие (нажмите невозможно сдержаться -
этот отчет. А=СУММ(СУММЕСЛИ(A5:A11;{«<>»:»=»}&{«*маш*»:»*коз*»};B5:B11)*{-1:1}) за то, что среднего балла суммируем
OLEGOFF
: Можно такой формулойПавел Черкассы одной ячейке указывается
: было бы идеально,если это мой косяк
Dim arr, i Я с радостью любой ячейке в
к текущей области,
действия:CTRL+H
но это только рисовать ты его
ikki
помогаете!
все оценки и: alisavzazerkale,можно так сделать в А1 на: А как тогда общее количество отработанных бы все буквы что не верно As Long arr
добавлю их в столбце, который следует выделяет строки с
Замечание:, чтобы его вызвать). тогда, когда кто-то будешь кодом -: мнээээ…Добавлю пример (значения
делим на их используя доп. столбцы.Которые Лист1
считать рабочие часы часов и через просто исчезали,но опять вас информировал нд = Split(iStr, «;») эту статью, сославшись после того места, заголовками и итогамиК сожалению, в Если строка Вася»:»Петя»:»Даша»:»Маша (необязательно именно ты) и зачем тебескладываются все числа условные)! количество. Поэтому мне
можно скрыть,а когда=Лист2!A1&» — «&Лист3!A1
CyberForum.ru
Как задать несколько условий для одной ячейки?
и часы сверх дробь количество часов
же это не писал я от
For i = на Вас как куда нужно вставить
(например, в полноценных случае с простым находится в ячейке продолжает тогда нынешние знания, с козами (берутсяСпасибо! нужно именно так надо открыть.Разделитель двух данных нормы? Как в сверх нормы. Есть критично,главное что теперь руки изначально там 0 To UBound(arr) автора.
новый столбец, и таблицах). Третье нажатие диапазоном нажатиеG8системно
как это сделать с коэф-том 1)
gling рассчитать.Hugo121 пробел, тире, пробел формуле разделить 7:15
ли функция, с не надо в пустое пространство, If arr(i) <>Урок подготовлен для Вас
в контекстном меню выделяет весь лист.
Ctrl+Space, то формула длязаблуждаться. И это формулой (или даже и от них
: Посмотрите варианты.
alisavzazerkale: Под два значенияЕсли потребуется из
— 7 часов помощью которой можно каждой ячейке изменятьIf arr(i) <>
«Н/Д» Then If командой сайта office-guru.ru
выберите
Думаю, вы догадались,выделит все ячейки
замены этих символов, отнюдь не «спор: кодом, ориентированным именно отнимаются (потомушто -1)And_ss: Тогда берите формулу
через обратный слэш ячейки с двумя 15 минут рабочих
было просуммировать отдельно значения, а в » » Then IsNumeric(arr(i)) Then arr(i)
Источник: https://www.ablebits.com/office-addins-blog/2013/09/26/insert-same-data-multiple-cells-excel/Вставить что в некоторых столбца на листе, например, на символ Формулы vs VBA», на твою табличку те, у которых: Это гениально!!! Спасибо! из сообщения №12 можно так сделать значениями их извлекать, или 7 рабочих, количество рабочих часов 206 ячейке это //мне так кажется = arr(i) *Перевел: Антон Андронов> ситуациях вам потребуется например, от ; будет выглядеть
planetaexcel.ru
Сумма если в одной ячейке содержится несколько искомых значений.
это обычно касается из примера), ведь
нету маш. А я уж
Казанский — а сделайте-ка то
15 сверх нормы? и количество часов и не ошибка arr(i)= «НД» Thenеще 1000 Else arr(i)Автор: Антон АндроновСтолбец слева всего лишь одноC1 так:
методов решения тех данные по рейсам,но это ниправильная думал что такое: Не получается Неправильный
для трёх, илиформула для первогоВладимир
сверх нормы? Сейчас вовсе, я сам
некоторые пишут там
= Split(arr(i), «-«)(0)myr
(Insert > Table
нажатие, чтобы выделитьдо=ПОДСТАВИТЬ(G8;»»»:»»»;»;»)
или иных задач.
по идее, будут формула :))) в Ексель не
тип данных пишет. с учётом десятибальной
значения =ЛЕВСИМВ (A1;ПОИСК
: Извиняюсь. Совсем из приходится забивать на
после 3к ячеек такие знаки как * 1000 &
: Добрый день,вопрос как
Column to the весь лист, а
C1048576В итоге, вставив результатКстати, опыт в храниться в нормализованномпотому что она можно! Спасибо!!!!!!! Чайник я ещё.
системы… («-«;A1)-2)
головы вылетело.. одного человека две хуже бывает пишу,учитывая «+» буквы и «-» & Split(arr(i), написать формула для Left).
в некоторых –, даже если данные формулы как значение, VBA (или функциях) виде с накоплением… работает ТОЛЬКО для
And_ss
Наверное, что-то неправильноOLEGOFFи для второго
Павел Черкассы строки — выглядит
что все это прочее например пишут «-«)(1) * 1000 нескольких значений вДайте название новому столбцу. целых три нажатия. содержатся только в получим строку Вася;Петя;Даша;Маша. у меня отнюдьНу или ладно: варианта, когда в
planetaexcel.ru
одной формулой в одной ячейке перечислить несколько строк (Формулы/Formulas)
: Вопрос не по делаю
: В листе 2 =ПСТР (A1;ПОИСК («-«;A1)+2;50): Формула, которую дал коряво. требуется срочно с «200+ 3 листа» End If End одной ячейки.Есть листВведите формулу в первуюВыделите нужную область (см. ячейках
Примечание не огромный. :)
koyaanisqatsi
каждой строке есть теме удален [МОДЕРАТОР]alisavzazerkale сделал набросок журнала.
где 50 максимальная V срабатывает при
слэн 10 до 4
я в таких If Next i в документе, в ячейку нового столбца. рисунок ниже), например,C1:C100: В формуле дляkrosav4ig: AndreTM, Да я либо «маш», либоИ еще вопрос!: Формула массива вводитсяА какая разница длина строки с вводе данных таким: а зачем вторая и так каждую значениях ставлю нд
Dlina = Join(arr, котором находится произвольное В своём примере целый столбец.. замены двойных кавычек: Тут было тебе уже сто «коз», либо оба — где есть сочетанием клавиш Ctrl+Shift+Enter какая система оценок? двумя значениями. образом: 7:15/0, 8:0/0, строка? может лучше неделю, то этот или просто «200» «; «) End
количество числовых значений
я использую формулуНажмитеВыделите первую ячейку столбца » использовано 2200?’200px’:»+(this.scrollHeight+5)+’px’);»>=ПОДСТАВИТЬ(ЕСЛИ(ДЛСТР(A11)-ДЛСТР(ПОДСТАВИТЬ(A11;»,»;))=ЧСТРОК(СМЕЩ(Лист1!$A$3;;ПОИСКПОЗ(A9;Лист1!$1:$1;)-1;СЧЁТЗ(СМЕЩ(Лист1!$A:$A;;ПОИСКПОЗ(A9;Лист1!$1:$1;)-1))));A11;ЕСЛИ(ДЛСТР(A11)>1;A11&»,»;»,»)&ИНДЕКС(«»&СМЕЩ(Лист1!$A$3;;ПОИСКПОЗ(A9;Лист1!$1:$1;)-1;СЧЁТЗ(СМЕЩ(Лист1!A:A;;ПОИСКПОЗ(A9;Лист1!$1:$1;)-1)));1+ДЛСТР(A11)-ДЛСТР(ПОДСТАВИТЬ(A11;»,»;))));»,0,»;»,,») тысяч раз говорил сразу. уроки всех этихalisavzazerkaleHugo121Петрина александр 12:0/8:0, 8:0/8:0. Выглядит доп столбец день превращается вВот присылаю значения,какие Functionв виде ‘2.25 для извлечения доменныхF5 (или вторую, если двойные кавычки «».должны быть включены что ты прав.если будут строки, сложных формул! Спасибо!, вдогонку функция на: посчитайте своим решением: а что мешает очень коряво, ноISergey жопу бываютmyr — 3.34, 0,72; имён:
и в появившемся первая ячейка занятаВ этой статье Вы итеративные вычисления Еще я тебе в которых неgling VBA Function срб(x) среднее у 4/10 в одну ячейку с этим можно: если список несколько там такихячеек там около: Скрипт запустил что
0,54; 2,88,760=MID(C2,FIND(«:»,C2,»4″)+3,FIND(«/»,C2,9)-FIND(«:»,C2,»4″)-3) диалоговом окне заголовком), затем нажмите узнаете 2 самыхна ячейке с говорил что я будет ни «маш»,: Если задаваемый вопрос срб = Evaluate(«AVERAGE({«OLEGOFF положить одну формулу, мирится если бы очень большой и ячеек будет 1000 10к то работает что
надо привести это=ПСТР(C2;НАЙТИ(«:»;C2;»4″)+3;НАЙТИ(«/»;C2;9)-НАЙТИ(«:»;C2;»4″)-3)ПереходShift+Ctrl+End быстрых способа вставить
формулой F2->Enter , скорее всего смогу ни «коз», формула не связан с & Replace(WorksheetFunction.Trim(Replace(Join(WorksheetFunction.Index(x.Value, 1,: 7,а что не во вторую - не вылезла очередная редко изменяет размеры, максимум, а былои каждый пишет то нет попытаюсь все в вид
Нажмите(Go to) нажмите, чтобы выделить все в Excel одинаковую
зажать F9 оперировать основами VBA
обманет и глазом
темой «Как задать 0)), «/», «
так? вторую, а в проблема -
excelworld.ru
то вам поможет
Под выпадающим списком понимается содержание в одной ячейке нескольких значений. Когда пользователь щелкает по стрелочке справа, появляется определенный перечень. Можно выбрать конкретное.
Очень удобный инструмент Excel для проверки введенных данных. Повысить комфорт работы с данными позволяют возможности выпадающих списков: подстановка данных, отображение данных другого листа или файла, наличие функции поиска и зависимости.
Создание раскрывающегося списка
Путь: меню «Данные» — инструмент «Проверка данных» — вкладка «Параметры». Тип данных – «Список».
Ввести значения, из которых будет складываться выпадающий список, можно разными способами:
- Вручную через «точку-с-запятой» в поле «Источник».
- Ввести значения заранее. А в качестве источника указать диапазон ячеек со списком.
- Назначить имя для диапазона значений и в поле источник вписать это имя.
Любой из вариантов даст такой результат.
Выпадающий список в Excel с подстановкой данных
Необходимо сделать раскрывающийся список со значениями из динамического диапазона. Если вносятся изменения в имеющийся диапазон (добавляются или удаляются данные), они автоматически отражаются в раскрывающемся списке.
- Выделяем диапазон для выпадающего списка. В главном меню находим инструмент «Форматировать как таблицу».
- Откроются стили. Выбираем любой. Для решения нашей задачи дизайн не имеет значения. Наличие заголовка (шапки) важно. В нашем примере это ячейка А1 со словом «Деревья». То есть нужно выбрать стиль таблицы со строкой заголовка. Получаем следующий вид диапазона:
- Ставим курсор в ячейку, где будет находиться выпадающий список. Открываем параметры инструмента «Проверка данных» (выше описан путь). В поле «Источник» прописываем такую функцию:
Протестируем. Вот наша таблица со списком на одном листе:
Добавим в таблицу новое значение «елка».
Теперь удалим значение «береза».
Осуществить задуманное нам помогла «умная таблица», которая легка «расширяется», меняется.
Теперь сделаем так, чтобы можно было вводить новые значения прямо в ячейку с этим списком. И данные автоматически добавлялись в диапазон.
- Сформируем именованный диапазон. Путь: «Формулы» — «Диспетчер имен» — «Создать». Вводим уникальное название диапазона – ОК.
- Создаем раскрывающийся список в любой ячейке. Как это сделать, уже известно. Источник – имя диапазона: =деревья.
- Снимаем галочки на вкладках «Сообщение для ввода», «Сообщение об ошибке». Если этого не сделать, Excel не позволит нам вводить новые значения.
- Вызываем редактор Visual Basic. Для этого щелкаем правой кнопкой мыши по названию листа и переходим по вкладке «Исходный текст». Либо одновременно нажимаем клавиши Alt + F11. Копируем код (только вставьте свои параметры).
- Сохраняем, установив тип файла «с поддержкой макросов».
- Переходим на лист со списком. Вкладка «Разработчик» — «Код» — «Макросы». Сочетание клавиш для быстрого вызова – Alt + F8. Выбираем нужное имя. Нажимаем «Выполнить».
Private Sub Worksheet_Change(ByVal Target As Range) Dim lReply As Long If Target.Cells.Count > 1 Then Exit Sub If Target.Address = "$C$2" Then If IsEmpty(Target) Then Exit Sub If WorksheetFunction.CountIf(Range("Деревья"), Target) = 0 Then lReply = MsgBox("Добавить введенное имя " & _ Target & " в выпадающий список?", vbYesNo + vbQuestion) If lReply = vbYes Then Range("Деревья").Cells(Range("Деревья").Rows.Count + 1, 1) = Target End If End If End If End Sub
Когда мы введем в пустую ячейку выпадающего списка новое наименование, появится сообщение: «Добавить введенное имя баобаб в выпадающий список?».
Нажмем «Да» и добавиться еще одна строка со значением «баобаб».
Выпадающий список в Excel с данными с другого листа/файла
Когда значения для выпадающего списка расположены на другом листе или в другой книге, стандартный способ не работает. Решить задачу можно с помощью функции ДВССЫЛ: она сформирует правильную ссылку на внешний источник информации.
- Делаем активной ячейку, куда хотим поместить раскрывающийся список.
- Открываем параметры проверки данных. В поле «Источник» вводим формулу: =ДВССЫЛ(“[Список1.xlsx]Лист1!$A$1:$A$9”).
Имя файла, из которого берется информация для списка, заключено в квадратные скобки. Этот файл должен быть открыт. Если книга с нужными значениями находится в другой папке, нужно указывать путь полностью.
Как сделать зависимые выпадающие списки
Возьмем три именованных диапазона:
Это обязательное условие. Выше описано, как сделать обычный список именованным диапазоном (с помощью «Диспетчера имен»). Помним, что имя не может содержать пробелов и знаков препинания.
- Создадим первый выпадающий список, куда войдут названия диапазонов.
- Когда поставили курсор в поле «Источник», переходим на лист и выделяем попеременно нужные ячейки.
- Теперь создадим второй раскрывающийся список. В нем должны отражаться те слова, которые соответствуют выбранному в первом списке названию. Если «Деревья», то «граб», «дуб» и т.д. Вводим в поле «Источник» функцию вида =ДВССЫЛ(E3). E3 – ячейка с именем первого диапазона.
- Создаем стандартный список с помощью инструмента «Проверка данных». Добавляем в исходный код листа готовый макрос. Как это делать, описано выше. С его помощью справа от выпадающего списка будут добавляться выбранные значения.
- Чтобы выбранные значения показывались снизу, вставляем другой код обработчика.
- Чтобы выбираемые значения отображались в одной ячейке, разделенные любым знаком препинания, применим такой модуль.
- На вкладке «Разработчик» находим инструмент «Вставить» – «ActiveX». Здесь нам нужна кнопка «Поле со списком» (ориентируемся на всплывающие подсказки).
- Щелкаем по значку – становится активным «Режим конструктора». Рисуем курсором (он становится «крестиком») небольшой прямоугольник – место будущего списка.
- Жмем «Свойства» – открывается перечень настроек.
- Вписываем диапазон в строку ListFillRange (руками). Ячейку, куда будет выводиться выбранное значение – в строку LinkedCell. Для изменения шрифта и размера – Font.
Выбор нескольких значений из выпадающего списка Excel
Бывает, когда из раскрывающегося списка необходимо выбрать сразу несколько элементов. Рассмотрим пути реализации задачи.
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, Range("Е2:Е9")) Is Nothing And Target.Cells.Count = 1 Then Application.EnableEvents = False If Len(Target.Offset(0, 1)) = 0 Then Target.Offset(0, 1) = Target Else Target.End(xlToRight).Offset(0, 1) = Target End If Target.ClearContents Application.EnableEvents = True End If End Sub
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, Range("Н2:К2")) Is Nothing And Target.Cells.Count = 1 Then Application.EnableEvents = False If Len(Target.Offset(1, 0)) = 0 Then Target.Offset(1, 0) = Target Else Target.End(xlDown).Offset(1, 0) = Target End If Target.ClearContents Application.EnableEvents = True End If End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("C2:C5")) Is Nothing And Target.Cells.Count = 1 Then
Application.EnableEvents = False
newVal = Target
Application.Undo
oldval = Target
If Len(oldval) <> 0 And oldval <> newVal Then
Target = Target & "," & newVal
Else
Target = newVal
End If
If Len(newVal) = 0 Then Target.ClearContents
Application.EnableEvents = True
End If
End Sub
Не забываем менять диапазоны на «свои». Списки создаем классическим способом. А всю остальную работу будут делать макросы.
Выпадающий список с поиском
Скачать пример выпадающего списка
При вводе первых букв с клавиатуры высвечиваются подходящие элементы. И это далеко не все приятные моменты данного инструмента. Здесь можно настраивать визуальное представление информации, указывать в качестве источника сразу два столбца.
Хитрости »
1 Май 2011 163993 просмотров
Как сцепить несколько значений в одну ячейку по критерию? СцепитьЕсли
Все чаще вижу на разных форумах вопросы типа: Есть таблица, в одном столбце фамилии, в другом оценки(виды работ и т.д.). Как сцепить в одной ячейке для каждой фамилии только принадлежащие ей оценки? Или собрать в одну ячейку через запятую фамилии всех сотрудников одного отдела, но все сотрудники идут вразнобой. Т.е. из такой таблицы:
Получить такую:
Стандартными функциями это сделать весьма проблематично, т.к. заранее неизвестно сколько будет этих оценок и фамилий.. MIcrosoft работает над усовершенствованием Excel и теперь стало возможным сделать это и стандартными функциями. Правда, с небольшими ограничениями: сделать это могут только пользователи Excel 2019 и выше или Office 365 по подписке. В итоге счастливые обладатели новейших версий могут использовать достаточно несложные формулы:
=ОБЪЕДИНИТЬ(«; «;1;ФИЛЬТР(B2:B20;A2:A20=A2;»»))
=TEXTJOIN(«; «,1,FILTER(B2:B20,A2:A20=A2,»»))
Аргументы функции:
- («; «) — символ(или несколько символов), которым необходимо объединять найденные значения
- (A2:A20) — диапазон, в котором искать критерий
- (A2) — критерий. Значение, на основании которого необходимо сцеплять значения. Значение просматривается в диапазоне значений(A2:A20)
- (B2:B20) — из этого диапазона берется значение для сцепления, если значение напротив в диапазонe(A2:A20) совпадает с искомым значением A2
Для любителей «старой школы» можно вместо функции ФИЛЬТР(FILTER) использовать стандартную ЕСЛИ(IF):
=ОБЪЕДИНИТЬ(«; «;1;ЕСЛИ(A2:A20=A2;B2:B20;»»))
=TEXTJOIN(«; «,1,IF(A2:A20=A2,B2:B20,»»))
так же это можно использовать в Excel 2019 в случае, если функция ФИЛЬТР отсутствует — да, может быть и такое, хоть Microsoft и пишет, что она там поддерживается
Аргументы точно такие же, как в формуле выше. Правда эта формула вводится в ячейку как формула массива(т.е. одновременным нажатием трех клавиш Ctrl+Shift+Enter).
Хотя в самых новых версия(а-ля 365) вводить тремя клавишами уже не обязательно — Excel сам поймет, что требуется обработка массива ячеек.
А для пользователей Excel 2016 и ниже я написал небольшую функцию пользователя на VBA, которая решает данную проблему. Так же подобную функцию называют «многоразовый ВПР«, потому что она по критерию возвращает ВСЕ значения для этого критерия, а не только первое.
'--------------------------------------------------------------------------------------- ' Author : The_Prist(Щербаков Дмитрий) ' Профессиональная разработка приложений для MS Office любой сложности ' Проведение тренингов по MS Excel ' http://www.excel-vba.ru ' Purpose: '--------------------------------------------------------------------------------------- Function СцепитьЕсли(ByRef Диапазон As Range, ByVal Критерий As String, ByRef Диапазон_сцепления As Range, Optional Разделитель As String = " ", Optional БезПовторов As Boolean = False) As String Dim li As Long, sStr As String, avItem, avDateArr(), avRezArr(), lUBnd As Long If Диапазон.Count > 1 Then avDateArr = Intersect(Диапазон, Диапазон.Parent.UsedRange).Value avRezArr = Intersect(Диапазон_сцепления, Диапазон_сцепления.Parent.UsedRange).Value If Диапазон.Rows.Count = 1 Then avDateArr = Application.Transpose(avDateArr) avRezArr = Application.Transpose(avRezArr) End If Else ReDim avDateArr(1, 1): ReDim avRezArr(1, 1) avDateArr(1, 1) = Диапазон.Value avRezArr(1, 1) = Диапазон_сцепления.Value End If lUBnd = UBound(avDateArr, 1) 'Определяем вхождение операторов сравнения в Критерий Dim objRegExp As Object, objMatches As Object Set objRegExp = CreateObject("VBScript.RegExp") objRegExp.Global = False: objRegExp.Pattern = "=|<>|=>|>=|<=|=<|>|<" Set objMatches = objRegExp.Execute(Критерий) 'Если есть вхождения If objMatches.Count > 0 Then Dim sStrMatch As String sStrMatch = objMatches.Item(0) Критерий = Replace(Replace(Критерий, sStrMatch, "", 1, 1), Chr(34), "", 1, 2) If IsNumeric(Критерий) And Критерий <> "" Then Критерий = CDbl(Критерий) End If Select Case sStrMatch Case "=" For li = 1 To lUBnd If avDateArr(li, 1) = Критерий Then If Trim(avRezArr(li, 1)) <> "" Then _ sStr = sStr & IIf(sStr <> "", Разделитель, "") & avRezArr(li, 1) End If Next li Case "<>" For li = 1 To lUBnd If avDateArr(li, 1) <> Критерий Then If Trim(avRezArr(li, 1)) <> "" Then _ sStr = sStr & IIf(sStr <> "", Разделитель, "") & avRezArr(li, 1) End If Next li Case ">=", "=>" For li = 1 To lUBnd If avDateArr(li, 1) >= Критерий Then If Trim(avRezArr(li, 1)) <> "" Then _ sStr = sStr & IIf(sStr <> "", Разделитель, "") & avRezArr(li, 1) End If Next li Case "<=", "=<" For li = 1 To lUBnd If avDateArr(li, 1) <= Критерий Then If Trim(avRezArr(li, 1)) <> "" Then _ sStr = sStr & IIf(sStr <> "", Разделитель, "") & avRezArr(li, 1) End If Next li Case ">" For li = 1 To lUBnd If avDateArr(li, 1) > Критерий Then If Trim(avRezArr(li, 1)) <> "" Then _ sStr = sStr & IIf(sStr <> "", Разделитель, "") & avRezArr(li, 1) End If Next li Case "<" For li = 1 To lUBnd If avDateArr(li, 1) < Критерий Then If Trim(avRezArr(li, 1)) <> "" Then _ sStr = sStr & IIf(sStr <> "", Разделитель, "") & avRezArr(li, 1) End If Next li End Select Else 'Если нет вхождения For li = 1 To lUBnd If avDateArr(li, 1) Like Критерий Then If Trim(avRezArr(li, 1)) <> "" Then _ sStr = sStr & IIf(sStr <> "", Разделитель, "") & avRezArr(li, 1) End If Next li End If If БезПовторов Then Dim oDict As Object, sTmpStr Set oDict = CreateObject("Scripting.Dictionary") sTmpStr = Split(sStr, Разделитель) On Error Resume Next For li = LBound(sTmpStr) To UBound(sTmpStr) oDict.Add sTmpStr(li), sTmpStr(li) Next li sStr = "" sTmpStr = oDict.keys For li = LBound(sTmpStr) To UBound(sTmpStr) sStr = sStr & IIf(sStr <> "", Разделитель, "") & sTmpStr(li) Next li End If СцепитьЕсли = sStr End Function
Чтобы правильно использовать приведенный код, необходимо сначала ознакомиться со статьей Что такое функция пользователя(UDF)?. Вкратце: скопировать текст кода выше, перейти в редактор VBA(Alt+F11) -создать стандартный модуль(Insert —Module) и в него вставить скопированный текст. После чего функцию СцепитьЕсли можно будет вызвать из Диспетчера функций(Shift+F3), отыскав её в категории Определенные пользователем (User Defined Functions).
Синтаксис записи в ячейку листа:
=СцепитьЕсли(A2:A20;A2;B2:B20;»-«;0)
По принципу работы функция похожа на стандартную СУММЕСЛИ. Указывается диапазон значений(где просматривать значение), критерий и диапазон значений для сцепления. Символ для разделения слов указывать необязательно.
Диапазон(A2:A20) — диапазон, в котором искать критерий(указывается один столбец)
Критерий(A2) — критерий. Значение, на основании которого необходимо сцеплять значения. Может содержать символы подстановки — * и ? и символы сравнения (<>»», <23, >0, «<>»&A1 и т.п.). Просматривается Диапазон. При совпадении значения ячейки в Диапазоне значение из Диапазона_Сцепления добавляется к результату с выбранным разделителем.
Диапазон_сцепления(B2:B20) — из этого диапазона берется значение для сцепления, если значение в аргументе Диапазон совпадает с аргументом Критерий(указывается один столбец). Если в Диапазоне значение 5-ой строки совпадает с критерием, то из Диапазона_Сцепления будет взято так же значение из 5-ой строк этого диапазона и сцеплено с результатом.
Разделитель(«-«) — По умолчанию пробел, но можно задать любой другой символ или группу символов.
БезПовторов — если указать 1 или ИСТИНА, то в результате получится строка, в которой нет одинаковых значений. Если указать 0 или ЛОЖЬ, то будут выведены все значения. По умолчанию значение ЛОЖЬ.
Примечание: для работы функции должны быть разрешены макросы
Скачать пример
Пример СцепитьЕсли.xls (68,0 KiB, 15 624 скачиваний)
Также см.:
ВПР_МН
Сцепить_МН
СцепитьЕсли
Что такое функция пользователя(UDF)?
ВПР с возвратом всех значений
Статья помогла? Поделись ссылкой с друзьями!
Видеоуроки
Поиск по меткам
Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика
Как сцепить несколько значений в одну ячейку по критерию? СцепитьЕсли
Все чаще вижу на разных форумах вопросы типа: Есть таблица, в одном столбце фамилии, в другом оценки(виды работ и т.д.) . Как сцепить в одной ячейке для каждой фамилии только принадлежащие ей оценки? Стандартными функциями это сделать весьма проблематично, т.к. заранее неизвестно сколько будет этих оценок и фамилий. Или собрать в одну ячейку через запятую фамилии всех сотрудников одного отдела, но все сотрудники идут вразнобой. Т.е. из такой таблицы:
Получить такую:
Вот и решил написать небольшую функцию пользователя на VBA, которая решает данную проблему. Так же подобную функцию называют «многоразовый ВПР«, потому что она по критерию возвращает ВСЕ значения для этого критерия, а не только первое.
‘————————————————————————————— ‘ Author : The_Prist(Щербаков Дмитрий) ‘ Профессиональная разработка приложений для MS Office любой сложности ‘ Проведение тренингов по MS Excel ‘ http://www.excel-vba.ru ‘ Purpose: ‘————————————————————————————— Function СцепитьЕсли(ByRef Диапазон As Range, ByVal Критерий As String, ByRef Диапазон_сцепления As Range, Optional Разделитель As String = » «, Optional БезПовторов As Boolean = False) As String Dim li As Long, sStr As String, avItem, avDateArr(), avRezArr(), lUBnd As Long If Диапазон.Count > 1 Then avDateArr = Intersect(Диапазон, Диапазон.Parent.UsedRange).Value avRezArr = Intersect(Диапазон_сцепления, Диапазон_сцепления.Parent.UsedRange).Value If Диапазон.Rows.Count = 1 Then avDateArr = Application.Transpose(avDateArr) avRezArr = Application.Transpose(avRezArr) End If Else ReDim avDateArr(1, 1): ReDim avRezArr(1, 1) avDateArr(1, 1) = Диапазон.Value avRezArr(1, 1) = Диапазон_сцепления.Value End If lUBnd = UBound(avDateArr, 1) ‘Определяем вхождение операторов сравнения в Критерий Dim objRegExp As Object, objMatches As Object Set objRegExp = CreateObject(«VBScript.RegExp») objRegExp.Global = False: objRegExp.Pattern = «=|<>|=>|>=| | 0 Then Dim sStrMatch As String sStrMatch = objMatches.Item(0) Критерий = Replace(Replace(Критерий, sStrMatch, «», 1, 1), Chr(34), «», 1, 2) If IsNumeric(Критерий) And Критерий <> «» Then Критерий = CDbl(Критерий) End If Select Case sStrMatch Case «=» For li = 1 To lUBnd If avDateArr(li, 1) = Критерий Then If Trim(avRezArr(li, 1)) <> «» Then _ sStr = sStr & IIf(sStr <> «», Разделитель, «») & avRezArr(li, 1) End If Next li Case «<>» For li = 1 To lUBnd If avDateArr(li, 1) <> Критерий Then If Trim(avRezArr(li, 1)) <> «» Then _ sStr = sStr & IIf(sStr <> «», Разделитель, «») & avRezArr(li, 1) End If Next li Case «>=», «=>» For li = 1 To lUBnd If avDateArr(li, 1) >= Критерий Then If Trim(avRezArr(li, 1)) <> «» Then _ sStr = sStr & IIf(sStr <> «», Разделитель, «») & avRezArr(li, 1) End If Next li Case » «» Then _ sStr = sStr & IIf(sStr <> «», Разделитель, «») & avRezArr(li, 1) End If Next li Case «>» For li = 1 To lUBnd If avDateArr(li, 1) > Критерий Then If Trim(avRezArr(li, 1)) <> «» Then _ sStr = sStr & IIf(sStr <> «», Разделитель, «») & avRezArr(li, 1) End If Next li Case » «» Then _ sStr = sStr & IIf(sStr <> «», Разделитель, «») & avRezArr(li, 1) End If Next li End Select Else ‘Если нет вхождения For li = 1 To lUBnd If avDateArr(li, 1) Like Критерий Then If Trim(avRezArr(li, 1)) <> «» Then _ sStr = sStr & IIf(sStr <> «», Разделитель, «») & avRezArr(li, 1) End If Next li End If If БезПовторов Then Dim oDict As Object, sTmpStr Set oDict = CreateObject(«Scripting.Dictionary») sTmpStr = Split(sStr, Разделитель) On Error Resume Next For li = LBound(sTmpStr) To UBound(sTmpStr) oDict.Add sTmpStr(li), sTmpStr(li) Next li sStr = «» sTmpStr = oDict.keys For li = LBound(sTmpStr) To UBound(sTmpStr) sStr = sStr & IIf(sStr <> «», Разделитель, «») & sTmpStr(li) Next li End If СцепитьЕсли = sStr End Function
Для применения функции в своем файле достаточно создать стандартный модуль (о том как создать стандартный модуль: Что такое модуль? Какие бывают модули?) и просто вставить приведенный код. После этого в диспетчере функций появиться новая категория (если до этого её не было) — Определенные пользователем (User Defined) . В ней эта функция — СцепитьЕсли.
Синтаксис:
=СцепитьЕсли( B5:B18 ; B5 ; C5:C18 ;»-«;0)
По принципу работы функция похожа на стандартную СУММЕСЛИ. Указывается диапазон значений(где просматривать значение), критерий и диапазон значений для сцепления. Символ для разделения слов указывать необязательно.
Диапазон (B5:B18) — диапазон, в котором искать критерий(указывается один столбец)
Критерий (B5) — критерий. Значение, на основании которого необходимо сцеплять значения. Может содержать символы подстановки — * и ? и символы сравнения ( <>«», 0, «<>«&A1 и т.п.). Просматривается Диапазон. При совпадении значения ячейки в Диапазоне значение из Диапазона_Сцепления добавляется к результату с выбранным разделителем.
Диапазон_сцепления (C5:C18) — из этого диапазона берется значение для сцепления, если значение в аргументе Диапазон совпадает с аргументом Критерий(указывается один столбец). Если в Диапазоне значение 5-ой строки совпадает с критерием, то из Диапазона_Сцепления будет взято так же значение из 5-ой строк этого диапазона и сцеплено с результатом.
Разделитель («-«) — По умолчанию пробел, но можно задать любой другой символ или группу символов.
БезПовторов — если указать 1 или ИСТИНА, то в результате получится строка, в которой нет одинаковых значений. Если указать 0 или ЛОЖЬ, то будут выведены все значения. По умолчанию значение ЛОЖЬ.
Примечание: для работы функции должны быть разрешены макросы
Пример СцепитьЕсли.xls (68,0 KiB, 9 926 скачиваний)
Статья помогла? Поделись ссылкой с друзьями!
Поиск по меткам
Макрос работает не корректно, в частности не распознает четырёхзначные значения (например поле «Все сотрудники, с окладом меньше или равным 15000» не указывает значение «Петрова Вера», пока вместо её оклада «6000» не вбить значение «06000»
Как отобразить несколько значений в одной ячейке в Excel
Я нахожусь относительно знаком с Excel и его функцией, но я новичок в VBA (я, однако, имею опыт работы в MATLAB и C). В основном то, что у меня есть лист с другой машине Заполнение заголовка каждого столбца и имя работника заполнения первого столбца. Таблица содержит текстовые значения либо «Поезда», указывая, что человек в этой строке обучаются на оборудовании в указанном столбце, или «Нет», указывая, что они не являются. То, что я хочу сделать, это сделать отдельный лист, который имеет оборудование в первой колонке и один столбец headered как «Обученные». Каждая ячейка теоретически может быть заселена с именами людей, которые обучаются на оборудовании для этой строки. У меня есть для кода петли в VBA, который успешно выводит имена в немедленном окне
но я не смог в течение нескольких часов поиска, чтобы выяснить, как отобразить эти значения в одной ячейке. Это возможно?
Вы должны выбрать, если вы хотите сделать «Для каждого человека, для каждой машины» или «для каждой машины, для каждого человека» в первую очередь. Предположим, вы хотите пойти со второй идеей, вы могли бы пойти с этим псевдо-код:
Это основная идея. Для лучшего представления, я хотел бы сделать все эти операции в некоторых массивах и вставить их в одну операцию.
Используйте оператор конкатенации ( & ) , чтобы собрать значения в строку:
Тогда просто поместить имена их в любой клетки вы хотите.
Как в Excel объединить текст из двух и нескольких ячеек в одну
Объединение текста нескольких ячеек в одну – базовая функция при работе с табличными данными, с ее п.
Объединение текста нескольких ячеек в одну – базовая функция при работе с табличными данными, с ее помощью содержание произвольного количества полей можно сцеплять нужным образом и размещать в свободных ячейках. Она используется при составлении пофамильных списков сотрудников, отчетов различных направлений и других операциях с большими массивами информации. Для объединения ячеек есть два способа: с потерей данных и без потери. В первом случае в объединенной ячейке остается только одно значение, во втором – сохраняется весь текст. Второй способ предполагает как минимум четыре варианта объединения: с использованием двух функций («Сцеп-сцепить» и «Объединить»), при помощи символа амперсанд и с применением макроса. В статье подробно разберемся, как в Excel объединить текст нескольких ячеек в одну.
С помощью функции
Excel предусматривает несколько функций для объединения ячеек. Для начала, расскажем о самой простой и «теряющей» информацию. Если интересует, как в Экселе соединить текст из двух ячеек в одну, оставив только одно значение – то вам понадобится функция «объединить» в разделе «Формат ячейки».
- Выделите мышкой ячейки, которые нужно объединить.
- По образовавшемуся полю щелкните правой кнопкой мыши.
- Выберите пункт «Формат ячеек».
- В появившемся окне зайдите в раздел «Выравнивание».
- Отметьте галочкой пункт «Объединить ячейки» и нажмите «Ок». Выделенные поля объединяться в одну большую с сохранением содержания первой ячейки.
Также эта функция есть в графе «Главная» в разделе «Выравнивание» в верхней части экрана.
С помощью функции «Сцеп-сцепить»
В ранних версиях Excel для объединения текста ячеек применялась функция «Сцепить», в новых вариантах программы ее заменили функцией «Сцеп». Для ее использования:
- Щелкните по пустой ячейке в Excel.
- Поставьте знак «=» и большими буквами введите «Сцепить» либо «Сцеп».
- В скобках после формулы кликните по ячейке, которая должна быть первой в объединенной ячейке, либо введите ее адрес вручную (например, A1). Затем поставьте точку с запятой, после щелкните или напишите вторую ячейку. Затем поставьте точку с запятой и отметьте третье поле. После перечисления адресов нажмите «Enter». В поле, где вбивали формулу, появится объединенный текст. Он появится без пробелов между текстовыми блоками. Чтобы этого избежать, отбейте пробел в каждой отдельно взятой ячейке после находящегося текста, либо после адреса ячейки в формуле добавьте пробел вручную, написав « » (пробел в кавычках). Пробел в формуле также отделяется от остальных элементов точкой с запятой.
Как в Экселе соединить текст из двух ячеек в одну с помощью функции «Объединить»
«Объединить» — усовершенствованная вариация функции «Сцеп». Ее отличие в том, что параметры вводятся единожды на этапе написания функции. В частности, разделитель придется указать один раз для содержимого всех ячеек. Для того чтобы воспользоваться функцией «Объединить» нужно выполнить действия:
- В пустой ячейке поставьте знак «=» и напишите большими буквами «Объединить».
- В скобках после формулы укажите разделитель в кавычках (« » ,«,»,« и »), затем поставьте точку с запятой. Второй параметр формулы – это игнорирование пустых полей. Если они не должны учитываться в формуле, напишите «1», в ряде версий этот параметр обозначается словом «Истина» или «Ложь». Затем перечислите через запятую ячейки, которые нужно объединить, и нажмите «Enter».
В итоге формула должна иметь вид: «=ОБЪЕДИНИТЬ(« »;ИСТИНА; «A1»; «A2»; «A3»).
Если в A1 – «Иванов», в А2 – «Иван», в А3 – «Иванович», то после нажатия «Enter» в пустой ячейке появится «Иванов Иван Иванович».
С помощью символа «&»
Четвертый способ объединить ячейки – использовать амперсанд ( «&»). Для этого:
- В пустой ячейке наберите «=».
- Напишите нужную ячейку, например, А1, затем поставьте знак «&», потом в кавычках введите разделитель. Это может быть пробел или запятая, он также помещается в кавычки, потом введите вторую ячейку, которую нужно объединить. Если их больше двух, пробел выставите после каждой нового поля. Формула должна выглядеть так: «=А1&« »&А2& « »&А3». После нажатия «Enter» содержимое ячеек объединится.
С помощью макроса
Макрос в Excel – это сервис для автоматизации повторяющихся действий, он представляет собой записанную последовательность примененных функций и щелчков мышью для последующего воспроизводства. Используется, если нужно регулярно выполнять типовые задачи, в которых меняются данные, но не структура. Например, макросы используются при составлении ежемесячных отчетов о заработной плате, в которых меняются только цифры, но не метод расчета. Тогда макрос избавит пользователя от необходимости регулярно вручную настраивать и использовать формулы.
Чтобы записать макрос:
- В разделе «Разработчик» в графе «Код» нажмите на клавишу «Записать макрос».
- В появившемся окне выберите имя макроса, чтобы потом было удобнее его искать, присвойте ему сочетание клавиш и место хранения, добавьте описание.
- Нажмите «Ок», затем точно и без ошибок (потому что макрос записывает и ошибки тоже) проделайте алгоритм.
- Вернитесь во вкладку «Разработчик» и «Код» и нажмите «Остановить запись».
Макрос записывается в виде кода Visual Basic для приложений на одноименном языке программирования, который доступен для редактирования при нажатии комбинации ALT + F11. При ручном редактировании становится доступным правка записанного макроса, однако это требует дополнительных знаний и недоступно для рядового пользователя. Также макросы способны работать в нескольких продуктах Microsoft Office одновременно. Выполняется макрос нажатием присвоенной комбинации либо через окно «Макрос», которое вызывается комбинацией ALT + F8.
Данные из нескольких ячеек в одну
- 4 Июнь, 2015 —
- Уроки Excel —
- Tags :
- 0 Comments
Есть несколько способов поместить данные из нескольких ячеек в одну.
Самый простой — это использовать знак &,
Если между данными ячеек нужны пробелы или другие знаки, их можно проставить в отдельном столбце, потом их просто скрыть (в примере в ячейке С2 стоит пробел).
Есть более легкий способ — использовать формулу, чтобы не тыркать кажду ячейку вручную. Это формула СЦЕПИТЬ
Этот способ хорош, если не нужно объединять большие диапазоны данных.
Если нужно объединить данные из большого количества ячеек, расположенных в одном или в нескольких столбцах, проще всего использовать макросы. Для этого находясь в том файле, где нужно разместить в одной ячейке данные и других ячеек надо нажать Alt+F11. Откроется окно макросов. Там надо выбрать пункт Insert, в выпавшем списке пункт Module
и в открывшемся белом поле вставить следующие макрос
Function СЦЕПДИАП_A(Диапазон As Variant, Optional Разделитель As String = » «, _
Optional ПоСтолбцам As Boolean = False, Optional сПереносом As Boolean = False) As String
‘—————————————————————————————
‘ Author : RAN
‘ Purpose : Сцепляет текст ячеек из заданного диапазона
‘ Notes : Разделитель по умолчанию » »
‘ Notes : Optional ПоСтолбцам — просмотр по строкам(умолчание) и по столбцам
‘ Notes : Optional сПереносом по умолчанию — «нет»
‘—————————————————————————————
Dim i&, j&, k&, arr
If сПереносом Then
If Разделитель <> » » Then
Разделитель = Разделитель & vbLf
Else
Разделитель = vbLf
End If
End If
If TypeName(Диапазон) = «Range» Then Диапазон = Диапазон.Value
If Not IsArray(Диапазон) Then СЦЕПДИАП_A = Диапазон: Exit Function
ReDim arr(1 To UBound(Диапазон, 1) * UBound(Диапазон, 2))
If ПоСтолбцам Then
For i = 1 To UBound(Диапазон, 2)
For j = 1 To UBound(Диапазон, 1)
If Len(Диапазон(j, i)) Then k = k + 1: arr(k) = Диапазон(j, i)
Next: Next
Else
For j = 1 To UBound(Диапазон, 1)
For i = 1 To UBound(Диапазон, 2)
If Len(Диапазон(j, i)) Then k = k + 1: arr(k) = Диапазон(j, i)
Next: Next
End If
ReDim Preserve arr(1 To k)
СЦЕПДИАП_A = Join(arr, Разделитель)
СЦЕПДИАП_A = Application.Trim(СЦЕПДИАП_A)
End Function
Далее вернуться к странице excel и там в нужной ячейке вписать формулу =СЦЕПДИАП_A(ваш диапазон)
Функции Excel ЕСЛИ (IF) и ЕСЛИМН (IFS) для нескольких условий
Логическая функция ЕСЛИ в Экселе – одна из самых востребованных. Она возвращает результат (значение или другую формулу) в зависимости от условия.
Функция ЕСЛИ в Excel
Функция имеет следующий синтаксис.
ЕСЛИ(лог_выражение; значение_если_истина; [значение_если_ложь])
лог_выражение – это проверяемое условие. Например, A2 30) не выполняется и возвращается альтернативное значение, указанное в третьем поле. В этом вся суть функции ЕСЛИ. Протягивая расчет вниз, получаем результат по каждому товару.
Однако это был демонстрационный пример. Чаще формулу Эксель ЕСЛИ используют для более сложных проверок. Допустим, есть средненедельные продажи товаров и их остатки на текущий момент. Закупщику нужно сделать прогноз остатков через 2 недели. Для этого нужно от текущих запасов отнять удвоенные средненедельные продажи.
Пока все логично, но смущают минусы. Разве бывают отрицательные остатки? Нет, конечно. Запасы не могут быть ниже нуля. Чтобы прогноз был корректным, нужно отрицательные значения заменить нулями. Здесь отлично поможет формула ЕСЛИ. Она будет проверять полученное по прогнозу значение и если оно окажется меньше нуля, то принудительно выдаст ответ 0, в противном случае — результат расчета, т.е. некоторое положительное число. В общем, та же логика, только вместо значений используем формулу в качестве условия.
В прогнозе запасов больше нет отрицательных значений, что в целом очень неплохо.
Формулы Excel ЕСЛИ также активно используют в формулах массивов. Здесь мы не будем далеко углубляться. Заинтересованным рекомендую прочитать статью о том, как рассчитать максимальное и минимальное значение по условию. Правда, расчет в той статье более не актуален, т.к. в Excel 2016 появились функции МИНЕСЛИ и МАКСЕСЛИ. Но для примера очень полезно ознакомиться – пригодится в другой ситуации.
Формула ЕСЛИ в Excel – примеры нескольких условий
Довольно часто количество возможных условий не 2 (проверяемое и альтернативное), а 3, 4 и более. В этом случае также можно использовать функцию ЕСЛИ, но теперь ее придется вкладывать друг в друга, указывая все условия по очереди. Рассмотрим следующий пример.
Нескольким менеджерам по продажам нужно начислить премию в зависимости от выполнения плана продаж. Система мотивации следующая. Если план выполнен менее, чем на 90%, то премия не полагается, если от 90% до 95% — премия 10%, от 95% до 100% — премия 20% и если план перевыполнен, то 30%. Как видно здесь 4 варианта. Чтобы их указать в одной формуле потребуется следующая логическая структура. Если выполняется первое условие, то наступает первый вариант, в противном случае, если выполняется второе условие, то наступает второй вариант, в противном случае если… и т.д. Количество условий может быть довольно большим. В конце формулы указывается последний альтернативный вариант, для которого не выполняется ни одно из перечисленных ранее условий (как третье поле в обычной формуле ЕСЛИ). В итоге формула имеет следующий вид.
Комбинация функций ЕСЛИ работает так, что при выполнении какого-либо указанно условия следующие уже не проверяются. Поэтому важно их указать в правильной последовательности. Если бы мы начали проверку с B2 =1. Однако этого можно избежать, если в поле с условием написать ИСТИНА, указывая тем самым, что, если не выполняются ранее перечисленные условия, наступает ИСТИНА и возвращается последнее альтернативное значение.
Теперь вы знаете, как пользоваться функцией ЕСЛИ в Excel, а также ее более современным вариантом для множества условий ЕСЛИМН.
Skip to content
В статье показаны способы поиска (ВПР) нескольких значений в Excel на основе одного или нескольких условий и возврата нескольких результатов в столбце, строке или в отдельной ячейке.
При использовании Microsoft Excel для анализа данных вы часто можете оказаться в ситуации, когда вам нужно получить все совпадающие значения для определенного имени, наименования, артикула или какого-либо другого уникального идентификатора. Первое решение, которое приходит на ум, — это использование функции Excel ВПР (VLOOKUP). Но проблема в том, что она может возвращать только одно значение.
Поиск нескольких значений в Excel может быть выполнен с помощью совместного использования ряда функций. Если вы не являетесь экспертом в Excel, не спешите покидать эту страницу. Я постараюсь объяснить логику поиска, чтобы даже новичок мог понять формулы и настроить их для решения подобных задач.
Поиск нескольких позиций в Excel с помощью формулы
Как было сказано ранее, невозможно заставить функцию ВПР Excel возвращать несколько значений. Проблему можно решить, используя следующие функции в формуле массива:
- ЕСЛИ – оценивает условие и возвращает одно значение, если условие выполняется, и другое значение, если условие не выполняется.
- НАИМЕНЬШИЙ– получает N-е наименьшее значение в массиве.
- ИНДЕКС — возвращает элемент массива на основе указанных вами номеров строк и столбцов.
- СТРОКА — возвращает номер строки.
- СТОЛБЕЦ — возвращает номер столбца.
- ЕСЛИОШИБКА – перехватывает ошибки.
Ниже вы найдете несколько примеров таких формул. Их часто называют формулами ВПР нескольких значений, хотя сама функция ВПР здесь не используется. Дело в том, что часто под термином ВПР подразумевают любой поиск в Excel, какими бы формулами и функциями он ни осуществлялся.
Поиск нескольких значений и возврат результатов в столбец
Допустим, у вас есть имена продавцов в столбце А и товары, которые они продали, в столбце В. Таблица содержит несколько записей для каждого продавца. Ваша цель — получить список всех товаров, относящихся к данному человеку. Чтобы это сделать, выполните следующие действия:
- Введите список имен продавцов в какую-нибудь пустую строку того же или другого рабочего листа. В этом примере имена вводятся в ячейки D2:H2:
Совет. Чтобы быстро записать все имеющиеся в списке имена, вы можете использовать эту инструкцию — как получить список уникальных значений в Excel.
- Под именем выберите количество пустых ячеек, равное или превышающее максимально возможное количество совпадений, введите одно из следующих выражений и нажмите
Ctrl + Shift + Enter
для ввода его как формулы массива (в этом случае вы сможете редактировать формулу только сразу во всем диапазоне, где она введена). Или же вы можете записать это в левую верхнюю ячейку, также использовавCtrl + Shift + Enter
, а затем перетащить вниз еще на несколько ячеек (в этом случае вы сможете редактировать формулу в каждой ячейке отдельно).
=ЕСЛИОШИБКА(ИНДЕКС($B$3:$B$13; НАИМЕНЬШИЙ(ЕСЛИ(D$2=$A$3:$A$13; СТРОКА($B$3:$B$13)-2;»»); СТРОКА()-2));»»)
или
=ЕСЛИОШИБКА(ИНДЕКС($B$3:$B$13;НАИМЕНЬШИЙ(ЕСЛИ(D$2=$A$3:$A$13;СТРОКА($A$3:$A$13)-МИН(СТРОКА($A$3:$A$13))+1;»»); СТРОКА()-2));»»)
Как видите, первая формула немного компактнее, а вторая более универсальна и требует меньше модификаций (подробнее о синтаксисе и логике мы поговорим чуть дальше).
- Скопируйте формулу в соседние столбцы справа. Для этого перетащите маркер заполнения (небольшой квадрат в правом нижнем углу выбранного диапазона) вправо.
Результат ВПР нескольких значений в столбце будет выглядеть примерно так:
Здесь мы использовали первую формулу:
=ЕСЛИОШИБКА(ИНДЕКС($B$3:$B$13; НАИМЕНЬШИЙ(ЕСЛИ(D$2=$A$3:$A$13; СТРОКА($B$3:$B$13)-2;»»); СТРОКА()-2));»»)
Как это работает.
Это пример использования Excel от среднего до продвинутого уровня, который подразумевает базовые знания формул массива и функций Excel. Итак, разберём пошагово:
- Функция ЕСЛИ
В основе поиска – функция ЕСЛИ, чтобы получить позиции всех вхождений искомого значения в диапазоне поиска: ЕСЛИ(D$2=$A$3:$A$13; СТРОКА($B$3:$B$13) )-2;»»)
ЕСЛИ сравнивает искомое значение (D2) с каждым значением в диапазоне поиска (A3:A13) и, если совпадение найдено, возвращает относительную позицию строки; пустое значение («») в противном случае.
Относительная позиция вычисляется путем вычитания 2 из СТРОКА($B$3:$B$13), чтобы первая позиция с формулой имела порядковый номер 1 (то есть, 3-2=1). Если ваш диапазон вывода начинается со строки 2, тогда вычтите 1 и так далее. Результатом этой операции является массив {1;2;3;4;5;6;7;8;9;10;11}, который поступает в аргумент значение_если_истина функции ЕСЛИ.
Вместо приведенного выше вычисления вы можете использовать следующее выражение:
СТРОКА(столбец_просмотра) — МИН(СТРОКА(столбец_просмотра))+1
Оно возвращает тот же результат, но не требует каких-либо изменений независимо от местоположения возвращаемого столбца. В этом примере это будет СТРОКА($A$3:$A$13)-МИН(СТРОКА($A$3:$A$13))+1.
Итак, на данный момент у вас есть массив, состоящий из чисел (позиций совпадений) и пустых строк (несовпадений). Для ячейки D3 в этом примере у нас есть следующий массив:
=ЕСЛИОШИБКА(ИНДЕКС($B$3:$B$13; НАИМЕНЬШИЙ({1:»»:»»:»»:5:»»:»»:8:»»:»»:»»}; СТРОКА()-2));»»)
Если вы сверитесь с исходными данными, вы увидите, что «Сергей» (значение поиска в D2) появляется на 1- й , 5 -й и 8 -й позициях в диапазоне поиска (A3: A13).
- Функция НАИМЕНЬШИЙ
Затем вступает в действие функция НАИМЕНЬШИЙ(массив; k), чтобы определить, какие совпадения должны быть возвращены в конкретной ячейке.
С уже установленным в предыдущем шаге массивом давайте определим аргумент k , т. е. k-е наименьшее возвращаемое значение. Для этого вы делаете своего рода «инкрементный счетчик» СТРОКА()-n, где «n» — это номер строки первой ячейки формулы минус 1. В этом примере мы ввели формулу в ячейки D3:D7, поэтому СТРОКА()-2 возвращает «1» для ячейки D3 (строка 3 минус 2), «2» для ячейки D4 (строка 4 минус 2) и т. д.
В результате функция НАИМЕНЬШИЙ извлекает первый наименьший элемент массива в ячейку D3, второй наименьший элемент в ячейку D4 и так далее. И это превращает первоначальную длинную и сложную формулу в очень простую, например:
=ЕСЛИОШИБКА(ИНДЕКС($B$3:$B$13;{1});»»)
Совет. Чтобы увидеть значение, вычисленное определенной частью формулы, выделите эту часть в самой формуле и нажмите F9.
- Функция ИНДЕКС
Здесь все просто. Вы используете функцию ИНДЕКС, чтобы вернуть значение элемента массива на основе его номера.
- Функция ЕСЛИОШИБКА
И, наконец, вы оборачиваете формулу в функцию ЕСЛИОШИБКА для обработки возможных ошибок, которые неизбежны, потому что вы не можете знать, сколько совпадений будет возвращено для того или иного искомого значения. Ведь вы копируете формулу в число ячеек явно большее, чем количество возможных совпадений, то есть «с запасом». Чтобы не пугать пользователей кучей ошибок, просто замените их пустой строкой (пустой ячейкой).
Примечание. Обратите внимание на правильное использование абсолютных и относительных ссылок на ячейки в формуле. Все ссылки фиксированы, за исключением ссылки на относительный столбец в искомом значении (D$2), которая должна изменяться в зависимости от относительного положения столбцов, в которые копируется формула, чтобы возвращать совпадения для других имён.
На скриншоте ниже вы можете видеть, как работает вторая формула
=ЕСЛИОШИБКА(ИНДЕКС($B$3:$B$13;НАИМЕНЬШИЙ(ЕСЛИ(D$2=$A$3:$A$13;СТРОКА($A$3:$A$13)-МИН(СТРОКА($A$3:$A$13))+1;»»); СТРОКА()-2));»»)
Обобщив эти два решения, мы получим следующие общие формулы для ВПР нескольких значений в Excel, которые будут выведены в столбец:
Вариант 1 :
=ЕСЛИОШИБКА(ИНДЕКС(диапазон_возвращаемых_значений; НАИМЕНЬШИЙ(ЕСЛИ(искомое_значение = диапазон_искомых_значений; СТРОКА(диапазон_возвращаемых_значений)-m;»»); СТРОКА()-n));»»)
Вариант 2:
=ЕСЛИОШИБКА(ИНДЕКС(диапазон_возвращаемых_значений;НАИМЕНЬШИЙ(ЕСЛИ(искомое_значение = диапазон_искомых_значений;СТРОКА(диапазон_искомых_значений)-МИН(СТРОКА(диапазон_искомых_значений))+1;»»); СТРОКА()-n));»»)
где:
- m — номер строки первой ячейки в возвращаемом диапазоне минус 1.
- n — номер строки первой ячейки с формулой минус 1.
Примечание. В приведенном выше примере и n, и m равны 2, потому что наш диапазон возвращаемых значений начинается, да и сама формула расположена, в строке 3. В ваших таблицах Эксель это вполне могут быть и другие числа.
Поиск нескольких совпадений и возврат результатов в строке
Если вы хотите вернуть несколько найденных значений в строках, а не в столбцах, измените приведенные выше формулы Excel следующим образом:
=ЕСЛИОШИБКА(ИНДЕКС($B$3:$B$13; НАИМЕНЬШИЙ(ЕСЛИ($D3=$A$3:$A$13;СТРОКА($B$3:$B$13)-2;»»); СТОЛБЕЦ()-4));»»)
или
=ЕСЛИОШИБКА(ИНДЕКС($B$3:$B$13;НАИМЕНЬШИЙ(ЕСЛИ($D3=$A$3:$A$13;СТРОКА($A$3:$A$13)-МИН(СТРОКА($A$3:$A$13))+1;»»);СТОЛБЕЦ()-4)); «»)
Как и в предыдущем примере, обе они являются формулами массива, поэтому не забудьте нажать комбинацию Ctrl + Shift + Enter, чтобы записать их правильно.
Формулы работают с той же логикой, что и в предыдущем примере, за исключением того, что вы используете функцию СТОЛБЕЦ вместо СТРОКА. Чтобы определить, какое совпадающее значение должно быть возвращено в конкретной ячейке, используем: СТОЛБЕЦ()-n где n — номер столбца первой ячейки, в которую вводится формула, минус 1. В этом примере результаты выводятся в диапазон E2:H2. Поскольку E является пятым столбцом, n равно 4 (5-1=4).
Примечание. Чтобы формула правильно копировалась вправо и вниз, обратите внимание на ссылки на значения поиска, где используется абсолютный адрес столбца и относительный адрес строки, например $D3.
И вот общие формулы для ВПР в Excel нескольких значений, возвращаемых по строке:
Формула 1 :
=ЕСЛИОШИБКА(ИНДЕКС(диапазон_возвращаемых_значений; НАИМЕНЬШИЙ(ЕСЛИ(искомое_значение = диапазон_искомых_значений; СТРОКА(диапазон_возвращаемых_значений)-m;»»); СТОЛБЕЦ()-n));»»)
Формула 2:
=ЕСЛИОШИБКА(ИНДЕКС(диапазон_возвращаемых_значений;НАИМЕНЬШИЙ(ЕСЛИ(искомое_значение = диапазон_искомых_значений;СТРОКА(диапазон_искомых_значений)-МИН(СТРОКА(диапазон_искомых_значений))+1;»»); СТОЛБЕЦ()-n));»»)
где:
- m — номер строки первой ячейки в возвращаемом диапазоне, минус 1.
- n — номер столбца первой ячейки, в которой записана формула, минус 1.
Поиск нескольких значений на основе нескольких условий
Вы уже знаете, как выполнять поиск нескольких значений в Excel на основе одного условия. Но что, если вы хотите вернуть несколько совпадений сразу на основе двух или более критериев? Продолжая предыдущие примеры – что, если у вас в таблице есть дополнительный столбец «Месяц» и вы хотите получить список всех товаров, проданных конкретным продавцом в определенном месяце?
Если вы знакомы с формулами массивов, то, возможно, помните, что они позволяют использовать знак умножения (*) в качестве логического оператора И. Таким образом, вы можете просто взять выражения, рассмотренные в двух предыдущих примерах, и заставить их проверять несколько условий, как показано ниже.
Как вернуть несколько значений в столбце.
Выведем искомые значения, соответствующие одновременно нескольким условиям, в привычном нам виде – вертикально в одном столбце.
В общем виде это выглядит так:
=ЕСЛИОШИБКА(ИНДЕКС(диапазон_возвращаемых_значений; НАИМЕНЬШИЙ(ЕСЛИ(1=((—(искомое_значение1 = диапазон_искомых_значений1)) * (—(искомое_значение2 = диапазон_искомых_значений2))) ; СТРОКА(диапазон_возвращаемых_значений)-m;»»); СТРОКА()-n));»»)
где:
- m — номер строки первой ячейки в возвращаемом диапазоне, минус 1.
- n — номер строки первой слева ячейки с формулой, минус 1.
Предположим, что список продавцов (диапазон_искомых_значений1) находится в A3:A30, список месяцев (диапазон_искомых_значений2) находится в B3: B30, интересующий продавец (искомое_значение1) указан в ячейке E3, а нужный месяц (искомое_значение2) – в ячейке F3. Тогда формула поиска принимает следующий вид:
=ЕСЛИОШИБКА(ИНДЕКС($C$3:$C$30; НАИМЕНЬШИЙ(ЕСЛИ(1=((—($E$3=$A$3:$A$30))*(—($F$3=$B$3:$B$30))); СТРОКА($C$3:$C$30)-2;»»); СТРОКА()-2));»»)
Таким образом, мы вводим имя в E3, месяц в F3, и получаем список товаров в столбце G:
Как вернуть несколько результатов в строке.
Если вы хотите получить по горизонтали несколько искомых значений на основе нескольких критериев, то есть когда результаты размещаются в одной строке, то используйте следующий общий шаблон:
=ЕСЛИОШИБКА(ИНДЕКС(диапазон_возвращаемых_значений; НАИМЕНЬШИЙ(ЕСЛИ(1=((—(искомое_значение1 = диапазон_искомых_значений1)) * (—(искомое_значение2 = диапазон_искомых_значений2))) ; СТРОКА(диапазон_возвращаемых_значений)-m;»»); СТОЛБЕЦ()-n));»»)
где:
- m — номер строки первой ячейки в возвращаемом диапазоне, минус 1.
- n — номер столбца первой слева ячейки, в которой записана формула, минус 1.
Для нашего примера набора данных формула выглядит следующим образом:
=ЕСЛИОШИБКА(ИНДЕКС($C$3:$C$30; НАИМЕНЬШИЙ(ЕСЛИ(1=((—($E3=$A$3:$A$30))*(—($F3=$B$3:$B$30))); СТРОКА($C$3:$C$30)-2;»»); СТОЛБЕЦ()-6));»»)
И результат ВПР нескольких значений по нескольким условиям может выглядеть так:
Аналогичным образом вы можете выполнять ВПР с тремя, четырьмя и более условиями.
Как это работает?
По сути, формулы для ВПР нескольких значений с несколькими условиями работают с уже знакомой логикой, объясненной в самом первом нашем примере. Единственное отличие состоит в том, что функция ЕСЛИ теперь проверяет несколько условий:
1=((—(искомое_значение1 = диапазон_искомых_значений1)) * (—(искомое_значение2 = диапазон_искомых_значений2)) * …..)
Результатом каждого сравнения (искомое_значение = диапазон_искомых_значений) является массив логических значений ИСТИНА (условие выполнено) и ЛОЖЬ (условие не выполнено). Двойное отрицание (—) переводит логические значения в единицы и нули. А поскольку умножение на ноль всегда дает ноль, в правой части этого равенства у вас будет получаться 1 только для тех элементов, которые удовлетворяют всем указанным вами условиям.
Вы просто сравниваете окончательный массив нулей и единиц с числом 1, чтобы функция СТРОКА вернула порядковые номера строк, удовлетворяющих всем условиям, в противном случае — пустоту.
Напоминание. Все формулы поиска, обсуждаемые в этой статье, являются формулами массива. Таким образом, каждая из них перебирает все элементы массива каждый раз, когда исходные данные изменяются или рабочий лист пересчитывается. На больших листах, содержащих сотни или тысячи позиций, это может значительно замедлить работу Excel.
Как вернуть несколько значений ВПР в одну ячейку
Мы продолжаем работать с набором данных, который использовали в предыдущем примере. Но на этот раз мы хотим добиться другого результата — вместо того, чтобы извлекать несколько совпадений в отдельные ячейки, мы хотим, чтобы они отображались в одной текстовой ячейке, разделенные запятой, пробелом или другим разделителем по вашему выбору.
Используем выражение, которое мы рассматривали чуть выше и которая позволяет получить несколько результатов ВПР с условиями в одной строке:
=ЕСЛИОШИБКА(ИНДЕКС($C$3:$C$30; НАИМЕНЬШИЙ(ЕСЛИ(1=((—($E3=$A$3:$A$30))*(—($F3=$B$3:$B$30))); СТРОКА($C$3:$C$30)-2;»»); СТОЛБЕЦ()-6));»»)
Внесем в нее небольшие изменения.
Чтобы обработать сразу несколько результатов, в функцию СТОЛБЕЦ добавим аргумент – диапазон ячеек, в который мы ранее копировали формулу. То есть, вместо СТОЛБЕЦ() у нас теперь будет СТОЛБЕЦ(G3:K3). Это позволит формуле массива получить сразу несколько номеров столбцов.
Затем применим крайне полезную при работе с текстовыми значениями функцию ОБЪЕДИНИТЬ (доступна в Excel 2019 и более поздних версиях). Она позволит нам объединить несколько текстовых значений, отделив их друг от друга выбранным нами разделителем. К примеру, запятой с пробелом после нее.
Вот что у нас получится:
=ОБЪЕДИНИТЬ(«, «; ИСТИНА; ЕСЛИОШИБКА(ИНДЕКС($C$3:$C$30; НАИМЕНЬШИЙ(ЕСЛИ(1=((—($E3=$A$3:$A$30))*(—($F3=$B$3:$B$30))); СТРОКА($C$3:$C$30)-2;»»); СТОЛБЕЦ(G3:K3)-6));»»))
И видим результат ВПР нескольких значений в одной ячейке на этом скриншоте:
Еще один, более простой вариант, чтобы подтянуть несколько значений и вывести результат в одной ячейке:
=ОБЪЕДИНИТЬ(«, «;ИСТИНА;ЕСЛИ(($A$3:$A$30=E3)*($B$3:$B$30=F3)=1;$C$3:$C$30;»»))
Ее также нужно вводить как формулу массива:
Как найти несколько значений без дубликатов
А если так случится, что в результатах поиска будет несколько одинаковых значений? Пример таких данных вы можете видеть на скриншоте ниже. Естественно, выводить в ячейке несколько дубликатов было бы не совсем хорошо.
Если вы хотите получить в одной ячейке результаты поиска нескольких значений без повторов, попробуйте так:
=ОБЪЕДИНИТЬ(«, «; ИСТИНА; ЕСЛИ(ЕСЛИОШИБКА(ПОИСКПОЗ($C$3:$C$13; ЕСЛИ(E3=$A$3:$A$13; $C$3:$C$13; «»); 0);»»)=ПОИСКПОЗ(СТРОКА($C$3:$C$13); СТРОКА($C$3:$C$13)); $C$3:$C$13; «»))
Вставьте это выражение в нужную ячейку, не забыв завершить ввод комбинацией Ctrl+Shift+Enter
, так как это формула массива. Затем можете скопировать вниз по столбцу, чтобы получить данные по другим критериям выбора.
Как видите, мы получили в одной ячейке несколько значений, среди которых нет одинаковых, хотя в исходных данных таковые имеются.
Надеюсь, эти примеры будут вам полезны для поиска сразу нескольких значений в Excel. Благодарю вас за чтение.