Новости:

Новая редакция правил форума: 2.4. Если вопрос или ответ содержится во вложенном файле, все-равно кратко описывайте в сообщении вопрос или суть решения. Это необходимо, чтобы тему можно было найти через поиск.

Главное меню

Сцепка значений ячеек по вариантам

Автор Тамара Кубарева, 29.10.2017, 11:05

« назад - далее »

Тамара Кубарева

ДД, может такой вопрос где-то разбирался, но есть такая сложность. Нужно сцепить варианты цветов с вариантами размеров через " ", чтобы каждому варианту цвета присвоился вариант размера, затем этому же цвету следующий размер и т.д., затем для следующего цвета аналогично все размеры. Все значения цветов и размеров последовательно должны быть в одной ячейке на этой же строке, разделенные ",". Аналогично вниз по всем строкам. Файл во вложении. Значений цветов может быть 10, размеров 40.

boa

По ИМХО, оптимальное решение на пользовательской функции

Function SplitSeparComma(a As String, b As String) As String
    Dim str1$(), str2$(), str$, x, y
    str1 = split(a, ",")
    str2 = split(b, ",")
    For Each x In str1
        For Each y In str2
            str = str & x & " " & y & ","
        Next
    Next
    SplitSeparComma = Mid(str, 1, Len(str) - 1)
End Function
Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра

Тамара Кубарева

boa спасибо, да вроде работает ваша функция, но вот при проверке, смотрю рубятся значения в конце ячейки. Что это ограничение экселя на кол-во знаков в ячейке? : http://prntscr.com/h4enyx

boa

начиная с 2007 Excel'я количество символов в ячейке = 32 767.
Возможно вы просто не видите все символы на экране?
попробуйте скопировать ячейку с функцией и вставить как значение, и посмотрите результат...
Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра

Тамара Кубарева

да все символы на месте. Благодарю!

runner

А как вместо запятой после пары вставить символ перевода строки?
Внешним добавлением ПОДСТАВИТЬ и СИМВОЛ(10) всё решается, но можно ли это уместить внутрь UDF?

vikttur

Цитироватьможно ли это уместить внутрь UDF
где = Replace(где, что, на_что)

runner

#7
Не совсем понял куда этот кусок вписать .. не силён в VBA, отсюда и проблемы :(
Я имел в виду этот кусок:

        For Each y In str2
            str = str & x & " " & y & ","
        Next

пытался вместо & "," вставить & СИМВОЛ(10) или & CHAR(10), но, похоже, это записывается по-другому

boa

Цитата: runner от 02.11.2017, 12:28
пытался вместо & "," вставить & СИМВОЛ(10) или & CHAR(10), но, похоже, это записывается по-другому

str = str & x & " " & y & Chr(10)
или
str = str & x & " " & y & vbNewLine
или
str = str & x & " " & y & vbCrLf
Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра

runner

#9
Спасибо! Всё работает :)

Тамара Кубарева

Добрый день!
Вопрос получил продолжение. Суть в том, что из пар значений для сцепки по предыдущему условию, не все пары должны включаться в сцепку, то есть некоторые пары вариантов Цвет+Размер отсутствуют. То есть, есть табличка (во вложении) где для каждого товара, то есть для каждой строки указывается какие значения пар цвет и размер присутствуют, а какие отсутствуют. Значения из этой таблички ложатся в ячейку "Таблица" второго файла в таком виде как в файле. В файле две строки - первая где все варианты присутствуют, вторая где что-то отсутствует, для второй строки как раз скрин таблицы. Суть того как ложатся значения таблицы в ячейку такова: Сначала идет слово Размер, то что находится в левом верхнем углу, затем перечисляются значения по горизонтали (цвета), т.е. столбцов таблички, затем начинается перечисление значений по вертикали (размеры), т.е. строк таблицы, где для каждого из значений (размер) указываются символы по количеству вертикальных элементов (цветов). Символы могут быть двух видов: есть или временно нет, их можно увидеть в ячейке, там еще между всеми соседними значениями много символов переноса. Ну вот, суть в том, что сцепку пар значений Цвет+Размер нужно получить, исключая отсутствующие варианты. черный и чёрный это наверное одно и то же, но в контексте задачи разные. :)

Тамара Кубарева

P.S. Все значения и пары нужно получить именно из ячейки таблица, нет перечислений через запятую как в прошлой задаче.

boa

Здравствуйте, Тамара
Приложите пример с табличками и примерами готовых результатов.
тот файл, что вы прикрепили к сообщению не читабелен
Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра

Тамара Кубарева

Теперь должно стать понятнее, вся таблица ассортимента с картинки содержится в одной ячейке, в прошлом варианте файла там все есть, оно в ячейке, но там много переносов. В этом варианте при получении исходника применена замена переносов и табуляций на пробел. В файле .xlsx примечания.

boa

#14
Тамара, как бы вам объяснить...
то, что вы прислали - обрезок xml кода
обрабатывать искаженный Userом код - не благодарное занятие, т.к. в следующий раз User исказит его по новому
надо либо оригинал XML обрабатывать, либо правильно импортировать xml в Excel.

P.S. Вы не заметили, что ваш XLSX отличается от JPG?
Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра