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

Вход

Регистрация

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

 

= Мир MS Excel/Добавить и удалить "хвост" в формуле - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Добавить и удалить "хвост" в формуле (Макросы/Sub)
Добавить и удалить "хвост" в формуле
Anton1013 Дата: Четверг, 29.06.2017, 09:52 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 203
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Форумчане, доброго дня!
Вопрос в следующем, сделал небольшой макрос, суть которого дополнять формулу условием, копировать в другую ячейку полученный результат как значение, а затем убирать обратно это условие из расчета.
Выглядит он так:
[vba]
Код
Sub Добавить_условие()
'
' Добавить_условие Макрос
'

'
    Range("E16").Select
    ActiveCell.FormulaR1C1 = "=(R18C5+R18C6>0)"
    Range("E16").Select
    Selection.Copy
    Range("C10").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlAdd, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    Selection.Copy
    Range("C6").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("C10").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=((RC[2]+RC[3]))"
    Range("E16").Select
    Selection.ClearContents
End Sub
[/vba]

Суть в том что в конце всех вычислений удаление "хвоста" приводит к тому что в ячейке сохраняется формула [vba]
Код
ActiveCell.FormulaR1C1 = "=((RC[2]+RC[3]))"
[/vba], а в случае если в данной ячейке формула изменится, он вернет эту, а мне нужна например [vba]
Код
ActiveCell.FormulaR1C1 = "=((RC[4]+RC[5]))"
[/vba]. Есть ли возможность этого избежать?
К сообщению приложен файл: 7803987.xlsm(15Kb)


Никогда не поздно научиться!
 
Ответить
СообщениеФорумчане, доброго дня!
Вопрос в следующем, сделал небольшой макрос, суть которого дополнять формулу условием, копировать в другую ячейку полученный результат как значение, а затем убирать обратно это условие из расчета.
Выглядит он так:
[vba]
Код
Sub Добавить_условие()
'
' Добавить_условие Макрос
'

'
    Range("E16").Select
    ActiveCell.FormulaR1C1 = "=(R18C5+R18C6>0)"
    Range("E16").Select
    Selection.Copy
    Range("C10").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlAdd, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    Selection.Copy
    Range("C6").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("C10").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=((RC[2]+RC[3]))"
    Range("E16").Select
    Selection.ClearContents
End Sub
[/vba]

Суть в том что в конце всех вычислений удаление "хвоста" приводит к тому что в ячейке сохраняется формула [vba]
Код
ActiveCell.FormulaR1C1 = "=((RC[2]+RC[3]))"
[/vba], а в случае если в данной ячейке формула изменится, он вернет эту, а мне нужна например [vba]
Код
ActiveCell.FormulaR1C1 = "=((RC[4]+RC[5]))"
[/vba]. Есть ли возможность этого избежать?

Автор - Anton1013
Дата добавления - 29.06.2017 в 09:52
Anton1013 Дата: Четверг, 29.06.2017, 09:59 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 203
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Или может быть если есть возможность прописать условие чтобы макрос удалял последние # число символов, только не знаю как :(


Никогда не поздно научиться!
 
Ответить
СообщениеИли может быть если есть возможность прописать условие чтобы макрос удалял последние # число символов, только не знаю как :(

Автор - Anton1013
Дата добавления - 29.06.2017 в 09:59
_Boroda_ Дата: Четверг, 29.06.2017, 10:30 | Сообщение № 3
Группа: Модераторы
Ранг: Местный житель
Сообщений: 11269
Репутация: 4656 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
А вот так Вам не подойдет?
[vba]
Код
Sub Добавить_условие()
    Cells(6, 3) = Cells(10, 3) - (Cells(18, 5) + Cells(18, 6) > 0)
End Sub
[/vba]Почему минус скобка? Потому, что в VBA ИСТИНА (True) - это не +1, а -1

Или, если очень хочется с формулами, то
[vba]
Код
Sub Добавить_условие1()
    f_ = Range("C10").FormulaR1C1
    Range("C10").FormulaR1C1 = f_ & "+(R18C5+R18C6>0)"
    Range("C6") = Range("C10").Value
    Range("C10").FormulaR1C1 = f_
End Sub
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеА вот так Вам не подойдет?
[vba]
Код
Sub Добавить_условие()
    Cells(6, 3) = Cells(10, 3) - (Cells(18, 5) + Cells(18, 6) > 0)
End Sub
[/vba]Почему минус скобка? Потому, что в VBA ИСТИНА (True) - это не +1, а -1

Или, если очень хочется с формулами, то
[vba]
Код
Sub Добавить_условие1()
    f_ = Range("C10").FormulaR1C1
    Range("C10").FormulaR1C1 = f_ & "+(R18C5+R18C6>0)"
    Range("C6") = Range("C10").Value
    Range("C10").FormulaR1C1 = f_
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 29.06.2017 в 10:30
Anton1013 Дата: Четверг, 29.06.2017, 11:58 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 203
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Спасибо работает! hands


Никогда не поздно научиться!
 
Ответить
СообщениеСпасибо работает! hands

Автор - Anton1013
Дата добавления - 29.06.2017 в 11:58
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Добавить и удалить "хвост" в формуле (Макросы/Sub)
Страница 1 из 11
Поиск:

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