Применить имена в Excel прослушивается?

Я вижу, что люди была такая проблема 10 лет назад и это все еще не исправлено. Или, может, я просто не знаю, как использовать эту функцию.

enter image description here

в моем листе у меня есть эти именованные диапазоны:


A1 - " name1"


B1 - " name2"


C1 - "name3"

в некоторых других 3 ячейках у меня есть следующие формулы:

=A1
=A1+B1
=COUNT(A1:C1)

после Применить Имена... я жду это:

=name1
=name1+name2
=COUNT(name1:name3)

I никогда получить, что независимо от того, какие варианты я выбираю. Более того, обычно мои формулы полностью разрушаются...

=name1
=name1
=name1

как смог я получить результат мне?


Я хорошо разбираюсь в VBA, поэтому я попытался разработать решение этой проблемы с помощью VBA, но код также не работал.

Я использую Excel 2013, 32-разрядный (MS Office профессиональный плюс). ОС - Windows 7 корпоративная, 64-разрядная.

8
задан ZygD
30.01.2023 6:54 Количество просмотров материала 2799
Распечатать страницу

3 ответа

Я не могу повторить это (с моей версией excel на Windows 7) -

enter image description here

Если я определяю ваши имена, а затем создать формулы

enter image description here

затем примените names

enter image description here

Я получаю желаемый результат -

enter image description here

Как вы определяете имена? Затем я выбираю ячейку щелкните его заголовок слева от строки формул и введите имя.

enter image description here


С уважением -

enter image description here

применить имена -

enter image description here

как показано здесь

enter image description here


нет изменений без " отображения формул" -

enter image description here

применить имена

enter image description here


хорошо, поехали. Office 2013, windows 7

enter image description here

применить имена

enter image description here

похоже на сбой репликации.


Хорошо, давайте попробуем Excel 2016 на OSX Yosemite

определим наши имена и формулы -

enter image description here

хорошо, Хорошо, давайте применим наши имена

enter image description here

что? Alert формула слишком длинная

enter image description here

теперь он выбрал мой count и.. что? Alert Microsoft Excel не удается найти любой ссылки на замену

enter image description here

и это a.. частичный отказ?

enter image description here

Хорошо, давайте сделаем это вручную -

enter image description here

странно, он не выделяет диапазон, только две клетки?

но это работает?

enter image description here

как раз для сравнения, a обычный count выделен диапазон -

enter image description here

2
отвечен Raystafarian 2023-01-31 14:42

скажем, начнем с:

enter image description here

и мы уже присвоили имена A2 и B2. В Вкладка Формулы, ниспадающем:

Определить Имя > Применить Имена...

enter image description here

убедитесь, что мы Привет-Свет как имена и сенсорный OK

и мы получаем:

enter image description here

и так имена получают применяется!

1
отвечен Gary's Student 2023-01-31 16:59

как было указано в Просмотр кода, это вызовет проблемы, если, например, он ищет " A1 "и находит" A10 " и т.д.

хорошо, вот моя попытка обойти. С этим ваши формулы должны использовать абсолютные ссылки все время. Он работает на именованных диапазонах больше 1 ячейки.

обратите внимание, что я ищу usedrange - но вы можете сократить его, как вам нравится сбросить srchRng.

Option Explicit
Sub FixNames()

Dim ClctNames As Variant
Set ClctNames = ActiveWorkbook.Names

Dim rngName As String
Dim rngNameLoc As String
Dim strFrmla As String

Dim c As Range
Dim n As Integer

'Define as needed
Dim srchRng As Range
Set srchRng = ActiveSheet.UsedRange

'For each name (n) in the collection
For n = 1 To ClctNames.Count

    'I'm storing the Named Range's name and address as strings to use below
    rngName = ClctNames(n).Name
    rngNameLoc = ClctNames(n).RefersToRange.Address

    '--Should I break this out into a function? If so, at what point?
    For Each c In srchRng
        'We only want to test cells with formulas
        If c.HasFormula = True Then
           'We have to check if the cell contains the current named range's address
           If InStr(1, c.Formula, rngNameLoc, vbTextCompare) <> 0 Then
              'Since these are perfect matches, no need to look for length or location, just replace
              strFrmla = Replace(c.Formula, rngNameLoc, rngName)
              c.Formula = strFrmla
           End If
        End If
    Next
Next

'No error handling should be needed

End Sub

вам нужно использовать абсолютные ссылки, потому что, когда я вытаскиваю именованный диапазон RefersToRange.Address возвращается - не ряд, поэтому я устанавливаю его как строку. Я думаю, вы могли бы написать функцию, которая удаляет $ абсолютные ссылки, если хочешь.

это было весело

1
отвечен Raystafarian 2023-01-31 19:16

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя

Похожие вопросы про тегам:

microsoft-excel
microsoft-excel-2013
named-ranges
vba
worksheet-function
Вверх