Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Перенос последних слов в соседнюю ячейку - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Перенос последних слов в соседнюю ячейку
anabioss13 Дата: Среда, 09.12.2015, 12:44 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 133
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день! Подскажите пожалуйста как перенести в соседнюю ячейку название производителя. В примере есть наименование и у него в конце написан производитель, как бы его отделить? В соседнюю ячейку я выборочно вставил, что должно получиться. Помогите, друзья)
К сообщению приложен файл: 9875829.xlsx (11.3 Kb)
 
Ответить
СообщениеДобрый день! Подскажите пожалуйста как перенести в соседнюю ячейку название производителя. В примере есть наименование и у него в конце написан производитель, как бы его отделить? В соседнюю ячейку я выборочно вставил, что должно получиться. Помогите, друзья)

Автор - anabioss13
Дата добавления - 09.12.2015 в 12:44
SLAVICK Дата: Среда, 09.12.2015, 12:47 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Как программе понять что последнее слово - это производитель?
Есть два варианта:
1-й отрывать последнее слово от строки и надеяться что это производитель.
2-й сделать отдельно список всех производителей, и если в строке будет встречаться производитель он будет перенесен в 2-й столбец.


Иногда все проще чем кажется с первого взгляда.
 
Ответить
СообщениеКак программе понять что последнее слово - это производитель?
Есть два варианта:
1-й отрывать последнее слово от строки и надеяться что это производитель.
2-й сделать отдельно список всех производителей, и если в строке будет встречаться производитель он будет перенесен в 2-й столбец.

Автор - SLAVICK
Дата добавления - 09.12.2015 в 12:47
abtextime Дата: Среда, 09.12.2015, 12:52 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 828
Репутация: 117 ±
Замечаний: 0% ±

Excel 2010
В ваших выделениях нет системы, это может быть одно слово, может быть два, могут быть скобки. Нужен либо единый принцип выделения производителя из артикула, либо перечень производителей
 
Ответить
СообщениеВ ваших выделениях нет системы, это может быть одно слово, может быть два, могут быть скобки. Нужен либо единый принцип выделения производителя из артикула, либо перечень производителей

Автор - abtextime
Дата добавления - 09.12.2015 в 12:52
anabioss13 Дата: Среда, 09.12.2015, 12:53 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 133
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Оторвать последнее слово в строке достаточно и все что в скобках в конце. Это и будет производитель. Подскажите на примере формулу.
 
Ответить
СообщениеОторвать последнее слово в строке достаточно и все что в скобках в конце. Это и будет производитель. Подскажите на примере формулу.

Автор - anabioss13
Дата добавления - 09.12.2015 в 12:53
abtextime Дата: Среда, 09.12.2015, 12:55 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 828
Репутация: 117 ±
Замечаний: 0% ±

Excel 2010
SLAVICK, 1-й однозначно не проходит. Можно предложить вариант - берем одно или два последних слова (из букв), если они в верхнем регистре
 
Ответить
СообщениеSLAVICK, 1-й однозначно не проходит. Можно предложить вариант - берем одно или два последних слова (из букв), если они в верхнем регистре

Автор - abtextime
Дата добавления - 09.12.2015 в 12:55
SLAVICK Дата: Среда, 09.12.2015, 12:56 | Сообщение № 6
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Пример по моему 2-му варианту:
Код
=ИНДЕКС($I$1:$I$10;МАКС(НЕ(ЕОШИБКА(ПОИСК($I$2:$I$9;B4;1)))*СТРОКА($I$2:$I$9));1)
К сообщению приложен файл: 4143592.xlsx (12.7 Kb)


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Среда, 09.12.2015, 12:56
 
Ответить
СообщениеПример по моему 2-му варианту:
Код
=ИНДЕКС($I$1:$I$10;МАКС(НЕ(ЕОШИБКА(ПОИСК($I$2:$I$9;B4;1)))*СТРОКА($I$2:$I$9));1)

Автор - SLAVICK
Дата добавления - 09.12.2015 в 12:56
anabioss13 Дата: Среда, 09.12.2015, 13:06 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 133
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Не могу сообразить, в список добавляю производителя. протягиваю формулу и там вообще ерунда получается.
 
Ответить
СообщениеНе могу сообразить, в список добавляю производителя. протягиваю формулу и там вообще ерунда получается.

Автор - anabioss13
Дата добавления - 09.12.2015 в 13:06
SLAVICK Дата: Среда, 09.12.2015, 13:16 | Сообщение № 8
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Оторвать последнее слово в строке достаточно и все что в скобках в конце. Это и будет производитель.

Можно предложить вариант - берем одно или два последних слова (из букв), если они в верхнем регистре

Получилось вот что:
Код
=ЕСЛИ(ПРАВБ(B4;1)=")";
"(" & СЖПРОБЕЛЫ(ПРАВСИМВ(ПОДСТАВИТЬ(B4;"(";ПОВТОР(" ";100));100));
ЕСЛИ(КОДСИМВ(СЖПРОБЕЛЫ(ПРАВСИМВ(ПОДСТАВИТЬ(B4;" ";ПОВТОР(" ";100));100)))=КОДСИМВ(ПРОПИСН(СЖПРОБЕЛЫ(ПРАВСИМВ(ПОДСТАВИТЬ(B4;" ";ПОВТОР(" ";100));100))));СЖПРОБЕЛЫ(ПРАВСИМВ(ПОДСТАВИТЬ(B4;" ";ПОВТОР(" ";100));100));"")
)

в список добавляю производителя. протягиваю формулу и там вообще ерунда получается.

Мы не экстрасенсы - пример в студию. Могу только предположить, что Вы ввели формулу не как формулу массива Ctrl+Shift+Enter
К сообщению приложен файл: 1224090.xlsx (13.2 Kb)


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Среда, 09.12.2015, 13:17
 
Ответить
Сообщение
Оторвать последнее слово в строке достаточно и все что в скобках в конце. Это и будет производитель.

Можно предложить вариант - берем одно или два последних слова (из букв), если они в верхнем регистре

Получилось вот что:
Код
=ЕСЛИ(ПРАВБ(B4;1)=")";
"(" & СЖПРОБЕЛЫ(ПРАВСИМВ(ПОДСТАВИТЬ(B4;"(";ПОВТОР(" ";100));100));
ЕСЛИ(КОДСИМВ(СЖПРОБЕЛЫ(ПРАВСИМВ(ПОДСТАВИТЬ(B4;" ";ПОВТОР(" ";100));100)))=КОДСИМВ(ПРОПИСН(СЖПРОБЕЛЫ(ПРАВСИМВ(ПОДСТАВИТЬ(B4;" ";ПОВТОР(" ";100));100))));СЖПРОБЕЛЫ(ПРАВСИМВ(ПОДСТАВИТЬ(B4;" ";ПОВТОР(" ";100));100));"")
)

в список добавляю производителя. протягиваю формулу и там вообще ерунда получается.

Мы не экстрасенсы - пример в студию. Могу только предположить, что Вы ввели формулу не как формулу массива Ctrl+Shift+Enter

Автор - SLAVICK
Дата добавления - 09.12.2015 в 13:16
anabioss13 Дата: Среда, 09.12.2015, 13:22 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 133
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
SLAVICK, Супер.. Работает, меня это устроит вполне. А еще просьба, можно по такому же принципу удалить из наименования то что вынесли в другую ячейку?
 
Ответить
СообщениеSLAVICK, Супер.. Работает, меня это устроит вполне. А еще просьба, можно по такому же принципу удалить из наименования то что вынесли в другую ячейку?

Автор - anabioss13
Дата добавления - 09.12.2015 в 13:22
SLAVICK Дата: Среда, 09.12.2015, 13:32 | Сообщение № 10
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Код
=ПОДСТАВИТЬ(B4;D4;"")
К сообщению приложен файл: 5444376.xlsx (14.2 Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщение
Код
=ПОДСТАВИТЬ(B4;D4;"")

Автор - SLAVICK
Дата добавления - 09.12.2015 в 13:32
abtextime Дата: Среда, 09.12.2015, 13:37 | Сообщение № 11
Группа: Проверенные
Ранг: Ветеран
Сообщений: 828
Репутация: 117 ±
Замечаний: 0% ±

Excel 2010
через UDF решение

[vba]
Код

Public Function Proizv(S As String) As String

LastLetter = Len(S)
FirstLetter = 1
FoundedLast = False
FoundedFirst = False
i = Len(S)
Do While Not FoundedFirst And (i > 1)
        If (Mid(S, i, 1) >= "À") And (Mid(S, i, 1) <= "Я") Or (Mid(S, i, 1) >= "A") And (Mid(S, i, 1) <= "Z") Then
            If Not FoundedLast Then
                FoundedLast = True
                LastLetter = i
            End If
        Else
            If FoundedLast Then
                FoundedFirst = True
                FirstLetter = i
            End If
        End If
   i = i - 1
Loop

Proizv = Mid(S, FirstLetter, LastLetter - FirstLetter + 1)

End Function
[/vba]
К сообщению приложен файл: 9875829--111.xlsm (18.0 Kb)


Сообщение отредактировал abtextime - Среда, 09.12.2015, 13:38
 
Ответить
Сообщениечерез UDF решение

[vba]
Код

Public Function Proizv(S As String) As String

LastLetter = Len(S)
FirstLetter = 1
FoundedLast = False
FoundedFirst = False
i = Len(S)
Do While Not FoundedFirst And (i > 1)
        If (Mid(S, i, 1) >= "À") And (Mid(S, i, 1) <= "Я") Or (Mid(S, i, 1) >= "A") And (Mid(S, i, 1) <= "Z") Then
            If Not FoundedLast Then
                FoundedLast = True
                LastLetter = i
            End If
        Else
            If FoundedLast Then
                FoundedFirst = True
                FirstLetter = i
            End If
        End If
   i = i - 1
Loop

Proizv = Mid(S, FirstLetter, LastLetter - FirstLetter + 1)

End Function
[/vba]

Автор - abtextime
Дата добавления - 09.12.2015 в 13:37
abtextime Дата: Среда, 09.12.2015, 13:43 | Сообщение № 12
Группа: Проверенные
Ранг: Ветеран
Сообщений: 828
Репутация: 117 ±
Замечаний: 0% ±

Excel 2010
маленький баг исправил

[vba]
Код
Public Function Proizv(S As String) As String

LastLetter = Len(S)
FirstLetter = 1
FoundedLast = False
FoundedFirst = False
i = Len(S)
Do While Not FoundedFirst And (i > 1)
        If (Mid(S, i, 1) >= "À") And (Mid(S, i, 1) <= "ß") Or (Mid(S, i, 1) >= "A") And (Mid(S, i, 1) <= "Z") Then
            If Not FoundedLast Then
                FoundedLast = True
                LastLetter = i
            End If
        Else
            If FoundedLast Then
                FoundedFirst = True
                FirstLetter = i + 1
            End If
        End If
   i = i - 1
Loop

Proizv = Mid(S, FirstLetter, LastLetter - FirstLetter + 1)

End Function
[/vba]
К сообщению приложен файл: 0425502.xlsm (18.5 Kb)
 
Ответить
Сообщениемаленький баг исправил

[vba]
Код
Public Function Proizv(S As String) As String

LastLetter = Len(S)
FirstLetter = 1
FoundedLast = False
FoundedFirst = False
i = Len(S)
Do While Not FoundedFirst And (i > 1)
        If (Mid(S, i, 1) >= "À") And (Mid(S, i, 1) <= "ß") Or (Mid(S, i, 1) >= "A") And (Mid(S, i, 1) <= "Z") Then
            If Not FoundedLast Then
                FoundedLast = True
                LastLetter = i
            End If
        Else
            If FoundedLast Then
                FoundedFirst = True
                FirstLetter = i + 1
            End If
        End If
   i = i - 1
Loop

Proizv = Mid(S, FirstLetter, LastLetter - FirstLetter + 1)

End Function
[/vba]

Автор - abtextime
Дата добавления - 09.12.2015 в 13:43
anabioss13 Дата: Среда, 09.12.2015, 13:46 | Сообщение № 13
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 133
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Всем огромное спасибо!!!!! Вы мне очень помогли! Отличный форум, обращался раз 10 и всегда оперативно получал ответ. Мир всем)
 
Ответить
СообщениеВсем огромное спасибо!!!!! Вы мне очень помогли! Отличный форум, обращался раз 10 и всегда оперативно получал ответ. Мир всем)

Автор - anabioss13
Дата добавления - 09.12.2015 в 13:46
_Boroda_ Дата: Среда, 09.12.2015, 14:16 | Сообщение № 14
Группа: Админы
Ранг: Местный житель
Сообщений: 16912
Репутация: 6616 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Еще вариант формулы
Код
=ЕСЛИ(СОВПАД(ПРАВБ(B4;2);ПРОПИСН(ПРАВБ(B4;2)));СЖПРОБЕЛЫ(ПРАВБ(ПОДСТАВИТЬ(B4;" ";ПОВТОР(" ";999));999*(1+(ПРАВБ(B4)=")"))));"")
К сообщению приложен файл: 1224090_1.xlsx (13.7 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЕще вариант формулы
Код
=ЕСЛИ(СОВПАД(ПРАВБ(B4;2);ПРОПИСН(ПРАВБ(B4;2)));СЖПРОБЕЛЫ(ПРАВБ(ПОДСТАВИТЬ(B4;" ";ПОВТОР(" ";999));999*(1+(ПРАВБ(B4)=")"))));"")

Автор - _Boroda_
Дата добавления - 09.12.2015 в 14:16
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!