Другие языки программирования и технологии

в ячейке Эксель вбито 2;5;6. Как преобразовать содержимое ячейки в массив, или извлечь какое нибудь из чисел?

Vl
Vladeone
488
В Excel 2010 есть функция разбить по столбцам
Выбираете столбец с 2;5;6
Данные, Текст по столбцам
В разделителях указываете точка с запятой
2 окажется в одном столбце 5 в другом и т. д.

Если числа одинаковой длины можно ПСТР
=ПСТР (A1;индекс*2+1;1) (индекс начинается с нуля)

Пусть в A1 = 2;5;6
=ПСТР (A1;1;1) - даст первую цифру (0*2+1)
=ПСТР (A1;3;1) - даст вторую цифру (1*2+1)

Можно написать функцию на VBA и её вызывать
Первый параметр строка, второй разделитель, третий номер элемента

Public Function GetArrayData(astrData As String, astrDelimiters, aintIndex As Integer)
Dim arrData
arrData = Split(astrData, astrDelimiters)
GetArrayData = arrData(aintIndex)
End Function

Если вызвать эту функцию н-р так GetArrayData("2;5;6", ";", 1) - вернёт число 5 (индекс с нуля)

P.S: если поместить эту функцию в модуль, то можно вызывать прямо из листа.
Шарифян Сахипов
Шарифян Сахипов
84 764
Лучший ответ
В принципе это возможно.
Покажу на примере ЗАДАЧИ. За основу взята формула из ответа.
=СУММПРОИЗВ (СЧЁТЕСЛИ ($A$1:$A$20;1*ПСТР (B1;СТРОКА (ДВССЫЛ ("1:" & ДЛСТР (B1)));1)))
где $A$1:$A$20 - диапазон.
В ячейке В1 - массив значений. Т. е. в ячейке 2;5;6 или 2:5:6 или 256. Массив все равно как задавать, главное его значения должны быть одноразрядные.
Как сделать массив из значений любой разрядности пока не знаю. Может быть вы сами теперь сделаете.
Пример -
Массив из строки

Похожие вопросы