Namen in Excel anwenden ist fehlerhaft?

1581
ZygD

Ich sehe, dass die Leute dieses Problem vor 10 Jahren hatten und es ist immer noch nicht behoben. Oder ich weiß einfach nicht, wie ich diese Funktion nutzen soll.
Namen in Excel anwenden ist fehlerhaft?

In meinem Blatt habe ich folgende benannte Bereiche:
A1 - "Name1"
B1 - "Name2"
C1 - "Name3"

In einigen anderen 3 Zellen habe ich folgende Formeln:

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

Nach dem Laufen Apply Names...erwarte ich folgendes:

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

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

=name1 =name1 =name1 

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

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

4
Ich bekomme das gleiche Problem wie du. Du bist nicht allein! Andi Mohr vor 8 Jahren 1
Welche Excel-Versionen verwenden Sie? OP und @AndiMohr Raystafarian vor 8 Jahren 0
@ Raystafarian Ich bin auf Excel 2013 (Office Pro Plus 2013) unter 64-Bit-Windows 7 Pro. Andi Mohr vor 8 Jahren 0
Ich fügte meiner Antwort hinzu, dass ich mit Excel 2007 unter Windows 7 nicht reproduzieren kann. Dies ist, was ich bei der Arbeit habe. Ich werde versuchen vpn nach hause .. Raystafarian vor 8 Jahren 0
In Ordnung, ich habe 2013 w7 verwendet und meiner Antwort hinzugefügt. Gleicher Fehler. Vor 10 Jahren war Excel 2003. @AndiMohr Raystafarian vor 8 Jahren 2
Es scheint, dass eine Reihe Leute haben [haben] (http://answers.microsoft.com/de-de/office/forum/office_2013_release-excel/when-will-the-apply-names-bug-in-excel-be- fixed / 0eb23d54-fbf0-4c64-8bad-cf52bc32547f? db = 5) [markiert] (http://excelribbon.tips.net/T008266_Applying_Range_Names_to_Formulas.html) [this] (http://www.mrexcel.com/forum/ Excel-Fragen / 705730-Anwenden-Namen-bestehende-formula.html) als Fehler in Excel 2010 und 2013. Ein Vorschlag, den ich gefunden habe, ist die Installation des Freeware-Namensmanagers von Jan Karel Pieterse (http: //). www.jkp-ads.com/officemarketplacenm-de.asp). Andi Mohr vor 8 Jahren 1
@AndiMohr bedankt sich für den Link zur MS Answers-Site. Es ist auch [hier] (https://social.msdn.microsoft.com/Forums/office/en-US/e8cb0b2e-45b1-4651-9d35-6280f9f0d370/how-do-i-get-an-acknowledgement-from- ms-of-the-bug-in-apply-namen-in-excel-2010-2013? forum = exceldev) mit Angabe, dass sie auf der Partnerseite gepostet wurde, aber ich habe keinen Zugriff darauf. Möglicherweise müssen wir es nur akzeptieren (http://superuser.com/questions/611854/prevent-excel-from-clearing-copied-data-for-pasting-nach-certain-operations-w). Raystafarian vor 8 Jahren 1
Ich habe Excel 2016 zu meiner Antwort hinzugefügt - sehr seltsam. @ AndiMohr Raystafarian vor 8 Jahren 1
@ZygD Dies war das erste Mal, dass mir aufgefallen war, dass "Apply Names" eine Sache war. Wann immer ich Zellreferenzen für benannte Bereiche wie diese in der Vergangenheit austauschen musste, habe ich `Suchen und Ersetzen 'verwendet. Gibt es einen Grund, warum das für Sie nicht funktionieren würde? Andi Mohr vor 8 Jahren 0
Eine weitere Antwort mit einer VBA-Lösung wurde hinzugefügt. Es hat einige Einschränkungen, sollte aber funktionieren. @ AndiMohr Raystafarian vor 8 Jahren 1
In meiner Makrolösung verlinke ich meine Frage auf [Code Review] (http://codereview.stackexchange.com/q/112885/75587). Es scheint, die beste Option für eine Umgehung wäre * wahrscheinlich * Regex. Ich bin auf keinen Fall ein Regex-Guru. Ich denke, [Excellll] (http://superuser.com/users/76571/excellll) hat anständige Erfahrung mit Regex (und Excel), aber höchstwahrscheinlich finden Sie eine bessere Umgehung von [Stack Overflow] (http: /). /stackoverflow.com/questions/tagged/excel%20regex?mode=all). Raystafarian vor 8 Jahren 1

3 Antworten auf die Frage

2
Raystafarian

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

Wenn ich Ihre Namen definiere und Formeln dann erstelle

Dann bewerben Sie sich mit Namen

Ich bekomme das gewünschte Ergebnis -

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


Mit Ihnen -

Namen anwenden -

Wie hier gezeigt


Keine Änderung ohne "Formeln anzeigen" -

Namen anwenden


Okay, los geht's. Office 2013, Windows 7

Namen anwenden

Sieht aus wie ein replizierter Fehler.


Okay, lass uns Excel 2016 auf OSX Yosemite ausprobieren

Definieren wir unsere Namen und Formeln -

Gut, gut, lasst uns unsere Namen anwenden

Was? Alert Formula ist zu lang

Nun wählte es mein countund .. was? Warnung Microsoft Excel kann keine Referenzen zum Ersetzen finden

Und es ist ein teilweiser Fehlschlag?

Okay, dann machen wir das manuell -

Merkwürdig, die Reichweite wird nicht hervorgehoben, nur die beiden Zellen?

Aber es funktioniert?

Nur zum Vergleich counthebt ein regelmäßiger Bereich den Bereich hervor -

Versuchen Sie es mit A1, B1 und C1 wie in meinem Beispiel. ZygD vor 8 Jahren 0
@ZygD Ich habe dein Beispiel hinzugefügt, kann nicht reproduzieren. Raystafarian vor 8 Jahren 0
Ich definiere Namen genauso wie Sie. Ich habe bemerkt, dass Sie dies mit aktivierter Option * Formeln anzeigen tun. Ich versuchte es auch so, dass ich mein Problem so lösen kann. Aber leider habe ich immer noch die gleiche Situation - `= name1` in allen 3 Zellen, in denen Formeln vor * Apply Names * verwendet wurden. ZygD vor 8 Jahren 0
Ich habe auch versucht, * Apply Names * mit verschiedenen Optionen zu verwenden, die angezeigt werden, wenn Sie auf diese Schaltfläche im Dialogfeld klicken. Kein Erfolg. Wie kann ich Ihnen sonst helfen, das Problem zu reproduzieren? ZygD vor 8 Jahren 0
Ich habe es ohne Formel gezeigt und hatte keine Änderung. Sind Sie sicher, dass Ihre Namen nach dem Anwenden noch definiert sind? Raystafarian vor 8 Jahren 0
Ja - Namen werden nach Verwendung von Apply Names immer noch definiert. Ich habe es sowohl in der Box links neben der Formelleiste als auch im Namensmanager überprüft. ZygD vor 8 Jahren 0
Fügen Sie Ihrer Frage Ihre Version von Excel und OS hinzu, vielleicht ist das wichtig Raystafarian vor 8 Jahren 1
Ja, ich habe meinen Versuch von 2013 hinzugefügt und * kann * replizieren. Raystafarian vor 8 Jahren 1
Hinzugefügt 2016 und .. es hat nicht das gleiche * Problem, aber es funktioniert auch nicht. Raystafarian vor 8 Jahren 1
Das ist einfach unglaublich ... die neueste Version von Office ... :( Übrigens, es ist cool, dass Sie die Möglichkeit haben, Dinge auf verschiedenen Office-Versionen zu testen, einschließlich 2016;) ZygD vor 8 Jahren 0
1
Gary's Student

Sagen wir, wir beginnen mit:

und wir haben bereits Namen für A2 und B2 vergeben . Ziehen Sie auf der Registerkarte "Formeln" Folgendes nach unten:

Name definieren > Namen anwenden ...

Vergewissern Sie sich, dass wir sowohl Namen als auch Berührungen mit einem Licht aufnehmen OK

und wir bekommen:

und so werden die Namen angewendet!

Ich habe das mit Ihren Daten und Namen versucht. Ja es funktioniert. Aber versuchen Sie es bitte mit meinen Daten / Namen, wenn Sie interessante Dinge sehen wollen. ZygD vor 8 Jahren 0
Ich versuche es später noch einmal ................. Ich werde versuchen, ein * Makro * zu erstellen, das Formeln in einem Zellenblock verarbeiten kann ....... ........... Gary's Student vor 8 Jahren 0
Hast du es versucht? Sind Sie nicht überzeugt, dass das Verhalten abgehört wird? ZygD vor 8 Jahren 0
@ZygD ..... Ich habe es ausprobiert ........... Ich kann es nicht zuverlässig schaffen ............ Ich schaue immer noch auf das Makro Ansatz... Gary's Student vor 8 Jahren 0
1
Raystafarian

Wie in der Codeüberprüfung hervorgehoben wurde, führt dies zu Problemen, wenn beispielsweise nach "A1" und "A10" usw. gesucht wird.

Okay, hier ist mein Versuch einer Umgehung. Dabei müssen Ihre Formeln stets absolute Referenzen verwenden . Es funktioniert bei benannten Bereichen, die größer als 1 Zelle sind.

Bitte beachten Sie, dass ich suche usedrange- aber Sie können dies durch Zurücksetzen einschränken 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 Referenzen verwenden, da beim Abrufen des benannten Bereichs RefersToRange.Addressein Bereichsobjekt zurückgegeben wird - nicht ein Bereich . Ich setze es also als Zeichenfolge. Ich denke, Sie könnten eine Funktion schreiben, die die $absoluten Referenzen entfernt, wenn Sie möchten.

das hat Spaß gemacht

Vielen Dank. Ich schätze Ihren Input sehr. Ich habe beide Beiträge gelesen (hier und in Code Review). Ich mag es, dass Sie Ihren Code dort hochgeladen haben und diese Leute sehr wertvolle Kommentare abgegeben haben (die Frage und die Antworten in CR wurden positiv bewertet). Ich habe auch Ihren Code analysiert. Meines Erachtens sind die Einschränkungen des Codes zu groß, daher würde ich ihn nicht in einer wichtigen Arbeitsmappe verwenden. Wie Sie sich selbst merken - der Fall von A1 und A10. ZygD vor 8 Jahren 0