Замена выражения в формуле
eenk
Дата: Понедельник, 13.03.2017, 15:24 |
Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
Добрый день. Прошу помощи, никак не получается решить такую задачу: В формулах, при удалении строк, естественно, появляются ошибки вида: =СРЗНАЧ(L64/$D64;L66/$D66;L68/$D68;L70/$D70;L72/$D72;L74/$D74;L76/$D76;L78/$D78;#ССЫЛКА!/#ССЫЛКА! ;L80/$D80) Таких формул множество, по всей строке. средствами Excel можно заменить выражение [;#ССЫЛКА!/#ССЫЛКА!] на [""] и все нормально. Как сделать это при помощи макроса? Сначала записал действие, получилось так: [vba]Код
Selection.Replace What:=";#ССЫЛКА!/#ССЫЛКА!", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
[/vba] Макрос выполняется без вопросов, но ничего не заменяет . Попытался использовать аналогичную команду с перебором ячеек [vba]Код
With Application For Each cell In Selection cell.FormulaR1C1 = Replace(cell.FormulaR1C1, ",#REF!/#REF!", "") Next cell End With
[/vba] (надо заменить ССЫЛКА на REF, ибо так видит VBA формулу) Но данным путем неудобно, потому что 1. Долго; 2. приходится выделять диапазон, тогда как при замене можно выделить просто строку, в противном случае цикл затянется на очень много времени попытался, даже, построить совсем корявую конструкцию: [vba]Код
Dim ff As Range Set ff = Range(Cells(Selection.Row, Selection.Column), Cells(Selection.Row + Selection.Rows.Count - 1, Selection.Columns.Count - 1 + Selection.Column)) ff.Replace What:=";#ССЫЛКА!/#ССЫЛКА!", Replacement:="", LookAt:= xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False a = ff.Replace(";#ССЫЛКА!/#ССЫЛКА!", "", xlPart, xlByRows, False, False, False) ff.Replace What:=";#REF!/#REF!", Replacement:="", LookAt:= xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False a = ff.Replace(";#REF!/#REF!", "", xlPart, xlByRows, False, False, False)
[/vba] все равно - ничего не заменяется!
Добрый день. Прошу помощи, никак не получается решить такую задачу: В формулах, при удалении строк, естественно, появляются ошибки вида: =СРЗНАЧ(L64/$D64;L66/$D66;L68/$D68;L70/$D70;L72/$D72;L74/$D74;L76/$D76;L78/$D78;#ССЫЛКА!/#ССЫЛКА! ;L80/$D80) Таких формул множество, по всей строке. средствами Excel можно заменить выражение [;#ССЫЛКА!/#ССЫЛКА!] на [""] и все нормально. Как сделать это при помощи макроса? Сначала записал действие, получилось так: [vba]Код
Selection.Replace What:=";#ССЫЛКА!/#ССЫЛКА!", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
[/vba] Макрос выполняется без вопросов, но ничего не заменяет . Попытался использовать аналогичную команду с перебором ячеек [vba]Код
With Application For Each cell In Selection cell.FormulaR1C1 = Replace(cell.FormulaR1C1, ",#REF!/#REF!", "") Next cell End With
[/vba] (надо заменить ССЫЛКА на REF, ибо так видит VBA формулу) Но данным путем неудобно, потому что 1. Долго; 2. приходится выделять диапазон, тогда как при замене можно выделить просто строку, в противном случае цикл затянется на очень много времени попытался, даже, построить совсем корявую конструкцию: [vba]Код
Dim ff As Range Set ff = Range(Cells(Selection.Row, Selection.Column), Cells(Selection.Row + Selection.Rows.Count - 1, Selection.Columns.Count - 1 + Selection.Column)) ff.Replace What:=";#ССЫЛКА!/#ССЫЛКА!", Replacement:="", LookAt:= xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False a = ff.Replace(";#ССЫЛКА!/#ССЫЛКА!", "", xlPart, xlByRows, False, False, False) ff.Replace What:=";#REF!/#REF!", Replacement:="", LookAt:= xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False a = ff.Replace(";#REF!/#REF!", "", xlPart, xlByRows, False, False, False)
[/vba] все равно - ничего не заменяется! eenk
Сообщение отредактировал eenk - Понедельник, 13.03.2017, 15:35
Ответить
Сообщение Добрый день. Прошу помощи, никак не получается решить такую задачу: В формулах, при удалении строк, естественно, появляются ошибки вида: =СРЗНАЧ(L64/$D64;L66/$D66;L68/$D68;L70/$D70;L72/$D72;L74/$D74;L76/$D76;L78/$D78;#ССЫЛКА!/#ССЫЛКА! ;L80/$D80) Таких формул множество, по всей строке. средствами Excel можно заменить выражение [;#ССЫЛКА!/#ССЫЛКА!] на [""] и все нормально. Как сделать это при помощи макроса? Сначала записал действие, получилось так: [vba]Код
Selection.Replace What:=";#ССЫЛКА!/#ССЫЛКА!", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
[/vba] Макрос выполняется без вопросов, но ничего не заменяет . Попытался использовать аналогичную команду с перебором ячеек [vba]Код
With Application For Each cell In Selection cell.FormulaR1C1 = Replace(cell.FormulaR1C1, ",#REF!/#REF!", "") Next cell End With
[/vba] (надо заменить ССЫЛКА на REF, ибо так видит VBA формулу) Но данным путем неудобно, потому что 1. Долго; 2. приходится выделять диапазон, тогда как при замене можно выделить просто строку, в противном случае цикл затянется на очень много времени попытался, даже, построить совсем корявую конструкцию: [vba]Код
Dim ff As Range Set ff = Range(Cells(Selection.Row, Selection.Column), Cells(Selection.Row + Selection.Rows.Count - 1, Selection.Columns.Count - 1 + Selection.Column)) ff.Replace What:=";#ССЫЛКА!/#ССЫЛКА!", Replacement:="", LookAt:= xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False a = ff.Replace(";#ССЫЛКА!/#ССЫЛКА!", "", xlPart, xlByRows, False, False, False) ff.Replace What:=";#REF!/#REF!", Replacement:="", LookAt:= xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False a = ff.Replace(";#REF!/#REF!", "", xlPart, xlByRows, False, False, False)
[/vba] все равно - ничего не заменяется! Автор - eenk Дата добавления - 13.03.2017 в 15:24
китин
Дата: Понедельник, 13.03.2017, 15:28 |
Сообщение № 2
Группа: Модераторы
Ранг: Экселист
Сообщений: 7019
Репутация:
1074
±
Замечаний:
0% ±
Excel 2007;2010;2016
файл?
Не судите очень строго:я пытаюсь научиться ЯД 41001877306852
Ответить
Сообщение файл? Автор - китин Дата добавления - 13.03.2017 в 15:28
Wasilich
Дата: Понедельник, 13.03.2017, 15:35 |
Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация:
326
±
Замечаний:
0% ±
2003
Код VBA оформите тегом VBA, значек # .
Код VBA оформите тегом VBA, значек # . Wasilich
Ответить
Сообщение Код VBA оформите тегом VBA, значек # . Автор - Wasilich Дата добавления - 13.03.2017 в 15:35
eenk
Дата: Понедельник, 13.03.2017, 15:54 |
Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
вот файл Если удалить, например, строку 6, в строке Всего в формулах, будет ССЫЛКА.
вот файл Если удалить, например, строку 6, в строке Всего в формулах, будет ССЫЛКА. eenk
Ответить
Сообщение вот файл Если удалить, например, строку 6, в строке Всего в формулах, будет ССЫЛКА. Автор - eenk Дата добавления - 13.03.2017 в 15:54
eenk
Дата: Понедельник, 13.03.2017, 15:55 |
Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
Wasilich, оформил
Ответить
Сообщение Wasilich, оформил Автор - eenk Дата добавления - 13.03.2017 в 15:55
китин
Дата: Понедельник, 13.03.2017, 16:01 |
Сообщение № 6
Группа: Модераторы
Ранг: Экселист
Сообщений: 7019
Репутация:
1074
±
Замечаний:
0% ±
Excel 2007;2010;2016
eenk , зачем такие сложности? формула массива Код
=СРЗНАЧ(C$4:C$13/$B$4:$B$13)
и удаляйте что хотите
eenk , зачем такие сложности? формула массива Код
=СРЗНАЧ(C$4:C$13/$B$4:$B$13)
и удаляйте что хотите китин
Не судите очень строго:я пытаюсь научиться ЯД 41001877306852
Сообщение отредактировал китин - Понедельник, 13.03.2017, 16:02
Ответить
Сообщение eenk , зачем такие сложности? формула массива Код
=СРЗНАЧ(C$4:C$13/$B$4:$B$13)
и удаляйте что хотите Автор - китин Дата добавления - 13.03.2017 в 16:01
_Boroda_
Дата: Понедельник, 13.03.2017, 16:05 |
Сообщение № 7
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация:
6481
±
Замечаний:
0% ±
2003; 2007; 2010; 2013 RUS
Попробуйте формулу массива (вводится одновременным нажатием Контрл Шифт Ентер)Код
=СРЗНАЧ(C4:C13/$B4:$B13)
Или немассивной формулойКод
=СУММПРОИЗВ(C4:C13/$B4:$B13)/СЧЁТ(C4:C13)
Или в общем случае (можно добавлять данные)Код
=СРЗНАЧ(ИНДЕКС(C:C;4):ИНДЕКС(C:C;СЧЁТЗ($A:$A)+3-СЧЁТЗ($A1:$A3))/ИНДЕКС($B:$B;4):ИНДЕКС($B:$B;СЧЁТЗ($A:$A)+3-СЧЁТЗ($A1:$A3)))
Попробуйте формулу массива (вводится одновременным нажатием Контрл Шифт Ентер)Код
=СРЗНАЧ(C4:C13/$B4:$B13)
Или немассивной формулойКод
=СУММПРОИЗВ(C4:C13/$B4:$B13)/СЧЁТ(C4:C13)
Или в общем случае (можно добавлять данные)Код
=СРЗНАЧ(ИНДЕКС(C:C;4):ИНДЕКС(C:C;СЧЁТЗ($A:$A)+3-СЧЁТЗ($A1:$A3))/ИНДЕКС($B:$B;4):ИНДЕКС($B:$B;СЧЁТЗ($A:$A)+3-СЧЁТЗ($A1:$A3)))
_Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Попробуйте формулу массива (вводится одновременным нажатием Контрл Шифт Ентер)Код
=СРЗНАЧ(C4:C13/$B4:$B13)
Или немассивной формулойКод
=СУММПРОИЗВ(C4:C13/$B4:$B13)/СЧЁТ(C4:C13)
Или в общем случае (можно добавлять данные)Код
=СРЗНАЧ(ИНДЕКС(C:C;4):ИНДЕКС(C:C;СЧЁТЗ($A:$A)+3-СЧЁТЗ($A1:$A3))/ИНДЕКС($B:$B;4):ИНДЕКС($B:$B;СЧЁТЗ($A:$A)+3-СЧЁТЗ($A1:$A3)))
Автор - _Boroda_ Дата добавления - 13.03.2017 в 16:05
eenk
Дата: Понедельник, 13.03.2017, 16:17 |
Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
китин, спасибо, но не подходит. Тут очень упрощенный пример. Если вставить шапки между строк, уже не работает формула массива. И, самое страшное, что у меня таких файлов не один десяток. Сейчас заменять все формулы во всех файлах нереально, тысячи их, без преувеличения говорю.
китин, спасибо, но не подходит. Тут очень упрощенный пример. Если вставить шапки между строк, уже не работает формула массива. И, самое страшное, что у меня таких файлов не один десяток. Сейчас заменять все формулы во всех файлах нереально, тысячи их, без преувеличения говорю. eenk
Ответить
Сообщение китин, спасибо, но не подходит. Тут очень упрощенный пример. Если вставить шапки между строк, уже не работает формула массива. И, самое страшное, что у меня таких файлов не один десяток. Сейчас заменять все формулы во всех файлах нереально, тысячи их, без преувеличения говорю. Автор - eenk Дата добавления - 13.03.2017 в 16:17
eenk
Дата: Понедельник, 13.03.2017, 16:20 |
Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
_Boroda_, китин, спасибо. Я бы хотел, все таки, узнать, как можно использовать Replace.
_Boroda_, китин, спасибо. Я бы хотел, все таки, узнать, как можно использовать Replace. eenk
Ответить
Сообщение _Boroda_, китин, спасибо. Я бы хотел, все таки, узнать, как можно использовать Replace. Автор - eenk Дата добавления - 13.03.2017 в 16:20
eenk
Дата: Понедельник, 13.03.2017, 16:49 |
Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
Внезапно! Практически случайно, при подготовке файла примера с макросами, выявил, как надо правильно делать: при выполнении замены, макрорекордер записывает такую конструкцию: [vba]Код
Selection.Replace What:=";#ССЫЛКА!/#ССЫЛКА!", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
[/vba] вручную, необходимо ее изменить так: [vba]Код
Selection.Replace What:=",#REF!/#REF!", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
[/vba] точку с запятой - на запятую ССЫЛКА на REF !
Внезапно! Практически случайно, при подготовке файла примера с макросами, выявил, как надо правильно делать: при выполнении замены, макрорекордер записывает такую конструкцию: [vba]Код
Selection.Replace What:=";#ССЫЛКА!/#ССЫЛКА!", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
[/vba] вручную, необходимо ее изменить так: [vba]Код
Selection.Replace What:=",#REF!/#REF!", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
[/vba] точку с запятой - на запятую ССЫЛКА на REF ! eenk
Сообщение отредактировал eenk - Понедельник, 13.03.2017, 16:50
Ответить
Сообщение Внезапно! Практически случайно, при подготовке файла примера с макросами, выявил, как надо правильно делать: при выполнении замены, макрорекордер записывает такую конструкцию: [vba]Код
Selection.Replace What:=";#ССЫЛКА!/#ССЫЛКА!", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
[/vba] вручную, необходимо ее изменить так: [vba]Код
Selection.Replace What:=",#REF!/#REF!", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
[/vba] точку с запятой - на запятую ССЫЛКА на REF ! Автор - eenk Дата добавления - 13.03.2017 в 16:49
_Boroda_
Дата: Понедельник, 13.03.2017, 17:00 |
Сообщение № 11
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация:
6481
±
Замечаний:
0% ±
2003; 2007; 2010; 2013 RUS
Еще такой вариант у меня прокатывает (и если удалить строку 4, то тоже работает) [vba]Код
Cells.Replace What:="#REF!/#REF!", Replacement:="" Cells.Replace What:=",,", Replacement:="," Cells.Replace What:="(,", Replacement:="("
[/vba] Хотя вот так наверное получше будет [vba]Код
Cells.Replace What:=",#REF!/#REF!", Replacement:="" Cells.Replace What:="#REF!/#REF!,", Replacement:=""
[/vba]
Еще такой вариант у меня прокатывает (и если удалить строку 4, то тоже работает) [vba]Код
Cells.Replace What:="#REF!/#REF!", Replacement:="" Cells.Replace What:=",,", Replacement:="," Cells.Replace What:="(,", Replacement:="("
[/vba] Хотя вот так наверное получше будет [vba]Код
Cells.Replace What:=",#REF!/#REF!", Replacement:="" Cells.Replace What:="#REF!/#REF!,", Replacement:=""
[/vba] _Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Еще такой вариант у меня прокатывает (и если удалить строку 4, то тоже работает) [vba]Код
Cells.Replace What:="#REF!/#REF!", Replacement:="" Cells.Replace What:=",,", Replacement:="," Cells.Replace What:="(,", Replacement:="("
[/vba] Хотя вот так наверное получше будет [vba]Код
Cells.Replace What:=",#REF!/#REF!", Replacement:="" Cells.Replace What:="#REF!/#REF!,", Replacement:=""
[/vba] Автор - _Boroda_ Дата добавления - 13.03.2017 в 17:00