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

Вход

Регистрация

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

 

= Мир MS Excel/Замена слов констант на значения и тело формулы из ячеек - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Замена слов констант на значения и тело формулы из ячеек
timo64uk Дата: Пятница, 11.10.2024, 05:34 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 94
Репутация: 1 ±
Замечаний: 0% ±

Office16
И снова доброго дня!
Я не знаю даже как из ячейки подтянуть значение в объединенную ячейку и заменить часть текста, а здесь прошу помощи в немного большем:
На листе "Было" в стационарных (фиксированных) ячейках B3 и C5 находятся постоянно меняющиеся значения.
В C5 это всегда формулы со знаками "=" и "*".
В объединенной ячейке A7 находится постоянный текст, где нужно заменить слова:
ЗАМЕНИТЕизB3 на на значение целиком из ячейки "B3" листа "Было" как текст;
ЗАМЕНИТЕизC5 на значение из ячейки "C5" листа "Было" как текст, но заключённый между "=" и "*" (вытянутый из формулы);
ЗАМЕНИТЕизC5значение на значение целиком из ячейки "C5" листа "Было" как текст, отображающийся в ячейке;
ЗАМЕНИТЕизC5формулу на значение целиком из ячейки "C5" листа "Было" как текст, отображающийся в ячейке после двойного клика, без знака "=".
Если можно решить данную задачу макросом, было бы отлично
К сообщению приложен файл: 9797.xlsx (11.0 Kb)
 
Ответить
СообщениеИ снова доброго дня!
Я не знаю даже как из ячейки подтянуть значение в объединенную ячейку и заменить часть текста, а здесь прошу помощи в немного большем:
На листе "Было" в стационарных (фиксированных) ячейках B3 и C5 находятся постоянно меняющиеся значения.
В C5 это всегда формулы со знаками "=" и "*".
В объединенной ячейке A7 находится постоянный текст, где нужно заменить слова:
ЗАМЕНИТЕизB3 на на значение целиком из ячейки "B3" листа "Было" как текст;
ЗАМЕНИТЕизC5 на значение из ячейки "C5" листа "Было" как текст, но заключённый между "=" и "*" (вытянутый из формулы);
ЗАМЕНИТЕизC5значение на значение целиком из ячейки "C5" листа "Было" как текст, отображающийся в ячейке;
ЗАМЕНИТЕизC5формулу на значение целиком из ячейки "C5" листа "Было" как текст, отображающийся в ячейке после двойного клика, без знака "=".
Если можно решить данную задачу макросом, было бы отлично

Автор - timo64uk
Дата добавления - 11.10.2024 в 05:34
timo64uk Дата: Пятница, 11.10.2024, 08:04 | Сообщение № 2
Группа: Пользователи
Ранг: Участник
Сообщений: 94
Репутация: 1 ±
Замечаний: 0% ±

Office16
[vba]
Код
Range("A7").Replace "ЗНАЧЕНИЕизA18", Range("B3").Text, xlPart
[/vba]
Для первого "ЗАМЕНИТЕизB3 на на значение целиком из ячейки "B3" листа "Было" как текст;" нашёл решение.
 
Ответить
Сообщение[vba]
Код
Range("A7").Replace "ЗНАЧЕНИЕизA18", Range("B3").Text, xlPart
[/vba]
Для первого "ЗАМЕНИТЕизB3 на на значение целиком из ячейки "B3" листа "Было" как текст;" нашёл решение.

Автор - timo64uk
Дата добавления - 11.10.2024 в 08:04
_Boroda_ Дата: Пятница, 11.10.2024, 10:11 | Сообщение № 3
Группа: Админы
Ранг: Местный житель
Сообщений: 16714
Репутация: 6503 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Так нужно?
[vba]
Код
Sub tt()
    t_ = Range("A7").Value
    t01_ = " ЗАМЕНИТЕизB3 "
    t02_ = " ЗАМЕНИТЕизC5 "
    t03_ = " ЗАМЕНИТЕизC5значение "
    t04_ = " ЗАМЕНИТЕизC5формулу "
    t11_ = " " & Range("B3").Value & " "
    t13_ = " " & Range("C5").Value & " "
    t14_ = " " & Mid(Range("c5").Formula, 2) & " "
    t12_ = " " & Split(t14_, "*")(0) & " "
    t_ = Replace(t_, t01_, t11_)
    t_ = Replace(t_, t02_, t12_)
    t_ = Replace(t_, t03_, t13_)
    t_ = Replace(t_, t04_, t14_)
    Range("A15").Value = t_
End Sub
[/vba]
Обратите внимание на случай полного вхождения одного искомого текста в другой. Например, t2 входит в t3 и t4. Здесь я обошелся пробелами по краям, но они могут и не помочь. Поэтому старайтесь делать так, чтобы в Реплейсах сначала менять самый длинный текст, потом по убывающей


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТак нужно?
[vba]
Код
Sub tt()
    t_ = Range("A7").Value
    t01_ = " ЗАМЕНИТЕизB3 "
    t02_ = " ЗАМЕНИТЕизC5 "
    t03_ = " ЗАМЕНИТЕизC5значение "
    t04_ = " ЗАМЕНИТЕизC5формулу "
    t11_ = " " & Range("B3").Value & " "
    t13_ = " " & Range("C5").Value & " "
    t14_ = " " & Mid(Range("c5").Formula, 2) & " "
    t12_ = " " & Split(t14_, "*")(0) & " "
    t_ = Replace(t_, t01_, t11_)
    t_ = Replace(t_, t02_, t12_)
    t_ = Replace(t_, t03_, t13_)
    t_ = Replace(t_, t04_, t14_)
    Range("A15").Value = t_
End Sub
[/vba]
Обратите внимание на случай полного вхождения одного искомого текста в другой. Например, t2 входит в t3 и t4. Здесь я обошелся пробелами по краям, но они могут и не помочь. Поэтому старайтесь делать так, чтобы в Реплейсах сначала менять самый длинный текст, потом по убывающей

Автор - _Boroda_
Дата добавления - 11.10.2024 в 10:11
timo64uk Дата: Пятница, 11.10.2024, 10:19 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 94
Репутация: 1 ±
Замечаний: 0% ±

Office16
Так

Вот чувствуется рука мастера. Все чётко стало как нужно. Благодарю Вас.
 
Ответить
Сообщение
Так

Вот чувствуется рука мастера. Все чётко стало как нужно. Благодарю Вас.

Автор - timo64uk
Дата добавления - 11.10.2024 в 10:19
timo64uk Дата: Пятница, 11.10.2024, 11:38 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 94
Репутация: 1 ±
Замечаний: 0% ±

Office16
пробелами

Заменил исходные слова, чтобы без одинаковых частей были (не предусмотрел я этого). Спасибо.
Подскажите, пожалуйста что добавить в

[vba]
Код
t14_ = " " & Mid(Range("c5").Formula, 2) & " "
t12_ = " " & Split(t14_, "*")(0) & " "
[/vba]

,т.е. ЗАМЕНИТЕизC5формулу и ЗАМЕНИТЕизC5, чтобы вставлялись как десятичные числа через ззапятую (сейчас подставились через точку). Типа вместо 11.79*77 сделать 11,79*77.


Сообщение отредактировал timo64uk - Пятница, 11.10.2024, 11:40
 
Ответить
Сообщение
пробелами

Заменил исходные слова, чтобы без одинаковых частей были (не предусмотрел я этого). Спасибо.
Подскажите, пожалуйста что добавить в

[vba]
Код
t14_ = " " & Mid(Range("c5").Formula, 2) & " "
t12_ = " " & Split(t14_, "*")(0) & " "
[/vba]

,т.е. ЗАМЕНИТЕизC5формулу и ЗАМЕНИТЕизC5, чтобы вставлялись как десятичные числа через ззапятую (сейчас подставились через точку). Типа вместо 11.79*77 сделать 11,79*77.

Автор - timo64uk
Дата добавления - 11.10.2024 в 11:38
_Boroda_ Дата: Пятница, 11.10.2024, 12:01 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 16714
Репутация: 6503 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
В VBA точка - как раз и есть разделитель. Замените t4 Реплейсом
[vba]
Код
t14_ = " " & Replace(Mid(Range("c5").Formula, 2), ".", ",") & " "
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВ VBA точка - как раз и есть разделитель. Замените t4 Реплейсом
[vba]
Код
t14_ = " " & Replace(Mid(Range("c5").Formula, 2), ".", ",") & " "
[/vba]

Автор - _Boroda_
Дата добавления - 11.10.2024 в 12:01
timo64uk Дата: Среда, 23.10.2024, 10:52 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 94
Репутация: 1 ±
Замечаний: 0% ±

Office16
Сообщение удалил, т.к. отдельную тему создал.


Сообщение отредактировал timo64uk - Среда, 23.10.2024, 11:46
 
Ответить
СообщениеСообщение удалил, т.к. отдельную тему создал.

Автор - timo64uk
Дата добавления - 23.10.2024 в 10:52
  • Страница 1 из 1
  • 1
Поиск:

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