powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как узнать адрес ячеки, на которую ссылается формула СМЕЩ()
7 сообщений из 7, страница 1 из 1
Как узнать адрес ячеки, на которую ссылается формула СМЕЩ()
    #36043028
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!
Проблема следующая - в файле имеется множество формул вида
=СМЕЩ(Лист!$H$3;0;СТОЛБЕЦ()*8-51)
Но вот сегодня потребовалось удалять / перемещать столбцы.
Как вы понимаете, при изменении структуры полей формула будет выдавать неверный результат
Вопросы:
1. Как мне определить адрес ячейки, на которую ссылается формула СМЕЩ()
2. Как мне отыскать формулы и заменить их на ссылки в виде =Лист!AD3
...
Рейтинг: 0 / 0
Как узнать адрес ячеки, на которую ссылается формула СМЕЩ()
    #36043246
Фотография qwrqwr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей06, насколько я понял - Вы имеете достаточно "жесто зафиксированную" структуру листа
- т.е. рассчитываете смещение от порядкового номера столбцов.
Если Вы меняете структуру удаляя столбцы - возможно, Вы заранее сможете сказать, как надо изменить этот "коэф-т пересчета".
Тогда ИМХО самое простое - через Ctrl+F заменить часть формулы, например меняем ()*8-51 на ()*6-53
PS - просмотр формул Ctrl+` или через tools - options - view
...
Рейтинг: 0 / 0
Как узнать адрес ячеки, на которую ссылается формула СМЕЩ()
    #36043402
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей06Добрый день!
Проблема следующая - в файле имеется множество формул вида
=СМЕЩ(Лист!$H$3;0;СТОЛБЕЦ()*8-51)
Но вот сегодня потребовалось удалять / перемещать столбцы.
Как вы понимаете, при изменении структуры полей формула будет выдавать неверный результат
Вопросы:
1. Как мне определить адрес ячейки, на которую ссылается формула СМЕЩ()
2. Как мне отыскать формулы и заменить их на ссылки в виде =Лист!AD3
Сергей06, не очень понимаю чего ты хочешь достичь, но на всякий случай - функция СМЕЩ возвращает ссылку, а не значение. Это означает, что результат имеет свойства диапазона. Например: =ЯЧЕЙКА("address";СМЕЩ(Лист!$H$3;0;СТОЛБЕЦ()*8-51))
...
Рейтинг: 0 / 0
Как узнать адрес ячеки, на которую ссылается формула СМЕЩ()
    #36044607
Спасибо.
После долгого мучния пришел к такому, но может лучше и просче можно сделатьSub Макрос1()

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub Макрос1()

Formula1 = Cells( 4 ,  4 ).Formula
Formula2 = "=CELL(""адрес""," & Mid(Formula1,  2 ,  1000 ) & ")"
Formula3 = "=SUBSTITUTE(" & Mid(Formula2,  2 ,  1000 ) & ",""$"","""")"
Cells( 4 ,  4 ).Formula = Formula3
Formula4 = "=" & Cells( 4 ,  4 ).Value
Cells( 4 ,  4 ).Formula = Formula4


End Sub
...
Рейтинг: 0 / 0
Как узнать адрес ячеки, на которую ссылается формула СМЕЩ()
    #36044628
KL (XL)
Сергей06, не очень понимаю чего ты хочешь достичь
Попробую объяснить.
Мне нужно "сжать" таблицу в которой для одного периода сущестует несколько столбцов (например, один столбец умножить на другой получится третий. Такой формат от него нельзя отойти) в другую таблицу, в которой для одного периода один столбец (только итоговый). Тоже делаем и в обратную сторону (при этом оновременно транпонируем таблицу тремя формулами).
Просто муторно счелкать каждый раз по ячекам забивая простые связи, поэтому делали такие формулы.
Возможно нужно было использовать другой способ, дак не все приходит сразу.
...
Рейтинг: 0 / 0
Как узнать адрес ячеки, на которую ссылается формула СМЕЩ()
    #36044962
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот из несколько кодов сделал то, что должно мне подойти.
Только не могу понять, почему он не ищет и не заменяет вторую ячейку диапазона.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
Sub Выделение_ячеек_по_условию()
Dim a As Range
  Set a = Test_выделение_ячеек_по_условию(Selection, "*OFFSET*") ' (Диапазон для поиска, что ищем /обязательно с маской. если формулы то в английском варианте/)
  'If Not a Is Nothing Then a.Select
End Sub

Function Test_выделение_ячеек_по_условию(FReg As Range, FStr As String) As Range
Dim ResR As Range, sAr As Range, firstAddress As String
With FReg
  Set sAr = .Find(FStr, LookIn:=xlFormulas, LookAt:=xlWhole) ' (что ищем, формулы или значения, не знаю)
  If Not sAr Is Nothing Then
    firstAddress = sAr.Address
    Do
      If ResR Is Nothing Then
        Set ResR = sAr
      Else
        'Set ResR = Union(ResR, sAr)
        ИзменениеФормул (sAr.Address)
      End If
      Set sAr = .FindNext(sAr)
    Loop While Not sAr Is Nothing And sAr.Address <> firstAddress
  End If
End With
Set Test_выделение_ячеек_по_условию = ResR
End Function


Sub ИзменениеФормул(rng11)

Range(rng11).Formula = "=SUBSTITUTE(" & Mid("=CELL(""адрес""," & Mid(Range(rng11).Formula,  2 ,  1000 ) & ")",  2 ,  1000 ) & ",""$"","""")"
Formula4 = "=" & Range(rng11).Value
Range(rng11).Formula = Formula4


End Sub
...
Рейтинг: 0 / 0
Как узнать адрес ячеки, на которую ссылается формула СМЕЩ()
    #36045189
A-Nik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вторая ячейка диапазона находится первой в твоём цикле, а для первой ячейки ты не вызываешь функцию ИзменениеФормул (sAr.Address). Если выполнять Union не планируется, то можно просто оставить так:
Код: plaintext
1.
2.
If ResR Is Nothing Then Set ResR = sAr
ИзменениеФормул (sAr.Address)
Но тогда произойдёт, что заменятся все формулы и последний вызов .FindNext(sAr) вернёт Nothing, а в строке Loop в условии стоит проверка свойства sAr.Address <> firstAddress, а sAr не установлен, что, в свою очередь, вызывает ашыпку
Самый простой способ избавиться от этого - добавить строку On Error Resume Next
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как узнать адрес ячеки, на которую ссылается формула СМЕЩ()
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]