Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Bedingte Formatierung Deutsch/Englisch

Bedingte Formatierung Deutsch/Englisch
21.12.2007 12:28:32
Thomas
Liebe Gemeinde ;o)
ich habe folgendes Problem: per VBA wird für eine Spalte eine bedingte Formatierung gesetzt. Die Zellen, die einen Eintrag haben, der in der Spalte bereits vorkommt, sollen z.B. rot werden.
Das geht wunderbar, wenn man unter "Bedingte Formatierung-Formel" folgende Formel eingibt:

=ZÄHLENWENN(A:A;A2)>1


bzw. per VBA:


Columns("B:B").FormatConditions.Add Type:=xlExpression, Formula1:="=UND(B1"""";ZÄHLENWENN(B:B;B1)1)"


Nun kommt das Problem: ich öffne die Datei in einer englischen Excel-Version und starte das Makro. Die bedingte Formatierung greift hier nicht, da "Zählenwenn" hier unbekannt ist, ebenso wie "CountIf" in der deutschen version unbekannt ist.
Weiß jemand Rat, wie ich mein Makro abändern muss, dass es in beiden Excel-Versionen funktioniert?
Vielen Dank schon mal,
Thomas

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bedingte Formatierung Deutsch/Englisch
21.12.2007 13:13:10
Daniel
Hi
das könnt im Prinzip so funktionieren:

Sub Makro1()
Dim strFormel As String
If True Then '--- hier muss die Prüfung auf die Sprachversion rein
strFormel "=UND(B1"""";ZÄHLENWENN(B:B;B1)1)"
Else
strFormel = "=AND(B1"""",COUNTIF(B:B,B1)1)"
End If
Columns("B:B").FormatConditions.Add Type:=xlExpression, Formula1:=strFormel
End Sub


wobei ich noch nicht weiß, wie eine clevere Lösung zur Sprachprüfung ausssieht.
das einzige, was mir so spontan einfällt, wäre, das du von einer Zelle mit bekannter Formel die .FormulaLocal-Eingenschaft abfragt (die müsste sich ja mit der Sprachversion ändern, also


if Range("x100").formulalocal like "=SummeWenn(*" then strFormel = Deutsche Formel
if Range("x100").formulalocal like "=CountIf(*" then strFormel = Englische Formel


also so in etwa. leider kann ich es bei mir nicht testen.
Gruß, Daniel

Anzeige
AW: Bedingte Formatierung Deutsch/Englisch
21.12.2007 13:22:00
Hajo_Zi
Hallo Daniel,
mal ein Vorschlag von Nepumuk auf den man aufbauen kann.
lege Zwei Tabellen an "Deutsch" und "Englisch"
Option Explicit

Private Sub Workbook_Open()
Worksheets(IIf(Application.International(xlCountrySetting) = 49, "Deutsch", "Englisch")). _
Visible = -1
Worksheets(IIf(Application.International(xlCountrySetting) = 49, "Englisch", "Deutsch")). _
Visible = 2
End Sub


Von Nepumuk

Anzeige
AW: Bedingte Formatierung Deutsch/Englisch
21.12.2007 13:54:19
Thomas
Hallo Daniel, hallo Hajo,
danke für eure Vorschläge. Mit IIF habe ich wieder etwas dazugelernt (danke!), aber das mit dem International zeigt leider keinen Unterschied bei beiden Versionen. Wieso auch immer, ich erhalte immer die 49, also Deutschland.
Bin also noch weiter am rumbasteln bze. für weitere Ideen offen.
Gruß,
Thomas

Anzeige
AW: Bedingte Formatierung Deutsch/Englisch
21.12.2007 14:07:00
IngGi
Hallo Thomas,
an Stelle der Formel für die Wahrheitsprüfung kannst du auch das Ergebnis der Wahrheitsprüfung (0 für FALSCH bzw. 1 für WAHR) in die bedingte Formatierung reinschreiben. Das Ergebnis ermittelst du dann in VBA per WorksheetFunction. Damit spielt dann die Sprachversion der Excelanwendung keine Rolle mehr, denn VBA spricht ja unabhängig davon immer englisch.
Statt

Columns("B:B").FormatConditions.Add Type:=xlExpression, Formula1:="=UND(B1"""";ZÄHLENWENN(B:B;B1)1)"


müsste es dann heißen:


Columns("B:B").FormatConditions.Add Type:=xlExpression, _
Formula1:=-(CInt(Range("B1")  "")) * _
CInt(Application.WorksheetFunction.CountIf(Range("B:B"), Range("B1")))


Gruß Ingolf

Anzeige
AW: Bedingte Formatierung Deutsch/Englisch
21.12.2007 14:25:00
Thomas
Hallo Ingolf,
erst war ich euphorisch, das hörte sich sehr gut an. Aber dann steht natürlich in der bedingten Formatierung immer der feste Wert drin, auch wenn sich der Wert in der Spalte nun ändert. Es ist also in dem Sinne keine bedingte Formatierung mehr, jedenfalls keine, die vom Wert anderer Zellen abhängt.
Gut, man könnte das jetzt verpacken in "WorksheetChange", aber das wird mir insgesamt zu aufwendig.
Bin also am Weiterbasteln.
Danke und Gruß,
Thomas

Anzeige
AW: Bedingte Formatierung Deutsch/Englisch
21.12.2007 15:00:00
IngGi
Hallo Thomas,
eine Möglichkeit fällt mir noch ein. Schreib die englische Formel über die .Formula-Eigenschaft in eine Dummyzelle und lies die Formel von dort über die .FormulaLocal-Eigenschaft wieder aus.

Range("A1").Formula="=AND(B1"""",COUNTIF(B:B,B1)1)"
Columns("B:B").FormatConditions.Add Type:=xlExpression, Formula1:=Range("A1").FormulaLocal
Range("A1").ClearContents

Gruß Ingolf

Anzeige
AW: Bedingte Formatierung Deutsch/Englisch
21.12.2007 15:17:00
Thomas
Hallo Ingolf,
danke, das ist ein guter Ansatz, auch wenn es noch nicht so ganz klappt (die Verweise stimmen noch nicht richtig). Aber wenigstens ist dadurch die Formel schon mal drin!!
Gruß und vielen Dank für deine Zeit und Mühe,
Thomas :o)

AW: Bedingte Formatierung Deutsch/Englisch
21.12.2007 16:24:40
Daniel
Hi
hier schlägt der Unterschied zwischen Relativem und absolutem Zellbezug gnadenlos zu:
wenn du in Zelle A1 die Formel "=B1" reinschreibst, bedeutet das nicht:
hol mir den Zellwert aus B1 , sondern, hole den Wert aus der Zelle rechts neben mir.
wenn du das nach dieser Methode machst , dann muss die Formel in A1 entsprechend Heißen:

Range("A1").Formula="=AND(A1"""",COUNTIF(A:A,A1)1)" 


oder es muss absolut gesetzt werden:


Range("A1").Formula="=AND($B1"""",COUNTIF($B:$B,$B1)1)"


Gruß, Daniel

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Bedingte Formatierung in Excel für Deutsch und Englisch


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und erstelle eine neue Arbeitsmappe oder öffne eine bestehende.
  2. Gehe zu der Spalte, in der Du die bedingte Formatierung anwenden möchtest.
  3. Wähle die Zellen aus, die formatiert werden sollen.
  4. Klicke auf "Bedingte Formatierung" im Menüband.
  5. Wähle "Neue Regel" und dann "Formel zur Ermittlung der zu formatierenden Zellen verwenden".
  6. Gib die folgende Formel ein für die deutsche Version:
    =ZÄHLENWENN(A:A;A2)>1

    Für die englische Version:

    =COUNTIF(A:A,A2)>1
  7. Lege die Formatierung fest (z.B. rot färben) und klicke auf "OK".

Häufige Fehler und Lösungen

  • Problem: Die bedingte Formatierung greift nicht, wenn Du die Datei in einer anderen Sprache öffnest.

    • Lösung: Stelle sicher, dass Du die richtigen Formeln für die Sprache verwendest. In VBA kannst Du eine Sprachprüfung implementieren, um die Formel dynamisch anzupassen.
  • Problem: Die Formel funktioniert nicht, wenn Du die Sprache von Excel wechselst.

    • Lösung: Verwende die .FormulaLocal-Eigenschaft, um die Formel in der aktuellen Sprache auszulesen.

Alternative Methoden

Eine alternative Methode zur Implementierung der bedingten Formatierung ist die Verwendung von VBA. Hier ein Beispiel:

Sub SetzeBedingteFormatierung()
    Dim strFormel As String
    If Application.International(xlCountrySetting) = 49 Then
        strFormel = "=ZÄHLENWENN(B:B;B1)>1"
    Else
        strFormel = "=COUNTIF(B:B,B1)>1"
    End If
    Columns("B:B").FormatConditions.Add Type:=xlExpression, Formula1:=strFormel
End Sub

Diese Methode überprüft die Sprache und setzt die richtige Formel.


Praktische Beispiele

  • Beispiel 1: Du möchtest alle doppelten Einträge in Spalte B rot markieren.

    • Formel für Deutsch: =ZÄHLENWENN(B:B;B1)>1
    • Formel für Englisch: =COUNTIF(B:B,B1)>1
  • Beispiel 2: Wenn Du die Spalte A basierend auf den Werten in B formatieren möchtest:

    Range("A1").Formula = "=AND(B1<>"",COUNTIF(B:B,B1)>1)"

    Diese Formel kannst Du ebenfalls in die bedingte Formatierung einfügen.


Tipps für Profis

  • Verwende die .FormulaLocal-Eigenschaft in VBA, um Formeln in der aktuellen Sprache zu setzen und zu lesen.
  • Teste Deine Formeln in einer Dummy-Zelle, bevor Du sie in die bedingte Formatierung überträgst.
  • Nutze die Formeln für dynamische Bereiche, um die Flexibilität zu erhöhen.

FAQ: Häufige Fragen

1. Wie kann ich die Sprache von Excel feststellen? Du kannst die Eigenschaft Application.International(xlCountrySetting) verwenden, um die aktuelle Sprache von Excel zu ermitteln.

2. Gibt es eine Möglichkeit, die bedingte Formatierung in einer Datei für beide Sprachen zu speichern? Ja, indem Du VBA verwendest, kannst Du die Formeln entsprechend der Sprache setzen, wenn die Datei geöffnet wird.

3. Was ist der Unterschied zwischen ZÄHLENWENN und COUNTIF? ZÄHLENWENN ist die deutsche Funktion, während COUNTIF die englische Bezeichnung ist. Beide erfüllen die gleiche Funktion, haben jedoch unterschiedliche Syntax in den jeweiligen Sprachen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige