Массовая замена формул - VBA
Формулировка задачи:
есть столбец с формулами, нужно заменить все значения в столбце с "формула" на "формула"*"определённая ячейка" ячейка стационарная.
Решение задачи: «Массовая замена формул»
textual
Листинг программы
Sub FormulaAddV2()
Dim c As Range, rngC As Range, rngF As Range
Dim s As String
'Ïðîâåðÿåì, Г·ГІГ® âûäåëåГ* èìåГ*Г*Г® äèГ*ГЇГ*Г§Г®Г* ГїГ·ГҐГҐГЄ
'(Г* Г*ГҐ ãåîìåòðè÷åñêГ*Гї ГґГЁГЈГіГ°Г* èëè äèГ*ГЈГ°Г*ììГ*).
If TypeName(Selection) <> "Range" Then
MsgBox "Âûäåëèòå äèГ*ГЇГ*Г§Г®Г* ГїГ·ГҐГҐГЄ."
Exit Sub
End If
'Ïîëó÷Г*ГҐГ¬ ïîääèГ*ГЇГ*Г§Г®Г*Г», Гў êîòîðûõ ГҐГ±ГІГј ГЄГ®Г*Г±ГІГ*Г*ГІГ*ûå Г§Г*Г*Г·ГҐГ*ГЁГї ëèáî
'ôîðìóëû, ГЁ êîòîðûå ñîäåðæГ*ГІ òîëüêî ÷èñëîâûå Г§Г*Г*Г·ГҐГ*ГЁГї (ГІГ*ГЄ ГЄГ*ГЄ
'ГіГ¬Г*îæГ*ГІГј, Г±ГЄГ*æåì, ñòðîêó "Qwe" Г*Г* ÷èñëî 5 - áåññìûñëåГ*Г®).
On Error Resume Next
Set rngC = Selection.SpecialCells(xlConstants, xlNumbers)
Set rngF = Selection.SpecialCells(xlFormulas, xlNumbers)
On Error GoTo 0
'ГЋГЎГ°Г*ГЎГ*òûâГ*ГҐГ¬ ÿ÷åéêè Г± ГЄГ®Г*Г±ГІГ*Г*ГІГ*ûìè Г§Г*Г*Г·ГҐГ*ÿìè.
If Not rngC Is Nothing Then
For Each c In rngC
c.Formula = "=" & c.Value & "*$N$1"
Next c
End If
'ГЋГЎГ°Г*ГЎГ*òûâГ*ГҐГ¬ ÿ÷åéêè Г± ôîðìóëГ*ìè.
If Not rngF Is Nothing Then
For Each c In rngF
'Г‡Г*Г*îñèì Гў ïåðåìåГ*Г*ГіГѕ s ôîðìóëó ÿ÷åéêè.
s = c.Formula
'Ïîëó÷Г*ГҐГ¬ ôîðìóëó ГЎГҐГ§ Г§Г*Г*ГЄГ* Г°Г*ГўГҐГ*Г±ГІГўГ*.
s = Right(s, Len(s) - 1)
'Г‡Г*êëþ÷Г*ГҐГ¬ ôîðìóëó Гў ñêîáêè (ïîòîìó Г·ГІГ®
'3+4*5 Г*ГҐ ГҐГ±ГІГј ГІГ® æå Г±Г*ìîå, Г·ГІГ® (3+4)*5).
s = "(" & s & ")"
'Г‡Г*Г*îñèì Гў ÿ÷åéêó Г*îâóþ ôîðìóëó.
c.Formula = "=" & s & "*$N$1"
Next c
End If
End Sub