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]. Есть ли возможность этого избежать?
Форумчане, доброго дня! Вопрос в следующем, сделал небольшой макрос, суть которого дополнять формулу условием, копировать в другую ячейку полученный результат как значение, а затем убирать обратно это условие из расчета. Выглядит он так: [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
Никогда не поздно научиться!
Ответить
Сообщение Форумчане, доброго дня! Вопрос в следующем, сделал небольшой макрос, суть которого дополнять формулу условием, копировать в другую ячейку полученный результат как значение, а затем убирать обратно это условие из расчета. Выглядит он так: [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
Никогда не поздно научиться!
Ответить
Сообщение Или может быть если есть возможность прописать условие чтобы макрос удалял последние # число символов, только не знаю как Автор - Anton1013 Дата добавления - 29.06.2017 в 09:59
_Boroda_
Дата: Четверг, 29.06.2017, 10:30 |
Сообщение № 3
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация:
6479
±
Замечаний:
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]
А вот так Вам не подойдет? [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_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: 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
Спасибо работает!
Никогда не поздно научиться!
Ответить
Сообщение Спасибо работает! Автор - Anton1013 Дата добавления - 29.06.2017 в 11:58