Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2010, 12:23   #1
mixaxa
 
Регистрация: 14.05.2010
Сообщений: 9
По умолчанию Поиск и замена части формулы в ячейках

Здравствуйте, мне нужна ваша помощь, на форуме такой темы не нашел к сожалению, но если я проморгал - прошу направить. Как можно средствами vba изменить формулу в ячейке? Нужно сделать поиск по всем ячейкам, в них формулы вот такие ='W0920'!D25. Хочу заменить W0920 на W0919. Реализовал поиск по ячейкам но он видит только значения, а не саму формулу. Заранее благодарен.
mixaxa вне форума Ответить с цитированием
Старый 02.06.2010, 12:42   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Можно так:
Код:
Sub Main()
    Dim x As Range: Application.ScreenUpdating = False
    For Each x In ActiveSheet.UsedRange.SpecialCells(xlCellTypeFormulas)
        x.Replace "W0920", "W0919"
    Next
End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 02.06.2010, 12:46   #3
alebed
Пользователь
 
Аватар для alebed
 
Регистрация: 26.05.2010
Сообщений: 77
По умолчанию

Могу предложить такой вариант
"Переганяем" формулы в текст
Прим: Ячейки колонки B должны быть в текстовом формате, в колонке А формулы
к примеру так:
For i = 1 To 3
Range("B" & Trim(Str(i))).Value = Range("A" & Trim(Str(i))).Formula
Next i
Потом меняем в ячейках колонки В текст в формулах на какой надо
Возвращаем результаты в А
For t = 1 To 3
Range("A" & Trim(Str(i))).Formula = Range("В" & Trim(Str(i))).Value
Next t
Спасибо и Пасибы принимаются на WebMoney в американских Z143254902288 или русских R388611339241 монетах
alebed вне форума Ответить с цитированием
Старый 02.06.2010, 12:51   #4
EugeneS
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 472
По умолчанию

в ячейке А4 формула: =СУММ(A1:A3)

Код:
Sub ChangeFormula()
If [a4].HasFormula Then [a4] = Replace([a4].Formula, "A3", "A2")
End Sub
Результат: в ячейке А4 формула: =СУММ(A1:A2)
EugeneS вне форума Ответить с цитированием
Старый 02.06.2010, 12:59   #5
mixaxa
 
Регистрация: 14.05.2010
Сообщений: 9
По умолчанию

Работает!=) Спасибо Вам! Получился вот такой вот код:

Set sh = GetObject("D:\Weekly platform review.xls")
Dim c As Range
For Each c In sh.Worksheets("W10" & Mid(weak, 2, 2)).Range("A1:AF86").SpecialCells(x lCellTypeFormulas)
c.Replace What:="W0919", Replacement:="W09" & CStr(iweak),LookAt:=xlPart
Next
Application.ScreenUpdating = True
End Sub

Последний раз редактировалось mixaxa; 02.06.2010 в 13:15.
mixaxa вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замена части значения ячейки maksim_serg Microsoft Office Excel 4 26.03.2010 12:21
Замена шрифта части ячейки bukarenko Microsoft Office Excel 2 25.03.2010 18:43
Замена части формулы по значению ячейки klip Microsoft Office Excel 3 05.03.2010 14:45
Замена части кода при отключённом JavaScript в браузере DJ Triton PHP 7 18.08.2009 19:47
поиск слова по его части Рустам Помощь студентам 3 10.03.2009 20:54