Страницы: 1 2 След.
RSS
Как изменить текст в ячейке изменяя значение в другой?
 
Требуется макрос который бы изменял бы значение в ячейке - текст, вставляя туда вместо одного числа другое выбираемое в списке другой ячейки.
 
А формулой не хотите?
 
Только, наверное, без ссылки:  
=ЗАМЕНИТЬ("КМР 101 С 10 20 НЗ У";14;2;D1)  
=ПОДСТАВИТЬ("КМР 101 С 10 20 НЗ У";20;D1)
 
Или так:  
="КМР 101 С 10 "&D1&" НЗ У"  
Можете вообще хоть все слова по одному сцепить:  
=СЦЕПИТЬ("КМР";" ";"101";" С ";"10";D1;"НЗ У")
 
Я намеренно не приводил пример со СЦЕПИТЬ - медленная. А сейчас подумалось, что и ПОДСТАВИТЬ, и ЗАМЕНИТЬ - те же текстовые функции, и какая из них быстрее/медленнее - не проверял.
 
Не думаю, что в файле на скорость повлияет "Сцепить".    
Там же не 65 тыс ячеек будут обрабатываться.
 
Так и я об этом же :)
 
если я формулу запишу в ячейку то это будет формула а там должен быть текст.  
И должна быть связь в оба направления - меняю текст в А1 меняется ячейка корректор д1 и наоборот...  
меняю ячейку- корректор - меняется текст в ячейке А1.  
а в варианте с формулой ячейку а1 нельзя редактировать
 
Задание: Если вы введете в ячейку число, то изменится текст в ячейке.    
Разбор полета:  
1) Как Excel узнает какую часть строки изменить, когда вы еще раз введете другой номер?    
Например: было "ТРУ ЛЯ ЛЯ 40 ЛА-ЛА-ЛА".    
Ввели 100 - стало "ТРУ ЛЯ ЛЯ 100 ЛА-ЛА-ЛА".  
Потом ввели 20, должно стать "ТРУ ЛЯ ЛЯ 20 ЛА-ЛА-ЛА"!!!  
Но как Excel должен понять, что нужно изменить именно 100 на 20, а например не 10. Макросом вы это не сделаете, только можно формулой.    
 
Поиск и замена работают не только с текстом, но и с формулой.  
 
2. Как вариант решения можно сделать два поля: одно содержит "что менять", второе "на что менять".    
 
И тогда уже прицеплять макрос, а так только функцией.
 
Макросом можно, цепляясь за пробелы. Но так ли необходимо?  
Вариант McCinly не подходит?
 
McCinly, Вы полагаете, что макросом невозможно изменить часть строки?
 
Конечно можно!!!    
Но какую часть строки менять?    
Два символа или три? Или анализировать пробелы? А если вставили текст с пробелом?    
 
Да и если шагать по всему заданию (включая комментарии в файле), то нужно сделать проверку на ввод текста в А1 тогда изменяется D1, а если меняется D1 тогда меняется А1. Но вопрос опять же про выбор части строки, какую нужно менять. Ведь автор писал раньше в файле, он и "КМР" хочет менять. А вдруг заменит на "КМРД 2 ", тогда уже не позиция, ни пробелы не подойдут. И поиском с конца строки будете менять?
 
{quote}{login=The_Prist}{date=15.02.2010 03:06}{thema=Re: }{post}{quote}Но в обоих случаях, как справедливо было замечено - необходимо знать по каким критериям узнавать заменяемое число и число его заменяющее.{/post}{/quote}  
 
Именно это имелось ввиду.
 
тип того?
 
Хорошая иллюстрация ))) Два знака меняет, ставишь 100, потом 50 ,будет уже 500.
 
Если отталкиваться от конкретного примера, то там чётко всё обозначено: разделитель пробелы. Если про заменяемое число, то оно всегда занимает пятую позицию в строке. Может я не так задание понял?
 
Вот простенький пример.
 
поправил, работает с текстом между 4 и 5 пробелом
 
{quote}{login=Юрий М}{date=15.02.2010 03:24}{thema=}{post}Вот простенький пример.{/post}{/quote}  
 
прикольная функция)  
 
вот применительно к данному примеру
 
Чтобы не писать длинную строку, можно циклом:  
Private Sub Worksheet_Change(ByVal Target As Range)  
   If Target.Cells.Count > 1 Then Exit Sub  
   If Not Intersect(Target, Range("C1")) Is Nothing Then  
   Application.EnableEvents = False  
       x = Split(Cells(1, 1))  
       Cells(1, 1) = ""  
       For i = 0 To 6  
       If i = 4 Then x(i) = Target  
           Cells(1, 1) = Cells(1, 1) & x(i) & " "  
       Next  
       'Cells(1, 1) = x(0) & " " & x(1) & " " & x(2) & " " & x(3) & " " & Target & " " & x(5) & " " & x(6)  
   End If  
   Application.EnableEvents = True  
End Sub
 
Да я тоже для поиска 5 слова в шифре использую функцию SubString(a1;" ";5)  
предварительно использую еще одну ячейку для сжатия лишних пробелов.  
Вариант Dophin очень интересен.    
Буду тестировать.  
Спасибо
 
а не проще использовать ="блабла"&A1&"ла ла ла" и брать значение из A1
 
Только добавьте в макрос, если меняете текст в А1, пусть в D1 заносится число.    
А если такого числа в списке нет, то выдается сообщение об ошибке диаметра клапана.  
 
24442
 
Dophin, перемудрили мы - ведь можно обойтись без склейки:  
x = Split(Cells(1, 1))  
Cells(1, 1) = Replace(Cells(1, 1), x(4), Target)
 
McCinly Вы были почти правы 4 слово в шифре означает диаметр.  
А 5 слово - пропускную способность.  
Связь одного с другим задается в таблице 1.  
Поэтому при написании в шифре "КМР 101 С 50" в ячейке д1 должен быть список значений соответствующий столбцу таблице 1 для диаметра 50 (см. пример)  
При введении числа отличающегося от списка возможных значений нужно сигнализировать об этом например условным форматированием - цвет текста красный
 
недопонял что надо) но думаю пока так
 
911old, я вот чего не пойму - всё это делается для чего? Чтобы набрав текст "КМР 101 С 10 50 НЗ" затем в другой ячейке выбрать некое число, которое заменит часть строки? И для этого создаются дополнительные таблицы, именованные диапазоны, пишутся макросы... А просто, находясь в этой ячейке, нажать F2 и поменять 50 на 20? Или задача более глабальная?
 
Юрий М, просто так поменять можно но на какое число... его надо брать из таблицы. На один диаметр может быть аж 11 значений поэтому легче прописать список.  
Dophin, я попытался сделать но у меня коряво но смысл понять можно.  
меняю диаметр меняется список доступных значений....  
Всем спасибо кто откликнулся...
 
Я бы сделал список "Типов" всех клапанов и сгруппировал их по диаметрам, напорам и т.д. И характеристики а отдельных полях для отбора. Тогда точно не поставишь такого крана, какого нет. И вводить не надо.
 
вот пожалуйста.  
 
Теперь будем менять уже диаметр? ))
Страницы: 1 2 След.
Читают тему
Loading...