Namen in Excel anwenden ist fehlerhaft?

Ich sehe, dass Leute dieses Problem vor 10 Jahren hatten und es ist immer noch nicht behoben. Oder vielleicht weiß ich einfach nicht, wie ich diese Funktion verwenden soll.
geben Sie hier die Bildbeschreibung ein

In meinem Blatt habe ich diese benannten Bereiche:
A1 - "name1"
B1 - "name2"
C1 - "name3"

In einigen anderen 3 Zellen habe ich diese Formeln:

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

Nach dem Ausführen von Namen anwenden... Ich erwarte Folgendes:

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

Ich bekomme das nie, egal welche Optionen ich wähle. Außerdem, normalerweise werden meine Formeln völlig ruiniert...

=name1
=name1
=name1

Wie kann ich das gewünschte Ergebnis erhalten?
Ich kenne mich mit VBA aus, also habe ich versucht, eine Lösung für dieses Problem mit VBA zu entwerfen, aber der Code hat auch nicht funktioniert.

Ich verwende Excel 2013 (32 bit MS Office Professional Plus). OS - Windows 7 Enterprise, 64-bit.

Author: ZygD, 2015-05-25

3 answers

Ich kann dies nicht replizieren (mit meiner Excel-Version unter Windows 7) -

geben Sie hier die Bildbeschreibung ein

Wenn ich Ihre Namen definiere und dann Formeln erstelle

geben Sie hier die Bildbeschreibung ein

Dann Namen anwenden

geben Sie hier die Bildbeschreibung ein

Ich erhalte das gewünschte Ergebnis -

geben Sie hier die Bildbeschreibung ein

Wie definieren Sie die Namen? Ich wähle die Zelle aus, klicke dann links in der Formelleiste auf den Titel und tippe den Namen ein.

geben Sie hier die Bildbeschreibung ein


Mit Ihnen -

geben Sie hier die Bildbeschreibung ein

Namen anwenden -

geben Sie hier die Bildbeschreibung ein

Wie hier gezeigt

geben Sie hier die Bildbeschreibung ein


Keine Änderung ohne "Formeln anzeigen" -

geben Sie hier die Bildbeschreibung ein

Namen anwenden

geben Sie hier die Bildbeschreibung ein


Okay, hier gehen wir. Office 2013 windows 7 -

geben Sie hier die Bildbeschreibung ein

Namen anwenden

geben Sie hier die Bildbeschreibung ein

Sieht aus wie ein replizierter Fehler.


Okay, versuchen wir Excel 2016 auf OSX Yosemite

Definieren wir unsere Namen und Formeln -

geben Sie hier die Bildbeschreibung ein

Gut, gut, wenden wir unsere Namen an

geben Sie hier die Bildbeschreibung ein

Was? Warnung Formel ist zu lang

geben Sie hier die Bildbeschreibung ein

Nun wählte es meine count und.. Was? Warnung Microsoft Excel kann keine Referenzen zum Ersetzen von

geben Sie hier die Bildbeschreibung ein

Und es ist ein.. teilweise scheitern?

geben Sie hier die Bildbeschreibung ein

Okay, dann machen wir das manuell -

geben Sie hier die Bildbeschreibung ein

Seltsam, es markiert nicht den Bereich, nur die beiden Zellen?

Aber es funktioniert?

geben Sie hier die Bildbeschreibung ein

Nur zum Vergleich hebt ein reguläres count den Bereich hervor -

geben Sie hier die Bildbeschreibung ein

 2
Author: Raystafarian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-06-12 13:48:39

Sagen, wir beginnen mit:

geben Sie hier die Bildbeschreibung ein

Und wir haben bereits A2 und B2 Namen zugewiesen. In der Registerkarte Formeln, Pull-down:

Name definieren> Namen anwenden...

geben Sie hier die Bildbeschreibung ein

Stellen Sie sicher, dass wir beide Namen hi-light und berühren OK

Und wir bekommen:

geben Sie hier die Bildbeschreibung ein

Und so werden die Namen angewendet!

 1
Author: Gary's Student,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-05-25 22:25:25

Wie in code review darauf hingewiesen wurde, verursacht dies Probleme, wenn es beispielsweise nach "A1" sucht und "A10" usw. findet.

Okay, hier ist mein Versuch einer Problemumgehung. Damit müssen Ihre Formeln die ganze Zeit absolute Referenzen verwenden. Es funktioniert in benannten Bereichen, die größer als 1 Zelle sind.

Bitte beachten Sie, dass ich bin auf der Suche usedrange - aber Sie können engen, wie Sie möchten, indem Sie 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

Sie müssen absolute verwenden referenzen, weil, wenn ich den benannten Bereich RefersToRange.Address ziehe, es a zurückgibt bereich objekt - kein Bereich, also setze ich ihn als String. Ich denke, Sie könnten eine Funktion schreiben, die die absoluten Referenzen $ entfernt, wenn Sie möchten.

das war ein Spaß

 1
Author: Raystafarian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-04-13 12:41:07