Двссыл не работает при закрытых файлах

Не работает функция ДВССЫЛ при закрытом файле, на который ссылаюсь — MS Excel — Обсуждение 1907670

Поиск Google по форуму Поиск по форуму Расширенный поиск Имя Дата Сообщение Читать обсуждение полностью:
Не работает функция ДВССЫЛ при закрытом файле, на который ссылаюсь
Proidoha 26.01.2017 01:55 https://www.cyberforum.ru/post10045476.html

ЦПУ майнер, работает при закрытом диспетчере задач
Привет. Столкнулся с майнером. ЦПУ нагружается процентов до 80. Как только открываю диспетчер.

Почему таймер в программе работает медленнее при закрытом eclipse
Здравствуйте, решил я написать flappy bird. Устанавливая таймер Timer mainTimer = new Timer(10.

Поиск минимального элемента в массиве, который не меньше N, функция не работает при некоторых значениях
Функция должна находить минимальный элемент в массиве, который больше N. Допустим массив 6, 8, 3.

Удаление строки в закрытом файле.
Собственно вопрос: есть строка в файле excel, которую надо удалить с помощю кода VBA. При этом.

Почему ДВССЫЛ на простой именованный диапазон работает, а на динамический именованный не работает?
Т.е. если создать список, который будет получать данные из именованного диапазона с фиксированным.

Макрос в файле ексель, который находится на сервере, у 2 пользователей работает по-разному
Файл ексель находится на сервере. К нему имеют доступ 2 пользователя. В нем имеется несколько.

Копирование листов в отдельную книгу при наличии =ДВССЫЛ в листе
Коллеги, приветствую! Может, конечно, я плохо ищу. Может еще что-то, но все, что я перепробовал -.

Обмен Ут-бп При Закрытом Периоде
Есть базы УТ 10.3 и БП 2.0 между ними почти стандартный обмен данными. В БП бухгалтера перед.

Коллизия при открытом и закрытом хешировании
Кто может в двух словах объяснить данную тему?

ЛДС мигает при закрытом симисторе
В общем, всё как обычно, только R3 не 39 а 240. Руководствуясь «номограммой расчёта зщитной RC.

Источник

Разбор функции ДВССЫЛ (INDIRECT) на примерах

На первый взгляд (особенно при чтении справки) функция ДВССЫЛ (INDIRECT) выглядит простой и даже ненужной. Ее суть в том, чтобы превращать текст похожий на ссылку — в полноценную ссылку. Т.е. если нам нужно сослаться на ячейку А1, то мы можем либо привычно сделать прямую ссылку (ввести знак равно в D1, щелкнуть мышью по А1 и нажать Enter), а можем использовать ДВССЫЛ для той же цели:

Обратите внимание, что аргумент функции — ссылка на А1 — введен в кавычках, поэтому что, по сути, является здесь текстом.

«Ну ОК», — скажете вы. «И что тут полезного?».

Но не судите по первому впечатлению — оно обманчиво. Эта функция может выручить вас в большом количестве ситуаций.

Читайте также:  Афтершок информационный центр не работает

Пример 1. Транспонирование

пазон в горизонтальный (транспонировать). Само-собой, можно использовать специальную вставку или функцию ТРАНСП (TRANSPOSE) в формуле массива, но можно обойтись и нашей ДВССЫЛ:

Логика проста: чтобы получить адрес очередной ячейки, мы склеиваем спецсимволом «&» букву «А» и номер столбца текущей ячейки, который выдает нам функция СТОЛБЕЦ (COLUMN) .

Обратную процедуру лучше проделать немного по-другому. Поскольку на этот раз нам нужно формировать ссылку на ячейки B2, C2, D2 и т.д., то удобнее использовать режим ссылок R1C1 вместо классического «морского боя». В этом режиме наши ячейки будут отличаться только номером столбца: B2=R1C 2 , C2=R1C 3 , D2=R1C 4 и т.д.

Тут на помощь приходит второй необязательный аргумент функции ДВССЫЛ. Если он равен ЛОЖЬ (FALSE) , то можно задавать адрес ссылки в режиме R1C1. Таким образом, мы можем легко транспонировать горизонтальный диапазон обратно в вертикальный:

Пример 2. Суммирование по интервалу

Мы уже разбирали один способ суммирования по окну (диапазону) заданного размера на листе с помощью функции СМЕЩ (OFFSET) . Подобную задачу можно решить и с помощью ДВССЫЛ. Если нам нужно суммировать данные только из определенного диапазона-периода, то можно склеить его из кусочков и превратить затем в полноценную ссылку, которую и вставить внутрь функции СУММ (SUM) :

Пример 3. Выпадающий список по умной таблице

Иногда Microsoft Excel не воспринимает имена и столбцы умных таблиц как полноценные ссылки. Так, например, при попытке создать выпадающий список (вкладка Данные — Проверка данных) на основе столбца Сотрудники из умной таблицы Люди мы получим ошибку:

Если же «обернуть» ссылку нашей функцией ДВССЫЛ, то Excel преспокойно ее примет и наш выпадающий список будет динамически обновляться при дописывании новых сотрудников в конец умной таблицы:

Пример 4. Несбиваемые ссылки

Как известно, Excel автоматически корректирует адреса ссылок в формулах при вставке или удалении строк-столбцов на лист. В большинстве случаев это правильно и удобно, но не всегда. Допустим, что нам нужно перенести имена из справочника по сотрудникам в отчет:

Если ставить обычные ссылки (в первую зеленую ячейку ввести =B2 и скопировать вниз), то потом при удалении, например, Даши мы получим в соответствующей ей зеленой ячейке ошибку #ССЫЛКА! (#REF!). В случае применения для создания ссылок функции ДВССЫЛ такой проблемы не будет.

Пример 5. Сбор данных с нескольких листов

Предположим, что у нас есть 5 листов с однотипными отчетами от разных сотрудников (Михаил, Елена, Иван, Сергей, Дмитрий):

Допустим, что форма, размеры, положение и последовательность товаров и месяцев во всех таблицах одинаковые — различаются только числа.

Собрать данные со всех листов (не просуммировать, а положить друг под друга «стопочкой») можно всего одной формулой:

Как видите, идея та же: мы склеиваем ссылку на нужную ячейку заданного листа, а ДВССЫЛ превращает ее в «живую». Для удобства, над таблицей я добавил буквы столбцов (B,C,D), а справа — номера строк, которые нужно взять с каждого листа.

Подводные камни

При использовании ДВССЫЛ (INDIRECT) нужно помнить про ее слабые места:

  • Если вы делаете ссылку в другой файл (склеивая имя файла в квадратных скобках, имя листа и адрес ячейки), то она работает только пока исходный файл открыт. Если его закрыть, то получим ошибку #ССЫЛКА!
  • С помощью ДВССЫЛ нельзя сделать ссылку на динамический именованный диапазон. На статический — без проблем.
  • ДВССЫЛ является волатильной (volatile) или «летучей» функцией, т.е. она пересчитывается при любом изменении любой ячейки листа, а не только влияющих ячеек, как у обычных функций. Это плохо отражается на быстродействии и на больших таблицах ДВССЫЛ лучше не увлекаться.
Читайте также:  Не могу работать без кофе

Источник

Двссыл не работает при закрытых файлах

если я все правильно понял вот эта строка и описывает облать действия диапазона
[vba]

если я все правильно понял вот эта строка и описывает облать действия диапазона
[vba]

если я все правильно понял вот эта строка и описывает облать действия диапазона
[vba]

Pelena Дата: Среда, 25.01.2017, 15:19 | Сообщение № 7

«Черт возьми, Холмс! Но как. »
ЯД 41001765434816

Ответить

_Boroda_ Дата: Среда, 25.01.2017, 15:19 | Сообщение № 8

Посмотрите вариант вообще без макросов
В диспетчере имен. имя Диап для простоты использует еще два имени стр и кол, в имени диап_1 сделано сразу без них. Если так делать, то Вам не нужна эта куча имен, достаточно двух — ФИО и ДИАП_1

А по коду — во второй строке уберите лист
ActiveWorkbook. Worksheets(«dbDiap») .Names.Add

Посмотрите вариант вообще без макросов
В диспетчере имен. имя Диап для простоты использует еще два имени стр и кол, в имени диап_1 сделано сразу без них. Если так делать, то Вам не нужна эта куча имен, достаточно двух — ФИО и ДИАП_1

А по коду — во второй строке уберите лист
ActiveWorkbook. Worksheets(«dbDiap») .Names.Add _Boroda_

Скажи мне, кудесник, любимец ба’гов.
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

Ответить

Сообщение Посмотрите вариант вообще без макросов
В диспетчере имен. имя Диап для простоты использует еще два имени стр и кол, в имени диап_1 сделано сразу без них. Если так делать, то Вам не нужна эта куча имен, достаточно двух — ФИО и ДИАП_1

А по коду — во второй строке уберите лист
ActiveWorkbook. Worksheets(«dbDiap») .Names.Add Автор — _Boroda_
Дата добавления — 25.01.2017 в 15:19

Kamikadze_N Дата: Среда, 25.01.2017, 15:37 | Сообщение № 9

200?’200px’:»+(this.scrollHeight+5)+’px’);»>
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range(«B:B»)) Is Nothing Then
UserForm1.Show

‘если у нас отсутствует значение в именованом диапазоне мы его добавим

If IsEmpty(Target) Then Exit Sub ‘если нажата клавиша эскейп то заканчиваем работу с выделеной ячейкой

If WorksheetFunction.CountIf(Worksheets(«dbTresh»).Range(«ФИО»), Target) = 0 Then ‘выполняем поиск в диапазоне на наличие там имеющегося значения
lReply = MsgBox(«Добавить новое значение » & _
Target & » в БД?», vbYesNo + vbQuestion)
If lReply = vbYes Then

‘вставляем в именованый диапазон новое значение

sch = 4
Do While Worksheets(«dbTresh»).Cells(sch, 1) <> «» ‘Находим первую пустую строку в именованом диапазоне
sch = sch + 1
Loop

Worksheets(«dbTresh»).Cells(sch, 1) = Target ‘присваиваем этой строке значение из комбобокс

‘создаем именованный диапазон для этого найдем его местоположение в БД
Sheets(«dbDiap»).Select
schI = 1
Do While Worksheets(«dbDiap»).Cells(3, schI) <> «» ‘Находим первый пустой столбец
schI = schI + 2
Loop

‘собственно как заставить создаваться Диапазон в зависимости от Толбца?

‘ ActiveWorkbook.Names.Add Name:=»апр», RefersToR1C1:=»=Лист1!R2C1:R8C1″
‘ ActiveWorkbook.Names(«апр»).Comment = «»

Worksheets(«dbDiap»).Cells(3, schI) = Target.Value
ActiveWorkbook.Worksheets(«dbDiap»).Names.Add Name:=Target.Value, _ ‘так если я удалю эту чать то и диапазон не создасться , тут же его имя создается, разве нет?
RefersTo:=ActiveWorkbook.Worksheets(«dbDiap»).Cells(4, schI).Resize(9)

End If
End If
End If
End Sub

200?’200px’:»+(this.scrollHeight+5)+’px’);»>
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range(«B:B»)) Is Nothing Then
UserForm1.Show

‘если у нас отсутствует значение в именованом диапазоне мы его добавим

If IsEmpty(Target) Then Exit Sub ‘если нажата клавиша эскейп то заканчиваем работу с выделеной ячейкой

If WorksheetFunction.CountIf(Worksheets(«dbTresh»).Range(«ФИО»), Target) = 0 Then ‘выполняем поиск в диапазоне на наличие там имеющегося значения
lReply = MsgBox(«Добавить новое значение » & _
Target & » в БД?», vbYesNo + vbQuestion)
If lReply = vbYes Then

‘вставляем в именованый диапазон новое значение

sch = 4
Do While Worksheets(«dbTresh»).Cells(sch, 1) <> «» ‘Находим первую пустую строку в именованом диапазоне
sch = sch + 1
Loop

Worksheets(«dbTresh»).Cells(sch, 1) = Target ‘присваиваем этой строке значение из комбобокс

‘создаем именованный диапазон для этого найдем его местоположение в БД
Sheets(«dbDiap»).Select
schI = 1
Do While Worksheets(«dbDiap»).Cells(3, schI) <> «» ‘Находим первый пустой столбец
schI = schI + 2
Loop

‘собственно как заставить создаваться Диапазон в зависимости от Толбца?

‘ ActiveWorkbook.Names.Add Name:=»апр», RefersToR1C1:=»=Лист1!R2C1:R8C1″
‘ ActiveWorkbook.Names(«апр»).Comment = «»

Worksheets(«dbDiap»).Cells(3, schI) = Target.Value
ActiveWorkbook.Worksheets(«dbDiap»).Names.Add Name:=Target.Value, _ ‘так если я удалю эту чать то и диапазон не создасться , тут же его имя создается, разве нет?
RefersTo:=ActiveWorkbook.Worksheets(«dbDiap»).Cells(4, schI).Resize(9)

End If
End If
End If
End Sub

200?’200px’:»+(this.scrollHeight+5)+’px’);»>
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range(«B:B»)) Is Nothing Then
UserForm1.Show

‘если у нас отсутствует значение в именованом диапазоне мы его добавим

If IsEmpty(Target) Then Exit Sub ‘если нажата клавиша эскейп то заканчиваем работу с выделеной ячейкой

If WorksheetFunction.CountIf(Worksheets(«dbTresh»).Range(«ФИО»), Target) = 0 Then ‘выполняем поиск в диапазоне на наличие там имеющегося значения
lReply = MsgBox(«Добавить новое значение » & _
Target & » в БД?», vbYesNo + vbQuestion)
If lReply = vbYes Then

‘вставляем в именованый диапазон новое значение

sch = 4
Do While Worksheets(«dbTresh»).Cells(sch, 1) <> «» ‘Находим первую пустую строку в именованом диапазоне
sch = sch + 1
Loop

Worksheets(«dbTresh»).Cells(sch, 1) = Target ‘присваиваем этой строке значение из комбобокс

‘создаем именованный диапазон для этого найдем его местоположение в БД
Sheets(«dbDiap»).Select
schI = 1
Do While Worksheets(«dbDiap»).Cells(3, schI) <> «» ‘Находим первый пустой столбец
schI = schI + 2
Loop

‘собственно как заставить создаваться Диапазон в зависимости от Толбца?

‘ ActiveWorkbook.Names.Add Name:=»апр», RefersToR1C1:=»=Лист1!R2C1:R8C1″
‘ ActiveWorkbook.Names(«апр»).Comment = «»

Worksheets(«dbDiap»).Cells(3, schI) = Target.Value
ActiveWorkbook.Worksheets(«dbDiap»).Names.Add Name:=Target.Value, _ ‘так если я удалю эту чать то и диапазон не создасться , тут же его имя создается, разве нет?
RefersTo:=ActiveWorkbook.Worksheets(«dbDiap»).Cells(4, schI).Resize(9)

End If
End If
End If
End Sub

Источник

Оцените статью