Excel Regex: Übereinstimmung von Zeichenfolgen mit regulären Ausdrücken

  • Teile Das
Michael Brown

In diesem Lernprogramm werden wir uns eingehend mit der Verwendung von Regex zum Abgleichen von Zeichenfolgen in Excel befassen.

Wenn Sie einen bestimmten Wert in einem Zellbereich suchen, verwenden Sie die MATCH- oder XMATCH-Funktion. Wenn Sie nach einer bestimmten Zeichenfolge in einer Zelle suchen, sind die FIND- und SEARCH-Funktionen sehr nützlich. Und woher wissen Sie, ob eine Zelle Informationen enthält, die mit einem bestimmten Muster übereinstimmen? Natürlich durch die Verwendung regulärer Ausdrücke. Aber Excel unterstützt von Haus aus keine Regexe! Keine Sorge, wir zwingen es dazu :)

    Excel VBA Regex-Funktion zum Abgleichen von Zeichenketten

    Wie aus der Überschrift hervorgeht, müssen Sie für die Verwendung regulärer Ausdrücke in Excel eine eigene Funktion erstellen. Glücklicherweise verfügt Excel VBA über eine integrierte RegExp Objekt, das Sie in Ihrem Code wie unten gezeigt verwenden können:

    Public Function RegExpMatch(input_range As Range, pattern As String , Optional match_case As Boolean = True ) As Variant Dim arRes() As Variant 'Array zum Speichern der Ergebnisse Dim iInputCurRow, iInputCurCol, cntInputRows, cntInputCols As Long 'Index der aktuellen Zeile im Quellbereich, Index der aktuellen Spalte im Quellbereich, Anzahl der Zeilen, Anzahl der Spalten On Error GoTo ErrHandlRegExpMatch = arRes Set regex = CreateObject ( "VBScript.RegExp" ) regex.pattern = pattern regex.Global = True regex.MultiLine = True If True = match_case Then regex.ignorecase = False Else regex.ignorecase = True End If cntInputRows = input_range.Rows.Count cntInputCols = input_range.Columns.Count ReDim arRes(1 To cntInputRows, 1 To cntInputCols) For iInputCurRow = 1 To cntInputRows ForiInputCurCol = 1 To cntInputCols arRes(iInputCurRow, iInputCurCol) = regex.Test(input_range.Cells(iInputCurRow, iInputCurCol).Value) Next Next RegExpMatch = arRes Exit Function ErrHandl: RegExpMatch = CVErr(xlErrValue) End Function

    Fügen Sie den Code in den VBA-Editor ein, und Ihre neue RegExpMatch Wenn Sie noch nicht viel Erfahrung mit VBA haben, ist dieser Leitfaden vielleicht hilfreich: Wie man VBA-Code in Excel einfügt.

    Hinweis: Nachdem Sie den Code eingefügt haben, speichern Sie Ihre Datei als makrofähige Arbeitsmappe (.xlsm).

    RegExpMatch-Syntax

    Die RegExpMatch prüft, ob ein Teil der Quellzeichenkette mit einem regulären Ausdruck übereinstimmt. Das Ergebnis ist ein boolescher Wert: TRUE, wenn mindestens eine Übereinstimmung gefunden wurde, ansonsten FALSE.

    Unsere benutzerdefinierte Funktion hat 3 Argumente - die ersten beiden sind erforderlich und das letzte ist optional:

    RegExpMatch(text, muster, [match_case])

    Wo:

    • Text (erforderlich) - eine oder mehrere Zeichenketten, in denen gesucht werden soll; kann als Zell- oder Bereichsreferenz angegeben werden.
    • Muster (erforderlich) - der zu übereinstimmende reguläre Ausdruck. Wenn ein Muster direkt in eine Formel eingefügt wird, muss es in doppelte Anführungszeichen gesetzt werden.
    • Match_case (optional) - legt die Art der Übereinstimmung fest. Wenn TRUE oder weggelassen (Standard), wird die Groß-/Kleinschreibung beachtet; wenn FALSE - wird die Groß-/Kleinschreibung nicht beachtet.

    Die Funktion funktioniert in allen Versionen von Excel 365, Excel 2021, Excel 2019, Excel 2016, Excel 2013 und Excel 2010.

    3 Dinge, die Sie über RegExpMatch wissen sollten

    Bevor wir zu den praktischen Berechnungen kommen, beachten Sie bitte die folgenden Punkte, die einige technische Fragen klären:

    1. Die Funktion kann eine Einzelzelle oder Bereich der Zellen Im letzteren Fall werden die Ergebnisse in den benachbarten Zellen in Form eines dynamischen Arrays oder eines Überlaufbereichs zurückgegeben, wie in diesem Beispiel gezeigt.
    2. Standardmäßig ist die Funktion Groß- und Kleinschreibung Um die Groß- und Kleinschreibung zu ignorieren, setzen Sie den Parameter match_case Aufgrund der Beschränkungen von VBA Regexp wird das Muster (?i), das die Groß-/Kleinschreibung nicht berücksichtigt, nicht unterstützt.
    3. Wenn kein gültiges Muster gefunden wird, gibt die Funktion FALSE zurück; wenn das Muster ist ungültig tritt ein #VALUE!-Fehler auf.

    Nachfolgend finden Sie einige Beispiele für Regex-Übereinstimmungen, die zu Demonstrationszwecken erstellt wurden. Wir können nicht garantieren, dass unsere Muster mit einer größeren Bandbreite von Eingabedaten in Ihren realen Arbeitsblättern fehlerfrei funktionieren. Bevor Sie sie in die Produktion einführen, sollten Sie unsere Beispielmuster unbedingt testen und Ihren Bedürfnissen entsprechend anpassen.

    Verwendung von Regex zum Abgleichen von Zeichenfolgen in Excel

    Wenn alle zu übereinstimmenden Zeichenfolgen das gleiche Muster haben, sind reguläre Ausdrücke eine ideale Lösung.

    Angenommen, Sie haben einen Bereich von Zellen (A5:A9), der verschiedene Details über einige Artikel enthält. Sie möchten wissen, welche Zellen SKUs enthalten. Unter der Annahme, dass jede SKU aus zwei Großbuchstaben, einem Bindestrich und drei Ziffern besteht, können Sie sie mit dem folgenden Ausdruck abgleichen.

    Muster : \b[A-Z]{2}-\d{3}\b

    Dabei steht [A-Z]{2} für 2 beliebige Großbuchstaben von A bis Z und \d{3} für 3 beliebige Ziffern von 0 bis 9. Das Zeichen \b bezeichnet eine Wortgrenze, d. h. eine SKU ist ein eigenständiges Wort und nicht Teil einer größeren Zeichenfolge wie 23-MAR-2022.

    Nachdem das Muster festgelegt wurde, können wir mit dem Schreiben einer Formel fortfahren. Die Verwendung einer benutzerdefinierten Funktion unterscheidet sich im Grunde nicht von einer nativen Funktion. Sobald Sie mit der Eingabe einer Formel beginnen, erscheint der Name der Funktion in der Liste, die von der Autovervollständigung von Excel vorgeschlagen wird. Es gibt jedoch einige Nuancen in Dynamic Array Excel (Microsoft 365 und Excel 2021) und im herkömmlichen Excel (2019 und ältere Versionen).

    Zeichenfolge in einer Zelle abgleichen

    Um eine Zeichenfolge in einer einzelnen Zelle abzugleichen, verweisen Sie im ersten Argument auf diese Zelle. Das zweite Argument soll einen regulären Ausdruck enthalten.

    =RegExpMatch(A5, "\b[A-Z]{2}-\d{3}\b")

    Das Muster kann auch in einer vordefinierten Zelle gespeichert werden, die mit einer absoluten Referenz ($A$2) gesperrt ist:

    =RegExpMatch(A5, $A$2)

    Nachdem Sie die Formel in die erste Zelle eingegeben haben, können Sie sie nach unten in alle anderen Zeilen ziehen.

    Diese Methode funktioniert hervorragend in alle Excel-Versionen .

    Zeichenfolgen in mehreren Zellen auf einmal abgleichen

    Um mehrere Zeichenfolgen mit einer einzigen Formel abzugleichen, geben Sie im ersten Argument einen Bereichsbezug an:

    =RegExpMatch(A5:A9, "\b[A-Z]{2}-\d{3}\b")

    Unter Excel 365 und Excel 2021 die dynamische Arrays unterstützen, funktioniert es so: Sie geben die Formel in die erste Zelle ein, drücken die Eingabetaste und die Formel wird automatisch in die darunter liegenden Zellen übertragen.

    Unter Excel 2019 und früher funktioniert sie nur als herkömmliche CSE-Array-Formel, die in einen Bereich von Zellen eingegeben und durch gleichzeitiges Drücken der Tasten Strg + Umschalt + Eingabe abgeschlossen wird.

    Regex für die Übereinstimmung mit der Nummer

    Um eine einzelne Ziffer von 0 bis 9 zu finden, verwenden Sie die \d Je nach Aufgabenstellung können Sie einen geeigneten Quantifizierer hinzufügen oder ein komplexeres Muster erstellen.

    Regex für die Übereinstimmung mit einer beliebigen Zahl

    Um eine beliebige Zahl beliebiger Länge zu finden, setzen Sie den Quantifizierer + direkt nach dem Zeichen /d ein, der besagt, dass nach Zahlen gesucht werden soll, die 1 oder mehr Ziffern enthalten.

    Muster : \d+

    =RegExpMatch(A5:A9, "\d+")

    Regex zum Abgleichen von Zahlen bestimmter Länge

    Wenn Ihr Ziel darin besteht, numerische Werte abzugleichen, die eine bestimmte Anzahl von Ziffern enthalten, dann verwenden Sie \d zusammen mit einem geeigneten Quantifizierer.

    Um zum Beispiel Rechnungsnummern zu finden, die aus genau 7 Ziffern bestehen, würden Sie \d{7} verwenden. Beachten Sie jedoch, dass 7 Ziffern überall in der Zeichenfolge übereinstimmen, einschließlich einer 10- oder 100-stelligen Zahl. Wenn dies nicht das ist, wonach Sie suchen, setzen Sie die Wortgrenze \b auf beide Seiten.

    Muster : \b\d{7}\b

    =RegExpMatch(A5:A9, "\b\d{7}\b")

    Regex zum Abgleich von Telefonnummern

    Da Telefonnummern in verschiedenen Formaten geschrieben werden können, erfordert ihr Abgleich einen anspruchsvolleren regulären Ausdruck.

    Im folgenden Datensatz wird nach 10-stelligen Zahlen gesucht, die in den ersten beiden Gruppen 3 Ziffern und in der letzten Gruppe 4 Ziffern enthalten. Die Gruppen können durch einen Punkt, einen Bindestrich oder ein Leerzeichen getrennt werden. Die erste Gruppe kann in Klammern eingeschlossen sein oder nicht.

    Muster: (\(\d{3}\)

    Wenn wir diesen regulären Ausdruck aufschlüsseln, erhalten wir folgendes Ergebnis:

    • Der erste Teil (\(\d{3}\)
    • Der Teil [-\.\s]? bedeutet 0 oder 1 Vorkommen eines beliebigen Zeichens in eckigen Klammern: Bindestrich, Punkt oder Leerzeichen.
    • Es folgt eine weitere Gruppe von 3 Ziffern d{3}, gefolgt von einem Bindestrich, Punkt oder Leerzeichen [\-\.\s]? die 0 oder 1 Mal vorkommen.
    • Auf die letzte Gruppe von 4 Ziffern \d{4} folgt eine Wortgrenze \b, um deutlich zu machen, dass eine Telefonnummer nicht Teil einer größeren Nummer sein kann.

    Mit der ursprünglichen Zeichenkette in A5 und dem regulären Ausdruck in A2 sieht die Formel wie folgt aus:

    =RegExpMatch(A5, $A$2)

    ... und funktioniert genau wie erwartet:

    Anmerkungen:

    • Internationale Codes werden nicht überprüft, so dass sie vorhanden sein können oder auch nicht.
    • In regulären Ausdrücken steht \s für ein beliebiges Leerzeichen wie ein Leerzeichen, einen Tabulator, einen Wagenrücklauf oder einen Zeilenumbruch. Um nur Leerzeichen zuzulassen, verwenden Sie [-\. ] anstelle von [-\.\s].
    • Regex für NICHT übereinstimmende Zeichen

      Um Zeichenketten zu finden, die ein bestimmtes Zeichen NICHT enthalten, können Sie negierte Zeichenklassen [^ ] verwenden, die auf alles passen, was NICHT in Klammern steht, z. B:

      • [^13] passt auf jedes einzelne Zeichen, das nicht 1 oder 3 ist.
      • [^1-3] passt auf jedes einzelne Zeichen, das nicht 1, 2 oder 3 ist (d.h. jede Ziffer von 1 bis 3).

      Nehmen wir an, Sie möchten in einer Liste von Telefonnummern diejenigen finden, die keine Landesvorwahl haben. Da jede internationale Vorwahl das +-Zeichen enthält, können Sie die Zeichenklasse [^\+] verwenden, um Zeichenketten zu finden, die kein Plus-Zeichen enthalten. Es ist wichtig zu wissen, dass der obige Ausdruck mit jedem einzelnen Zeichen übereinstimmt, das nicht + ist. Da eine Telefonnummer an einer beliebigen Stelle in einer Zeichenkette stehen kann, nichtnotwendigerweise ganz am Anfang, wird der *-Quantifizierer hinzugefügt, um jedes nachfolgende Zeichen zu prüfen. Die Start-^- und End-$-Anker stellen sicher, dass die gesamte Zeichenkette verarbeitet wird. Als Ergebnis erhalten wir den folgenden regulären Ausdruck, der besagt, dass "das +-Zeichen an keiner Stelle der Zeichenkette übereinstimmen darf".

      Muster : ^[^\+]*$

      =RegExpMatch(A5, "^[^\+]*$")

      Regex für NICHT übereinstimmende Zeichenfolge

      Obwohl es keine spezielle Syntax für reguläre Ausdrücke gibt, die nicht auf eine bestimmte Zeichenkette passen, können Sie dieses Verhalten durch Verwendung einer negativen Vorausschau emulieren.

      Angenommen, Sie möchten Zeichenketten finden, die enthalten nicht Dieser reguläre Ausdruck ist sehr nützlich:

      Muster : ^((?!Zitronen).)*$

      Offensichtlich ist hier eine Erklärung erforderlich. Der negative Lookahead (?!lemons) schaut nach rechts, um zu sehen, ob kein Wort "lemons" vorausgeht. Wenn "lemons" dort nicht vorkommt, dann passt der Punkt auf jedes beliebige Zeichen außer einem Zeilenumbruch. Der obige Ausdruck führt nur eine Prüfung durch, und der *-Quantifizierer wiederholt sie null oder mehr Mal, vom Anfang der durch ^ verankerten Zeichenfolge bis zum Ende der durch$.

      Um die Groß- und Kleinschreibung zu ignorieren, setzen wir das 3. Argument auf FALSE, damit unsere Funktion die Groß- und Kleinschreibung nicht berücksichtigt:

      =RegExpMatch(A5, $A$2, FALSE)

      Tipps und Hinweise:

      • Die obige Regex funktioniert nur für einzeilig Bei mehrzeiligen Zeichenketten passen die Zeichen ^ und $ auf den Anfang und das Ende jeder Zeile und nicht auf den Anfang und das Ende der Eingabezeichenkette, weshalb die Regex nur in der ersten Zeile sucht.
      • Zum Abgleich von Zeichenketten, die nicht starten mit einem bestimmten Text verwenden Sie einen regulären Ausdruck wie ^(?!Zitronen).*$
      • Zum Abgleich von Zeichenketten, die nicht enden mit einem bestimmten Text fügen Sie den Endstring-Anker in das Suchmuster ein: ^((?!lemons$).)*$

      Abgleich ohne Berücksichtigung der Groß-/Kleinschreibung

      In klassischen regulären Ausdrücken gibt es ein spezielles Muster für die Unterscheidung von Groß- und Kleinschreibung (?i), das in VBA RegExp nicht unterstützt wird. Um diese Einschränkung zu umgehen, akzeptiert unsere benutzerdefinierte Funktion das dritte optionale Argument namens match_case Um die Groß- und Kleinschreibung nicht zu berücksichtigen, setzen Sie ihn einfach auf FALSE.

      Angenommen, Sie möchten Datumsangaben wie 1-MÄR-22 oder 01-MÄR-2022 identifizieren. Um die tt-mmm-jjjj und d-mmm-yy Formaten verwenden wir den folgenden regulären Ausdruck.

      Muster : \b\d{1,2}-(Jan

      Unser Ausdruck sucht nach einer Gruppe von 1 oder 2 Ziffern, gefolgt von einem Bindestrich, gefolgt von einer der Monatsabkürzungen, getrennt durch

      Warum nicht ein einfacheres Muster wie z. B. \d{1,2}-[A-Za-z]{3}-\d{2,4}\b verwenden, um falsch positive Treffer wie 01-ABC-2020 zu vermeiden?

      Geben Sie das Muster in A2 ein, und Sie erhalten die folgende Formel:

      =RegExpMatch(A5, $A$2, FALSE)

      Regex zum Abgleich gültiger E-Mail-Adressen

      Wie allgemein bekannt, besteht eine E-Mail-Adresse aus 4 Teilen: Benutzername, @-Symbol, Domänenname (Mailserver) und Top-Level-Domäne (z. B. .com, .edu, .org usw.). Um die Gültigkeit der E-Mail-Adresse zu prüfen, müssen wir die obige Struktur mit regulären Ausdrücken nachbilden.

      Muster : \b[\w\.\-]+@[A-Za-z0-9]+[A-Za-z0-9\.\-]*[A-Za-z0-9]+\.[A-Za-z]{2,24}\b

      Um besser zu verstehen, was hier vor sich geht, sollten wir uns die einzelnen Teile genauer ansehen:

      • Benutzername kann Buchstaben, Zahlen, Unterstriche, Punkte und Bindestriche enthalten. Da \w auf jeden Buchstaben, jede Ziffer und jeden Unterstrich passt, ergibt sich folgender Regex: [\w\.\-]+
      • Domänenname können Groß- und Kleinbuchstaben, Ziffern, Bindestriche (jedoch nicht an erster oder letzter Stelle) und Punkte (im Falle von Subdomains) enthalten. Da Unterstriche nicht zulässig sind, verwenden wir anstelle von \w 3 verschiedene Zeichensätze: [A-Za-z0-9]+[A-Za-z0-9\.\-]*[A-Za-z0-9]+
      • Top-Level-Domain besteht aus einem Punkt gefolgt von Groß- und Kleinbuchstaben und kann zwischen 2 und 24 Buchstaben enthalten (die längste derzeit existierende TLD): \.[A-Za-z]{2,24}

      Hinweis: Das Muster setzt voraus, dass der Domänenname 2 oder mehr alphanumerische Zeichen enthält.

      Mit dem Originaltext in A5 und dem Muster in A5 nimmt die Formel diese Form an:

      =RegExpMatch(A5, $A$2)

      Sie können auch einen einfacheren regulären Ausdruck für die E-Mail-Validierung verwenden, der entweder einen Zeichensatz für Klein- oder Großbuchstaben enthält:

      Muster : \b[\w\.\-]+@[a-z0-9]+[a-z0-9\.\-]*[a-z0-9]+\.[a-z]{2,24}\b

      Aber machen Sie Ihre Formel unabhängig von der Groß- und Kleinschreibung:

      =RegExpMatch(A5, $A$2, FALSE)

      Excel IF-Formel mit Match Regex

      Da sich integrierte und benutzerdefinierte Funktionen gut vertragen, spricht nichts dagegen, sie zusammen in einer einzigen Formel zu verwenden.

      Um etwas zurückzugeben oder zu berechnen, wenn ein regulärer Ausdruck übereinstimmt, und etwas anderes, wenn er nicht übereinstimmt, betten Sie die benutzerdefinierte Funktion RegExpMatch in den logischen Text von IF ein:

      IF(RegExpMatch(...), [value_if_true], [value_if_false])

      Enthält beispielsweise eine Zeichenfolge in A5 eine gültige E-Mail-Adresse, können Sie "Ja" zurückgeben, ansonsten "Nein".

      =IF(RegExpMatch(A5, $A$2,), "Ja", "Nein")

      Zählen, ob Regex übereinstimmt

      Da die nativen Excel-Funktionen keine regulären Ausdrücke unterstützen, ist es nicht möglich, eine Regex direkt in die Funktion COUNTIS oder COUNTIFS einzugeben. Zum Glück können Sie diese Funktionalität mit unserer benutzerdefinierten Funktion emulieren.

      Angenommen, Sie haben einen Regex verwendet, um Telefonnummern abzugleichen und die Ergebnisse in Spalte B auszugeben. Um herauszufinden, wie viele Zellen Telefonnummern enthalten, brauchen Sie nur die WAHR-Werte in B5:B9 zu zählen, was mit der Standardformel COUNTIF leicht möglich ist:

      =COUNTIF(B5:B9, TRUE)

      Sie wollen keine zusätzlichen Spalten in Ihrem Arbeitsblatt? Kein Problem. Da unsere benutzerdefinierte Funktion mehrere Zellen gleichzeitig verarbeiten kann und die SUMME von Excel die Werte in einem Array addieren kann, gehen Sie wie folgt vor:

      • Übergeben Sie eine Bereichsreferenz an RegExpMatch, damit es ein Array von TRUE- und FALSE-Werten zurückgibt.
      • Verwenden Sie eine doppelte Negation (--), um die logischen Werte in Einsen und Nullen zu zwingen.
      • Holen Sie sich die Funktion SUMME, um die 1en und 0en im resultierenden Array zu addieren.

      =SUMME(--RegExpMatch(A5:A9, $A$2))

      Regex-Abgleich mit Ultimate Suite

      Die Benutzer unserer Ultimate Suite können vier leistungsstarke Regex-Funktionen nutzen, ohne VBA-Code zu ihren Arbeitsmappen hinzufügen zu müssen, da sie während der Installation des Add-Ins nahtlos in Excel integriert werden. Unsere benutzerdefinierten Funktionen werden von der standardmäßigen .NET RegEx-Engine verarbeitet und unterstützen klassische reguläre Ausdrücke mit vollem Funktionsumfang.

      So verwenden Sie die benutzerdefinierte Funktion RegexMatch

      Wenn Sie die neueste Version von Ultimate Suite installiert haben (2021.4 oder höher), können Sie in zwei einfachen Schritten eine Regex-Match-Formel erstellen:

      1. Auf der Ablebits Daten auf der Registerkarte Text Gruppe, klicken Sie auf Regex-Werkzeuge .

    • Auf der Regex-Werkzeuge gehen Sie wie folgt vor:
      • Wählen Sie die Quellzeichenketten aus.
      • Geben Sie Ihr Muster ein.
      • Wählen Sie die Spiel Option.
      • Um die Ergebnisse als Formeln und nicht als Werte zu erhalten, wählen Sie die Option Als Formel einfügen Kontrollkästchen.
      • Klicken Sie auf die Spiel Taste.

      Einen Moment später wird die AblebitsRegexMatch wird in eine neue Spalte rechts von Ihren Daten eingefügt.

      In der folgenden Abbildung prüft die Funktion, ob die Zeichenfolgen in Spalte A 7-stellige Zahlen enthalten oder nicht.

      Tipps:

      • Die Funktion kann sein eingefügt direkt in einer Zelle über den Standard Funktion einfügen Dialogfeld, wo es unter der Kategorie AblebitsUDFs .
      • Standardmäßig wird ein regulärer Ausdruck in die Formel eingefügt, aber Sie können ihn auch in einer separaten Zelle aufbewahren, indem Sie einen Zellverweis für das zweite Argument verwenden.
      • Standardmäßig ist die Funktion Groß- und Kleinschreibung Für den Abgleich ohne Berücksichtigung der Groß- und Kleinschreibung verwenden Sie das Muster (?i).

      Weitere Informationen finden Sie unter AblebitsRegexMatch-Funktion.

      So funktioniert der Abgleich mit regulären Ausdrücken in Excel. Ich danke Ihnen für die Lektüre und freue mich darauf, Sie nächste Woche in unserem Blog zu sehen!

      Verfügbare Downloads

      Excel Regex Match Beispiele (.xlsm Datei)

      Ultimate Suite 14 Tage voll funktionsfähige Version (.exe-Datei)

    Michael Brown ist ein begeisterter Technologie-Enthusiast mit einer Leidenschaft für die Vereinfachung komplexer Prozesse mithilfe von Softwaretools. Mit mehr als einem Jahrzehnt Erfahrung in der Technologiebranche hat er seine Fähigkeiten in Microsoft Excel und Outlook sowie Google Sheets und Docs verfeinert. Michaels Blog widmet sich dem Teilen seines Wissens und seiner Expertise mit anderen und bietet leicht verständliche Tipps und Tutorials zur Verbesserung von Produktivität und Effizienz. Egal, ob Sie ein erfahrener Profi oder ein Anfänger sind, Michaels Blog bietet wertvolle Einblicke und praktische Ratschläge, wie Sie diese wichtigen Softwaretools optimal nutzen können.