Geometrische Objekte sind in diesem Blog nichts Neues. Du erinnerst dich vielleicht an die Kreis- und Dreiecksberechnungen.
Dieser Beitrag zeigt Berechnungen an der Kugel, d.h. an der Vollkugel und an der Halbkugel. Wie auch schon bei den Berechnungen am Kreis, erfolgt die Berechnung mit dem Radius und die Berechnung mit dem Durchmesser
Mit der bedingten Formatierung kannst du einige Effekte für deine Berichte oder Planungen erzielen, das hast du in vorangegangenen Beiträgen auf diesem Blog sehen können.
In diesem Beitrag geht es um eine weitere Möglichkeit. Es sollen nur obere oder untere Werte hervorgehoben werden.
Der Beitrag in der letzten Woche beschäftigte sich mit dem Ersetzen von Werten in Excel.
Mit dem heutigen Beitrag zeige ich dir das Ersetzen von Werten mit einem Makro in VBA. Dabei verwende ich die gleichen Beispiele wie im vorangegangenen Beitrag.
Im ersten Beispiel sollte „Düssel“ im Wort „Düsseldorf“ durch „Deggen“ ersetzt werden. „Düsseldorf steht z.B. in Zelle B119.
Das Makro dazu ist dieses:
Sub Ersetzen1() Cells(121,2).Formula=“=REPLACE(B119,1,6,““Deggen““)“ End Sub
In VBA wird für das Ersetzen die Methode REPLACE verwendet. Das Makro nimmt das Wort aus B119 (Düsseldorf), ersetzt die Zeichenfolge ab dem 1. Zeichen, insgesamt 6 Zeichen, durch das Wort „Deggen“ und trägt den neuen Begriff (Deggendorf) in B121 ein.
In einem zweiten Beispiel soll die Jahreszahl 2016 im abgebildeten Bereich durch 2017 ersetzt werden.
Die Umsetzung realisierst du mit diesem Makro:
Sub Ersetzen2() Dim rngZelle As Range For Each rngZelle in Range(„B58:B65“) rngZelle.Value=REPLACE(rngZelle.Value,“2016″,“2017″) Next rngZelle End Sub
Das Makro deklariert die Variable rngZelle. Mit einer For-Next-Schleife werden die Zellinhalte des Bereiches durch „2017“ ersetzt.
Das dritte Beispiel sieht ähnlich aus. Du markierst den Bereich B58:B65, Zellinhalt ist die Jahreszahl 2016. Mit diesem Makro wandelst du die Zahl 2016 in 2017 um:
Sub Ersetzen3() Dim rngZelle As Range For Each rngZelle in Selection rngZelle.Value=REPLACE(rngZelle.Value,“2016″,“2017″) Next rngZelle End Sub
Was ist anders als im zweiten Beispiel? Richtig, du ersetzt nicht die Werte in einem definierten Bereich, sondern in einem selektierten Bereich.
Im vierten Beispiel gibst du die alte und die neue Jahreszahl in separaten Zellen vor.
Und dies ist das Makro dazu:
Sub Ersetzen4() Dim rngZelle As Range Dim strAlt As String Dim strNeu As String strAlt=Range(„E82“) strNeu=Range(„E83“) For Each rngZelle in Selection rngZelle.Value=REPLACE(rngZelle.Value,strAlt,strNeu) Next rng>Zelle End Sub
Beachte bitte, dass auch hier wieder auf den selektierten Bereich abgestellt wurde.
Im fünften Beispiel verwendest du eine Inputbox zum Abfragen der alten und der neuen Jahreszahl.
Sub Erstezen5() Dim rngZelle As Range Dim strAlt As String Dim strNeu As String strAlt=Inputbox(„altes Jahr“,,“2016″) strNeu=Inputbox(„neues Jahr“,,“2017″) For Each rngZelle in Selection rngZelle.Value=REPLACE(rngZelle.Value,strAlt,strNeu) Next rngZelle End Sub
In einem letzten Beispiel geht es darum, die Jahreszahl „2015“ durch „2016“ und die Jahreszahl „2016“ durch „N.N.“ zu ersetzen. Das folgende Bild zeigt links den Zustand vor dem Makro und rechts danach:
Mit diesem Makro setzt du dein Vorhaben um:
Sub Ersetzen6() Dim rngZelle As Range For Each rngZelle in Range(„B93:B100“) If rngZelle.Value=“2016″ Then rngZelle=REPLACE(rngZelle.Value,“2016″,“N.N.“) End If If rngZelle.Value=“2015″ Then rngZelle=REPLACE(rngZelle.Value,“2015″,“2016″) End If Next rngZelle End Sub
Warum ersetzt du zuerst die Zahl „2016“? Bedenke, wenn du zuerst „2015“ durch „2016“ ersetzt, steht in jeder Zelle des Bereiches „2016“. Diese Zahl ersetzt du dann mit „N.N.“ Das Ergebnis wäre, dass in allen Zellen „N.N.“ steht.
Also ersetzt du zuerst „2016“ durch „N.N.“ und dann „2015“ durch „2016“.
Bei ganzen Spalten oder ganzen Zeilen gehst du analog vor. Was machst du mit der Funktion ERSETZEN bzw. REPLACE? Lasse es uns in einem Kommentar wissen.
Einzelne Werte in Excel-Arbeitsmappen können mit der Textfunktion ERSETZEN ausgetauscht werden. Die Funktion ersetzt auf der Grundlage der Anzahl von Zeichen, die du angibst, einen Teil einer Textzeichenfolge durch eine andere Textzeichenfolge.
Beispiel 1: In B4 steht die Textzeichenfolge „Düsseldorf“. Der Teil „Düssel“ soll durch „Deggen“ ersetzt werden.
=ERSETZEN(„Düsseldorf“;1;6;“Deggen“)
oder
=ERSETZEN(B4;1;6;“Deggen“)
Beispiel 2: In B19 steht „60708090“. Die 3. und 4. Ziffer soll durch „AB“ ersetzt werden.
=ERSETZEN(„60708090″;3;2;“AB“)
oder
=ERSETZEN(B19;3;2;“AB“)
Beispiel 3: In B34 steht der Begriff „Autobahnmeisterei“. Der gesamte Begriff soll durch den Begriff „Tiefbauamt“ ersetzt werden.
=ERSETZEN(„Autobahnmeisterei“;1;99;“Tiefbauamt“)
oder
=ERSETZEN(B34;1;99;“Tiefbauamt“)
Als Anzahl_Zeichen wird hier ohne zu zählen, 99 angenommen.
Wenn gezählt werden soll, wird zusätzlich die Funktion LÄNGE genutzt.
=ERSETZEN(B34;1;LÄNGE(B34);“Tiefbauamt“)
2. Ersetzen von Werten in einem Bereich
Angenommen, eine Tabelle enthält in einer Spalte mehrfach die Jahreszahl „2016“, die durch „2017“ ersetzt werden soll.
Markiere den Bereich B58:B65. Gehe im Menü Start / Bearbeiten auf „Suchen und Auswählen“, gebe als „Suchen nach“ den Text „2016“, als „Ersetzen durch“ den Text „2017“ ein und klicke auf „Alle ersetzen“.
Es folgt diese Mitteilung:
Im Bereich B58:B65 steht nun „2017“.
3. Ersetzen von Werten in einer Spalte oder Zeile
Angenommen, die Spalte M enthält unregelmäßig die Jahreszahl „2016“, die durch „2017“ ersetzt werden soll.
Markiere dazu die Spalte am oberen Rand (M).
Gehe im Menü Start / Bearbeiten auf „Suchen und Auswählen“. Gebe unter „Suchen nach“ das Jahr „2016“ und unter „Ersetzen durch“ das Jahr „2017“ ein. Klicke auf „Alle ersetzen“.
Alle Werte in Spalte M, die vorher die Jahreszahl 2016 enthielten, enthalten jetzt die Jahreszahl 2017.
Willst du Werte in einer gesamten Zeile ersetzen, klicke am linken Rand auf die Zeilenzahl und verfahre ebenso. Mehrspaltige und mehrzeilige Bereiche bearbeitest du analog.
Wenn in Berichten eine Bewertung von mehreren Ergebnissen untereinander vorgenommen werden soll, wird oftmals mit der Excel-Funktion RANG (bis Excel 2007) bzw. RANG.GLEICH (ab Excel 2010) gearbeitet.
So kann es aber vorkommen, dass mehrere Ergebnisse gleichlautend sind. Die RANG-Funktion gibt dann den höheren Rang aus. Haben z.B. zwei Ergebnisse den Rang 3, wird der 4. Rang übersprungen.
Ein kleines Beispiel:
Der Rang wurde mit dieser Formel berechnet:
=RANG.GLEICH(C7;$C$6:$C$12;0)
Du siehst, Rang 4 ist doppelt, Rang 5 gar nicht vorhanden.
Üblicherweise wird in der Praxis mit einer Hilfsspalte dem Umsatz ein sehr kleiner Wert hinzugefügt. Den kannst du mit
=ZEILE()/1000000
berechnen.
Den Rang 2 errechnest du dann mit:
=RANG.GLEICH(E6;$E$6:$E$12;0)
Nun sind alle Ränge von 1 bis 7 vorhanden, es gibt keine Dopplungen mehr.
Versehe jetzt den Umsatz noch mit dem Zahlenformat #.##0
Wenn ein zweites Kriterium vorhanden ist
Für die Fußballvereine, egal welcher Liga, und für die Fußballfans ist die Abschlusstabelle schon fast ein Heiligtum.
In einem früheren Beitrag habe ich eine Excel-Variante zum Führen einer solchen Tabelle für die 1. Bundesliga schon einmal vorgestellt. Der letzte Schritt bei allen Berechnungen war die Bestimmung des Ranges eines jeden Vereins.
In diesem Beitrag soll es weniger um Fußball, von dort kommt nur dieses geeignete Beispiel, sondern mehr um die Excel-Funktion RANG.GLEICH gehen.
Ganz wichtig dabei ist, wie der Rang bestimmt werden kann, wenn zwei Mannschaften zunächst gleichrangig sind.
Als Beispiel nutze ich die „Abschlusstabelle der 1. Bundesliga – Saison 2016 / 2017“, die ich bei BuLi-Box [1] gefunden habe.
Ausgehend von der anfänglichen Mannschaftsaufstellung für die Saison habe ich die Punkte entnommen und hier zusammengestellt:
Zu sehen ist, dass es zwei 5., zwei 8. , zwei 13. und zwei 15. Plätze gibt. So ist das nicht gewollt, ich will nur eindeutige Werte von 1 bis 18 haben.
Was kann getan werden?
Die Regeln der Liga besagen, dass zur Rangbestimmung bei Punktgleichheit zunächst noch die Tordifferenz ( geschossene abzgl. empfangene Tore) zu berücksichtigen ist.
Ich entnehme deshalb aus der Abschlusstabelle die Tordifferenzen und füge sie in meine Tabelle ein.
Dann bilde ich jeweils eine Summe aus Punkte und Tordifferenz, für die ich dann den Rang bestimmen will.
Die Summe errechne ich mit der Formel:
=C3+(E3/100)
wobei ich den Tordifferenzen durch die Division durch 100 eine geringere Gewichtung gebe, denn zuerst entscheiden die Punkte, dann die Differenzen.
Schließlich füge ich die Spalte Rang 2 hinzu und rechne mit der Formel
=RANG.GLEICH(F3;$F$3:$F$20;0)
die ich bis F20 herunter ziehe, die Ränge.
Zum Schluss erstelle ich noch die Abschlusstabelle, die mit den Angaben zu Rang, Mannschaft, Punktezahl und Tordifferenz, die endlich so aussieht:
Die Spalte Rang erstelle ich zuerst manuell und hole die zugehörigen Inhalte mit der Funktion BEREICH.VERSCHIEBEN aus der vorangegangenen Tabelle.
Jetzt entsprechen die Rangzahlen der „amtlichen“ Abschlusstabelle von BuLi-Box.