Auflösung des großen Herbsträtsels
Ich habe vor zwei Wochen ein Rätsel gestellt: Finde die Wörter aus einer Liste heraus, die keine Funktionen in Excel sind:
Der Lösungssatz lautet:
Weil Schokolade so wenig Vitamine hat, muss man umso mehr davon essen.
21 korrekte Lösungen habe ich erhalten – die Schokolade ist verschickt – die meisten Tafeln sind schon angekommen und gefuttert.
Hier einige Ansätze, wie man prüfen kann, ob ein Wort eine Funktion in Excel darstellt:
1.) ChatGPT und Copilot helfen NICHT! Diese Varianten scheiden aus!
2.) Wenn man eine Liste der Funktionen von Excel hat, kann man diese natürlich gegen die Liste vergleichen, beispielsweise mit der Funktion ZÄHLENWENN
3.) Ich hätte das so gelöst:
Schritt 1: Die Liste mit der Funktion ZUSPALTE in eine Spalte konvertiert:
Diese kann man in die Form =HEUTE() bringen, indem man ein Gleichheitszeichen und eine Klammer hinzufügt:
Die Formeln werden kopiert und als Wert eingefügt. Nun liegen sie als Text vor. Sie sollen aber als Formeln in den Zellen stehen.
Das leistet der Assistent Daten / Text in Spalten – er schreibt die Texte in die Zellen:
Die Funktionen, die Parameter benötigen (beispielsweise SUMME, WENN, MONAT, …) werden als Text in die Zellen eingetragen, weil sie so nicht in der Zelle stehen können. Die Funktionen, die ohne Parameter auskommen (PI, BLATT, HEUTE, …) liefern berechnete Werte.
Die Funktionen, die nicht existieren, liefern den Fehlerwert
#NAME?
Man kann sie sichtbar machen, beispielsweise mit
=WENNFEHLER(WENN(FEHLER.TYP(D3)=5;"x";"");"")
Und nun filtern
=FILTER(B3:B530;E3:E530=“x“)
Und manuell in die richtige Reihenfolge bringen …
4.) Alternativ kann man es mit Power Query lösen. Die Liste entpivotieren, mit dem Gleichheitszeichen und einer Klammer und einem weiteren Zeichen verketten und – beispielsweise – mit dem Assistenten Daten / Text Spalten am zusätzlichen Zeichen trennen:
Die Funktion ISTFEHLER findet die Fehler, die man filtern kann:
5.) Eine Funktion EVALUATE gibt es in Excel nicht. Aber in den alten Excelmakros. Dort gibt es die Funktion AUSWERTEN:
Kapselt man das Ganze in einer LAMBDA-Funktion mit T(JETZT()), so dass eine Neuberechnung erzwungen wird, findet man schnell die #NAME?-Zellen:
Danke an Claus für diese clevere Lösung!
5.) Und schließlich – traditionell – mit VBA. Beispielsweise so:
Sub UngueltigeFinden()
Dim rngX As Range
Dim rngNeu As Range
Set rngNeu = Tabelle2.Range("B2:Q34")
On Error Resume Next
For Each rngX In rngNeu.Cells
Err.Clear
rngX.Formula2Local = "=" & Tabelle1.Range(rngX.AddressLocal) & "()"
If Err.Number = 0 Then 'die gültigen haben nämlich fast immer fehlende Argumente und lösen dadurch einen Fehler aus.
If rngX.Value = "#NAME?" Then 'davon sind aber nur die interessant, welche die "#NAME?"-Fehlermeldung machen, die anderen sind gültige ohne Argument wie "=Heute()"
rngX.Interior.Color = vbRed
Debug.Print Tabelle1.Range(rngX.AddressLocal).Value 'da sammle ich die Treffer
End If
End If
Next
End Sub
Vielen Dank an Lorenz für diese gute Lösung.
Danke an alle, die mitgeknobelt haben und Spaß dabei hatten.
Ich habe mir Schelte einstecken müssen, weil ich die allerneuesten Funktionen, die ICH in MEINEM Excel in Microsoft 365 hatte, verwendet habe. Tja – aber die konnte man ja im Internet finden …
Übrigens: einer hat folgende Lösung geliefert:
WEIL SO VITAMINE HAT SCHOKOLADE WENIG: UMSO MEHR MUSS MAN DAVON ESSEN
Ich konnte es mir nicht verkneifen zu fragen:
Merkwürdig du sprichst, aber verständlich schon es ist. Bei Joda du vielleicht gelernt hast die Sprache?