Помогите разнести текстовые значения из одной ячейки по нескольким, визуально в прикрепленном примере. Функция текст по столбцам не работает, точнее не совсем подходит, потому что значения, которые нужно разнести, заполнены не в полном объеме и не в одинаковой последовательности.
Заранее благодарен.
Добрый день, форумчане!
Помогите разнести текстовые значения из одной ячейки по нескольким, визуально в прикрепленном примере. Функция текст по столбцам не работает, точнее не совсем подходит, потому что значения, которые нужно разнести, заполнены не в полном объеме и не в одинаковой последовательности.
AlexM, Пускай формула немного сложная (для меня если честно не понятная), но в очередной раз вы меня спасаете. Вам огромное человеческое спасибо!
можно один не скромный вопрос: "очень хочу понять как работает excel, не на столько глобально как ваш уровень, но хотелось бы уловить некоторые хитрости, у вас можно получить мастер класс?"
AlexM, Пускай формула немного сложная (для меня если честно не понятная), но в очередной раз вы меня спасаете. Вам огромное человеческое спасибо!
можно один не скромный вопрос: "очень хочу понять как работает excel, не на столько глобально как ваш уровень, но хотелось бы уловить некоторые хитрости, у вас можно получить мастер класс?"122334boss
Я сам на этом форум захожу получить мастер класс. Полученные знания использую для ответа на вопросы. Лучший способ закрепить полученные знания, это передать их. Формулы в C:G определяют позицию заголовка столбца в строке описания товара из столбца А, например "Материал лезвия". К номеру позиции прибавляем длину заголовка. Получаем позицию названия материала лезвия. От этой позиции в исходной строке ищем точку. По ней определяем из скольких символов состоит название материала. Функция ПСТР() извлекает фрагмент с названием материала из исходной строки. В C3:D4 формулы вернули ошибку, которую скрыл условным форматированием. В последнем столбце в исходную строку подставляем пустую строку "" вместо полученных строк с заголовками. Вкратце так.
Я сам на этом форум захожу получить мастер класс. Полученные знания использую для ответа на вопросы. Лучший способ закрепить полученные знания, это передать их. Формулы в C:G определяют позицию заголовка столбца в строке описания товара из столбца А, например "Материал лезвия". К номеру позиции прибавляем длину заголовка. Получаем позицию названия материала лезвия. От этой позиции в исходной строке ищем точку. По ней определяем из скольких символов состоит название материала. Функция ПСТР() извлекает фрагмент с названием материала из исходной строки. В C3:D4 формулы вернули ошибку, которую скрыл условным форматированием. В последнем столбце в исходную строку подставляем пустую строку "" вместо полученных строк с заголовками. Вкратце так.AlexM
Номер мобильного модема (без голосовой связи) 9269171249 МегаФон, Московский регион.
AlexM, В любом случае спасибо. Принцип я разобрал, правда формулу не понял. А не подскажите ссылочку, где можно почитать принцип работы функций с примерами. Охота самому разбираться, чтобы в рабочих моментах не было трудностей.
AlexM, В любом случае спасибо. Принцип я разобрал, правда формулу не понял. А не подскажите ссылочку, где можно почитать принцип работы функций с примерами. Охота самому разбираться, чтобы в рабочих моментах не было трудностей.122334boss
[offtop]Вариантов решения задачи, как правило несколько. Какие использовать функции зависит в основном от опыта. В вашем варианте было бы интереснее сделать свою функцию (функции пользователя) у которой два аргумента: ячейка столбца А и заголовок столбца C:G. Функции пользователя создают на встроенном в Excel языке программирования VBA.
[offtop]Вариантов решения задачи, как правило несколько. Какие использовать функции зависит в основном от опыта. В вашем варианте было бы интереснее сделать свою функцию (функции пользователя) у которой два аргумента: ячейка столбца А и заголовок столбца C:G. Функции пользователя создают на встроенном в Excel языке программирования VBA.AlexM
Номер мобильного модема (без голосовой связи) 9269171249 МегаФон, Московский регион.
Что такое функция пользователя для вашей задачи. В исходных строках Название характеристики и характеристика разделены двоеточием и пробелом, а некоторые разделены только пробелом. Для упрощения кода сделал везде с двоеточием. Функция вставляется в Module1[vba]
Код
Function Boss(Source_String As Range, Characteristic As Range) As String Dim Source_Str As String, ps As Long, pl As Long If Characteristic = "Описание" Then Source_Str = Source_String.Value For Each iCell In Range(Cells(Source_String.Row, 3), Cells(Source_String.Row, 7)) Source_Str = Replace(Source_Str, IIf(iCell = "", "", Cells(2, iCell.Column) & ": " & iCell & "."), "") Next Boss = Trim(Source_Str) Else ps = InStr(Source_String, Characteristic) If ps = 0 Then Boss = "": Exit Function pl = InStr(ps, Source_String, ".") - InStr(Source_String, Characteristic) Boss = Trim(Mid(Source_String, ps + Len(Characteristic) + 1, pl - Len(Characteristic) - 1)) End If End Function
[/vba] У вашей пользовательской функции "Boss" два аргумента, о которых я писал в предыдущем сообщении. Для ячейки С3 так
Код
=Boss($A3;C$2)
Затем протягиваете по таблице. Для работы функции надо разрешить работу макросов.
Что такое функция пользователя для вашей задачи. В исходных строках Название характеристики и характеристика разделены двоеточием и пробелом, а некоторые разделены только пробелом. Для упрощения кода сделал везде с двоеточием. Функция вставляется в Module1[vba]
Код
Function Boss(Source_String As Range, Characteristic As Range) As String Dim Source_Str As String, ps As Long, pl As Long If Characteristic = "Описание" Then Source_Str = Source_String.Value For Each iCell In Range(Cells(Source_String.Row, 3), Cells(Source_String.Row, 7)) Source_Str = Replace(Source_Str, IIf(iCell = "", "", Cells(2, iCell.Column) & ": " & iCell & "."), "") Next Boss = Trim(Source_Str) Else ps = InStr(Source_String, Characteristic) If ps = 0 Then Boss = "": Exit Function pl = InStr(ps, Source_String, ".") - InStr(Source_String, Characteristic) Boss = Trim(Mid(Source_String, ps + Len(Characteristic) + 1, pl - Len(Characteristic) - 1)) End If End Function
[/vba] У вашей пользовательской функции "Boss" два аргумента, о которых я писал в предыдущем сообщении. Для ячейки С3 так
Код
=Boss($A3;C$2)
Затем протягиваете по таблице. Для работы функции надо разрешить работу макросов.AlexM
AlexM, для понимания выше изложенного мне нужно наверное неделя, чтобы вообще понять как это работает. В любом случае спасибо, будет чем заняться в свободное время.
AlexM, для понимания выше изложенного мне нужно наверное неделя, чтобы вообще понять как это работает. В любом случае спасибо, будет чем заняться в свободное время.122334boss
AlexM, начал методом подбора смотреть как работает ваша формула, подставил другие значения и не могу понять почему не получилось в последнем столбике (я прикрепил файл). Подскажите, на что нужно обратить внимание?
AlexM, начал методом подбора смотреть как работает ваша формула, подставил другие значения и не могу понять почему не получилось в последнем столбике (я прикрепил файл). Подскажите, на что нужно обратить внимание?122334boss
Формулы в C:G определяют позицию заголовка столбца в строке описания товара из столбца А, например "Материал лезвия". К номеру позиции прибавляем длину заголовка. Получаем позицию названия материала лезвия. От этой позиции в исходной строке ищем точку.
У вас изменился формат, появились теги <br>, в числах разделитель точка, вместо запятой, вместо двоеточий дефис и заголовки поменялись. Формулы и программы будут работать, если формат всегда один.
Формулы в C:G определяют позицию заголовка столбца в строке описания товара из столбца А, например "Материал лезвия". К номеру позиции прибавляем длину заголовка. Получаем позицию названия материала лезвия. От этой позиции в исходной строке ищем точку.
У вас изменился формат, появились теги <br>, в числах разделитель точка, вместо запятой, вместо двоеточий дефис и заголовки поменялись. Формулы и программы будут работать, если формат всегда один.AlexM
Номер мобильного модема (без голосовой связи) 9269171249 МегаФон, Московский регион.