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

Вход

Регистрация

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

 

= Мир MS Excel/Какая формула может подставить цифру в слово по условию? - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Какая формула может подставить цифру в слово по условию?
drizgolovich Дата: Вторник, 11.07.2023, 11:26 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Необходимо подставить цифру в текст по следующему условию:

1. колонка с ячейками, содержащими текст, содержит значения с количеством цифр до точки от одной цифры, до двух цифр, и после точки от одной цифры до двух цифр;

2. необходимо добавить в содержание ячеек 0 в тех случаях, когда до или после точки содержится одна цифра (добавлять нужно при необходимости и до, и после точки);

3. 0 необходимо добавлять перед имеющейся в тексте цифрой до точки, и перед имеющейся цифрой после точки (если и там, и там по одной цифре).

Например:

значение 1А.12, нужно получить 01А.12
значение 9Б.2, нужно получить 09Б.02
значение 11Б.2А, нужно получить 11Б.02А


Сообщение отредактировал drizgolovich - Вторник, 11.07.2023, 11:35
 
Ответить
СообщениеНеобходимо подставить цифру в текст по следующему условию:

1. колонка с ячейками, содержащими текст, содержит значения с количеством цифр до точки от одной цифры, до двух цифр, и после точки от одной цифры до двух цифр;

2. необходимо добавить в содержание ячеек 0 в тех случаях, когда до или после точки содержится одна цифра (добавлять нужно при необходимости и до, и после точки);

3. 0 необходимо добавлять перед имеющейся в тексте цифрой до точки, и перед имеющейся цифрой после точки (если и там, и там по одной цифре).

Например:

значение 1А.12, нужно получить 01А.12
значение 9Б.2, нужно получить 09Б.02
значение 11Б.2А, нужно получить 11Б.02А

Автор - drizgolovich
Дата добавления - 11.07.2023 в 11:26
Serge_007 Дата: Вторник, 11.07.2023, 11:55 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Код
=ВЫБОР(НАЙТИ(".";A1)-2;0&ЛЕВБ(A1;ПОИСК(".";A1));ЛЕВБ(A1;ПОИСК(".";A1)))&ВЫБОР(ЕЧИСЛО(--ПСТР(A1;НАЙТИ(".";A1)+1;1))+ЕЧИСЛО(--ПСТР(A1;НАЙТИ(".";A1)+2;1));0&ПРАВБ(A1;ДЛСТР(A1)-НАЙТИ(".";A1));ПРАВБ(A1;ДЛСТР(A1)-НАЙТИ(".";A1)))


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Код
=ВЫБОР(НАЙТИ(".";A1)-2;0&ЛЕВБ(A1;ПОИСК(".";A1));ЛЕВБ(A1;ПОИСК(".";A1)))&ВЫБОР(ЕЧИСЛО(--ПСТР(A1;НАЙТИ(".";A1)+1;1))+ЕЧИСЛО(--ПСТР(A1;НАЙТИ(".";A1)+2;1));0&ПРАВБ(A1;ДЛСТР(A1)-НАЙТИ(".";A1));ПРАВБ(A1;ДЛСТР(A1)-НАЙТИ(".";A1)))

Автор - Serge_007
Дата добавления - 11.07.2023 в 11:55
Hugo Дата: Вторник, 11.07.2023, 11:55 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3690
Репутация: 790 ±
Замечаний: 0% ±

365
1. разбить по столбцам по точке.
2. в каждой половине добавить слева "000"
3. в каждой половине взять справа 3 или 2 (если число) символа.
4. соединить.

Можно всё это соорудить в одной сложной формуле, если уж так очень нужно.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD


Сообщение отредактировал Hugo - Вторник, 11.07.2023, 12:09
 
Ответить
Сообщение1. разбить по столбцам по точке.
2. в каждой половине добавить слева "000"
3. в каждой половине взять справа 3 или 2 (если число) символа.
4. соединить.

Можно всё это соорудить в одной сложной формуле, если уж так очень нужно.

Автор - Hugo
Дата добавления - 11.07.2023 в 11:55
jakim Дата: Вторник, 11.07.2023, 12:03 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1216
Репутация: 316 ±
Замечаний: 0% ±

Excel 2010
Формула

Код
=CONCATENATE(MID(A1;1;SEARCH(".";A1));0;MID(A1;SEARCH(".";A1)+1;222))
 
Ответить
Сообщение
Формула

Код
=CONCATENATE(MID(A1;1;SEARCH(".";A1));0;MID(A1;SEARCH(".";A1)+1;222))

Автор - jakim
Дата добавления - 11.07.2023 в 12:03
Serge_007 Дата: Вторник, 11.07.2023, 12:17 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
jakim, по вашей формуле из 1А.12 получается 1А.012, а должно быть 01А.12


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщениеjakim, по вашей формуле из 1А.12 получается 1А.012, а должно быть 01А.12

Автор - Serge_007
Дата добавления - 11.07.2023 в 12:17
Hugo Дата: Вторник, 11.07.2023, 12:22 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3690
Репутация: 790 ±
Замечаний: 0% ±

365
В новых версиях есть вроде какой-то SPLIT()


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеВ новых версиях есть вроде какой-то SPLIT()

Автор - Hugo
Дата добавления - 11.07.2023 в 12:22
Serge_007 Дата: Вторник, 11.07.2023, 12:37 | Сообщение № 7
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
SPLIT() - это в Гугл-таблицах, в Excel - TEXTSPLIT()

Цитата
Разделяет текстовые строки с помощью разделителей столбцов и строк.

Функция TEXTSPLIT работает так же, как мастер преобразования текста в столбцы, но в виде формулы. Она позволяет разбивать на столбцы или строки. Эта функция обратна функции ОБЪЕДИНИТЬ.


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеSPLIT() - это в Гугл-таблицах, в Excel - TEXTSPLIT()

Цитата
Разделяет текстовые строки с помощью разделителей столбцов и строк.

Функция TEXTSPLIT работает так же, как мастер преобразования текста в столбцы, но в виде формулы. Она позволяет разбивать на столбцы или строки. Эта функция обратна функции ОБЪЕДИНИТЬ.

Автор - Serge_007
Дата добавления - 11.07.2023 в 12:37
Gustav Дата: Вторник, 11.07.2023, 13:02 | Сообщение № 8
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
1. разбить по столбцам по точке.
2. в каждой половине добавить слева "000"
3. в каждой половине взять справа 3 или 2 (если число) символа.
4. соединить.
В новых версиях есть вроде какой-то SPLIT()
SPLIT() - это в Гугл-таблицах, в Excel - TEXTSPLIT()

Даю формулу в редакции Google, поскольку ее проще и быстрее проверить:
[vba]
Код
=JOIN(".";
    MAP(
        MAP(SPLIT(A1; ".");
            LAMBDA(c; RIGHT("000"&c;3))
        );
        LAMBDA(d; IF(ISNUMBER(--d);RIGHT(d;2);d))
    )
)
[/vba]
Да, и в Excel JOIN() будет также по аналогии - TEXTJOIN(). Эти расхождения между таблицами по SPLIT и JOIN - самые известные.

[p.s.]Покрасивше операции сгруппировал:[/p.s.]
[vba]
Код
=JOIN(".";
    MAP(
        MAP(SPLIT(A1; ".");
            LAMBDA(c; "000"&c)
        );
        LAMBDA(d; RIGHT(d; IF(ISNUMBER(--d);2;3)))
    )
)
[/vba]


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Вторник, 11.07.2023, 13:15
 
Ответить
Сообщение
1. разбить по столбцам по точке.
2. в каждой половине добавить слева "000"
3. в каждой половине взять справа 3 или 2 (если число) символа.
4. соединить.
В новых версиях есть вроде какой-то SPLIT()
SPLIT() - это в Гугл-таблицах, в Excel - TEXTSPLIT()

Даю формулу в редакции Google, поскольку ее проще и быстрее проверить:
[vba]
Код
=JOIN(".";
    MAP(
        MAP(SPLIT(A1; ".");
            LAMBDA(c; RIGHT("000"&c;3))
        );
        LAMBDA(d; IF(ISNUMBER(--d);RIGHT(d;2);d))
    )
)
[/vba]
Да, и в Excel JOIN() будет также по аналогии - TEXTJOIN(). Эти расхождения между таблицами по SPLIT и JOIN - самые известные.

[p.s.]Покрасивше операции сгруппировал:[/p.s.]
[vba]
Код
=JOIN(".";
    MAP(
        MAP(SPLIT(A1; ".");
            LAMBDA(c; "000"&c)
        );
        LAMBDA(d; RIGHT(d; IF(ISNUMBER(--d);2;3)))
    )
)
[/vba]

Автор - Gustav
Дата добавления - 11.07.2023 в 13:02
drizgolovich Дата: Вторник, 11.07.2023, 13:24 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

=ВЫБОР(НАЙТИ(".";A1)-2;0&ЛЕВБ(A1;ПОИСК(".";A1));ЛЕВБ(A1;ПОИСК(".";A1)))&ВЫБОР(ЕЧИСЛО(--ПСТР(A1;НАЙТИ(".";A1)+1;1))+ЕЧИСЛО(--ПСТР(A1;НАЙТИ(".";A1)+2;1));0&ПРАВБ(A1;ДЛСТР(A1)-НАЙТИ(".";A1));ПРАВБ(A1;ДЛСТР(A1)-НАЙТИ(".";A1)))


Формула работает!!!
 
Ответить
Сообщение
=ВЫБОР(НАЙТИ(".";A1)-2;0&ЛЕВБ(A1;ПОИСК(".";A1));ЛЕВБ(A1;ПОИСК(".";A1)))&ВЫБОР(ЕЧИСЛО(--ПСТР(A1;НАЙТИ(".";A1)+1;1))+ЕЧИСЛО(--ПСТР(A1;НАЙТИ(".";A1)+2;1));0&ПРАВБ(A1;ДЛСТР(A1)-НАЙТИ(".";A1));ПРАВБ(A1;ДЛСТР(A1)-НАЙТИ(".";A1)))


Формула работает!!!

Автор - drizgolovich
Дата добавления - 11.07.2023 в 13:24
drizgolovich Дата: Вторник, 11.07.2023, 13:35 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

=ВЫБОР(НАЙТИ(".";A1)-2;0&ЛЕВБ(A1;ПОИСК(".";A1));ЛЕВБ(A1;ПОИСК(".";A1)))&ВЫБОР(ЕЧИСЛО(--ПСТР(A1;НАЙТИ(".";A1)+1;1))+ЕЧИСЛО(--ПСТР(A1;НАЙТИ(".";A1)+2;1));0&ПРАВБ(A1;ДЛСТР(A1)-НАЙТИ(".";A1));ПРАВБ(A1;ДЛСТР(A1)-НАЙТИ(".";A1)))


Только есть пара моментов... В ячейках где, например значение 10.12, нужно получить без изменений 10.12, а получается 010.12. Но почему-то не во всех, в некоторых получилось, например, 11.41 без изменений...

А где стоит значение 1.1А - выдало ошибку
 
Ответить
Сообщение
=ВЫБОР(НАЙТИ(".";A1)-2;0&ЛЕВБ(A1;ПОИСК(".";A1));ЛЕВБ(A1;ПОИСК(".";A1)))&ВЫБОР(ЕЧИСЛО(--ПСТР(A1;НАЙТИ(".";A1)+1;1))+ЕЧИСЛО(--ПСТР(A1;НАЙТИ(".";A1)+2;1));0&ПРАВБ(A1;ДЛСТР(A1)-НАЙТИ(".";A1));ПРАВБ(A1;ДЛСТР(A1)-НАЙТИ(".";A1)))


Только есть пара моментов... В ячейках где, например значение 10.12, нужно получить без изменений 10.12, а получается 010.12. Но почему-то не во всех, в некоторых получилось, например, 11.41 без изменений...

А где стоит значение 1.1А - выдало ошибку

Автор - drizgolovich
Дата добавления - 11.07.2023 в 13:35
Nic70y Дата: Вторник, 11.07.2023, 13:37 | Сообщение № 11
Группа: Друзья
Ранг: Экселист
Сообщений: 9005
Репутация: 2369 ±
Замечаний: 0% ±

Excel 2010
Код
=ЕСЛИ(ЕЧИСЛО(--ЛЕВБ(A1;2));"";0)&ПОДСТАВИТЬ(A1;".";ЕСЛИ(ЕЧИСЛО(--ПСТР(A1&"ю";ПОИСК(".";A1)+1;2));".";".0"))


ЮMoney 41001841029809
 
Ответить
Сообщение
Код
=ЕСЛИ(ЕЧИСЛО(--ЛЕВБ(A1;2));"";0)&ПОДСТАВИТЬ(A1;".";ЕСЛИ(ЕЧИСЛО(--ПСТР(A1&"ю";ПОИСК(".";A1)+1;2));".";".0"))

Автор - Nic70y
Дата добавления - 11.07.2023 в 13:37
Serge_007 Дата: Вторник, 11.07.2023, 13:47 | Сообщение № 12
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
В ячейках где, например значение 10.12, нужно получить без изменений 10.12
В топике не было примера без букв до точки
Формулу писал под предоставленные примеры


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
В ячейках где, например значение 10.12, нужно получить без изменений 10.12
В топике не было примера без букв до точки
Формулу писал под предоставленные примеры

Автор - Serge_007
Дата добавления - 11.07.2023 в 13:47
drizgolovich Дата: Вторник, 11.07.2023, 14:12 | Сообщение № 13
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

=ЕСЛИ(ЕЧИСЛО(--ЛЕВБ(A1;2));"";0)&ПОДСТАВИТЬ(A1;".";ЕСЛИ(ЕЧИСЛО(--ПСТР(A1&"ю";ПОИСК(".";A1)+1;2));".";".0"))


Тоже один момент... Где только цифры вокруг точки, ноли не добавляет. Например было 1.12, стало 1.12
 
Ответить
Сообщение
=ЕСЛИ(ЕЧИСЛО(--ЛЕВБ(A1;2));"";0)&ПОДСТАВИТЬ(A1;".";ЕСЛИ(ЕЧИСЛО(--ПСТР(A1&"ю";ПОИСК(".";A1)+1;2));".";".0"))


Тоже один момент... Где только цифры вокруг точки, ноли не добавляет. Например было 1.12, стало 1.12

Автор - drizgolovich
Дата добавления - 11.07.2023 в 14:12
Hugo Дата: Вторник, 11.07.2023, 14:14 | Сообщение № 14
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3690
Репутация: 790 ±
Замечаний: 0% ±

365
Может UDF написать?
Хотя не по теме, но зато без указанных выше недостатков.
[vba]
Код
Function Hugo_udf(s$)
Dim a, s1$, s2$

a = Split(s, ".")

If IsNumeric(a(0)) Then
    s1 = Right("00" & a(0), 2)
        Else
    s1 = Right("000" & a(0), 3)
End If

If IsNumeric(a(1)) Then
    s2 = Right("00" & a(1), 2)
        Else
    s2 = Right("000" & a(1), 3)
End If

Hugo_udf = s1 & "." & s2
End Function
[/vba]


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD


Сообщение отредактировал Serge_007 - Вторник, 11.07.2023, 16:22
 
Ответить
СообщениеМожет UDF написать?
Хотя не по теме, но зато без указанных выше недостатков.
[vba]
Код
Function Hugo_udf(s$)
Dim a, s1$, s2$

a = Split(s, ".")

If IsNumeric(a(0)) Then
    s1 = Right("00" & a(0), 2)
        Else
    s1 = Right("000" & a(0), 3)
End If

If IsNumeric(a(1)) Then
    s2 = Right("00" & a(1), 2)
        Else
    s2 = Right("000" & a(1), 3)
End If

Hugo_udf = s1 & "." & s2
End Function
[/vba]

Автор - Hugo
Дата добавления - 11.07.2023 в 14:14
drizgolovich Дата: Вторник, 11.07.2023, 14:15 | Сообщение № 15
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

В топике не было примера без букв до точки
Формулу писал под предоставленные примеры


Жаль, много ячеек, где только цифры вокруг точки без букв...
 
Ответить
Сообщение
В топике не было примера без букв до точки
Формулу писал под предоставленные примеры


Жаль, много ячеек, где только цифры вокруг точки без букв...

Автор - drizgolovich
Дата добавления - 11.07.2023 в 14:15
drizgolovich Дата: Вторник, 11.07.2023, 14:17 | Сообщение № 16
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Может UDF написать?


А что это?
 
Ответить
Сообщение
Может UDF написать?


А что это?

Автор - drizgolovich
Дата добавления - 11.07.2023 в 14:17
Nic70y Дата: Вторник, 11.07.2023, 14:18 | Сообщение № 17
Группа: Друзья
Ранг: Экселист
Сообщений: 9005
Репутация: 2369 ±
Замечаний: 0% ±

Excel 2010
Тоже один момент...


возможно разделитель не тот...
Код
=ЕСЛИ(ЕЧИСЛО(--ЛЕВБ(ПОДСТАВИТЬ(A1;".";"ю");2));"";0)&ПОДСТАВИТЬ(A1;".";ЕСЛИ(ЕЧИСЛО(--ПСТР(A1&"ю";ПОИСК(".";A1)+1;2));".";".0"))

Жаль, много ячеек
нужно файл-пример прикладывать и доп.вопросов не будет
К сообщению приложен файл: 4208144.gif (17.0 Kb)


ЮMoney 41001841029809

Сообщение отредактировал Nic70y - Вторник, 11.07.2023, 14:19
 
Ответить
Сообщение
Тоже один момент...


возможно разделитель не тот...
Код
=ЕСЛИ(ЕЧИСЛО(--ЛЕВБ(ПОДСТАВИТЬ(A1;".";"ю");2));"";0)&ПОДСТАВИТЬ(A1;".";ЕСЛИ(ЕЧИСЛО(--ПСТР(A1&"ю";ПОИСК(".";A1)+1;2));".";".0"))

Жаль, много ячеек
нужно файл-пример прикладывать и доп.вопросов не будет

Автор - Nic70y
Дата добавления - 11.07.2023 в 14:18
Hugo Дата: Вторник, 11.07.2023, 14:25 | Сообщение № 18
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3690
Репутация: 790 ±
Замечаний: 0% ±

365
А что это?

выше приложил код


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
Сообщение
А что это?

выше приложил код

Автор - Hugo
Дата добавления - 11.07.2023 в 14:25
Gustav Дата: Вторник, 11.07.2023, 16:03 | Сообщение № 19
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
А что это?

UDF - User Defined Function - Функция, определенная пользователем. Пишется на языке программирования VBA (Visual Basic for Applications) в специальном редакторе, вызываемом из Excel по Alt+F11. В ячейке на рабочем листе используется как обычная функция Excel - при вводе нужно указать её имя (в данном случае udf - см. выше в сообщении № 14 от Hugo) и в скобках аргументы (если есть):
Код
=udf(A1)


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
А что это?

UDF - User Defined Function - Функция, определенная пользователем. Пишется на языке программирования VBA (Visual Basic for Applications) в специальном редакторе, вызываемом из Excel по Alt+F11. В ячейке на рабочем листе используется как обычная функция Excel - при вводе нужно указать её имя (в данном случае udf - см. выше в сообщении № 14 от Hugo) и в скобках аргументы (если есть):
Код
=udf(A1)

Автор - Gustav
Дата добавления - 11.07.2023 в 16:03
Hugo Дата: Вторник, 11.07.2023, 16:20 | Сообщение № 20
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3690
Репутация: 790 ±
Замечаний: 0% ±

365
С названием я конечно накосячил - может ввести в заблуждение... Название можно дать любое на свой вкус (одним словом и в разумных пределах )) ), я поленился придумывать.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеС названием я конечно накосячил - может ввести в заблуждение... Название можно дать любое на свой вкус (одним словом и в разумных пределах )) ), я поленился придумывать.

Автор - Hugo
Дата добавления - 11.07.2023 в 16:20
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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