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

Forumthread: Google Sheets Makro nur auf markierten Bereich?

Google Sheets Makro nur auf markierten Bereich?
29.05.2019 11:00:24
Stella
Ein herzliches Hallo an alle!
Ich möchte mehrere Makros in Google Tabellen hinsichtlich bedingter Formatierung hinterlegen.
Wie schaffe ich es, dass das folgende Makro sich auf alle Zellen des zuvor markierten Bereichs bezieht?
1. Also Bereich markieren
2. Makro starten
3. fertig

Hier mein Makro:

function EabwechselndeCluster() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('A4').activate();
var currentCell = spreadsheet.getCurrentCell();
spreadsheet.getSelection().getNextDataRange(SpreadsheetApp.Direction.DOWN).activate();
currentCell.activateAsCurrentCell();
currentCell = spreadsheet.getCurrentCell();
spreadsheet.getSelection().getNextDataRange(SpreadsheetApp.Direction.NEXT).activate();
//Formatformel
var conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
conditionalFormatRules.push(SpreadsheetApp.newConditionalFormatRule()
.setRanges([spreadsheet.getActiveRange()])
.whenFormulaSatisfied('=MOD(SUMPRODUCT(N($E$2:$E3$E$3:$E4));2)=1')
.setBackground('#FFD966')
.build());
spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
var conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
conditionalFormatRules.push(SpreadsheetApp.newConditionalFormatRule()
.setRanges([spreadsheet.getActiveRange()])
.whenFormulaSatisfied('=MOD(SUMPRODUCT(N($E$2:$E3$E$3:$E4));2)=0')
.setBackground('#B7E1CD')
.build());
spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
};
Ich freue mich sehr über Erleuchtung und Hilfe!
Habe schon 2h im Internet recherchiert, aber ich wurde leider nicht fündig...
Vielen Dank Euch :)

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Falsche Baustelle?
31.05.2019 13:47:31
mmat
Hallo,
was ist das denn? Die Skriptsprache ist mir vollkommen unbekannt.
Ich würde mal vermuten, dass ".setRanges([spreadsheet.getActiveRange()])" irgendwie zu ersetzen ist, also würd ich mal gucken was das Objekt "Spreadsheet" für Eigenschaften und Methoden hat, die passen könnten (oder eine diesbezügliche Anfrage in einem diesbezüglichen Forum stellen.)
Vielleicht ist es auch hilfreich, den markierten Bereich in eine Zelle zu schreiben.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not (Intersect(Target, Range("A1")) Is Nothing) Then Exit Sub
Cells(1, 1) = Target.Address
End Sub
vg, MM
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Google Sheets Makro für bedingte Formatierung im markierten Bereich


Schritt-für-Schritt-Anleitung

Um ein Makro in Google Sheets zu erstellen, das sich auf einen markierten Bereich bezieht, kannst du das folgende Skript verwenden. Stelle sicher, dass du die Google Sheets Makros aktiviert hast.

  1. Bereich markieren: Öffne dein Google Sheet und markiere den Bereich, auf den die bedingte Formatierung angewendet werden soll.
  2. Makro erstellen: Gehe zu Erweiterungen > Apps Script.
  3. Skript eingeben: Füge das folgende Skript in den Code-Editor ein:

    function EabwechselndeCluster() {
       var spreadsheet = SpreadsheetApp.getActive();
       var range = spreadsheet.getActiveRange(); // Aktuellen Bereich abrufen
    
       var conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
       conditionalFormatRules.push(SpreadsheetApp.newConditionalFormatRule()
           .setRanges([range])
           .whenFormulaSatisfied('=MOD(SUMPRODUCT(N($E$2:$E3,$E$3:$E4));2)=1')
           .setBackground('#FFD966')
           .build());
       conditionalFormatRules.push(SpreadsheetApp.newConditionalFormatRule()
           .setRanges([range])
           .whenFormulaSatisfied('=MOD(SUMPRODUCT(N($E$2:$E3,$E$3:$E4));2)=0')
           .setBackground('#B7E1CD')
           .build());
    
       spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
    }
  4. Makro speichern: Speichere das Skript und schließe den Editor.
  5. Makro ausführen: Kehre zu deinem Google Sheet zurück, gehe zu Erweiterungen > Makros und wähle dein Makro aus.

Jetzt wird die bedingte Formatierung auf den markierten Bereich angewendet.


Häufige Fehler und Lösungen

  • Fehler: "getActiveRange" funktioniert nicht
    Lösung: Stelle sicher, dass du einen Bereich markiert hast, bevor du das Makro ausführst.

  • Fehler: Bedingte Formatierung wird nicht angewendet
    Lösung: Überprüfe die Formeln in .whenFormulaSatisfied(), um sicherzustellen, dass sie korrekt sind.

  • Fehler: Skript kann nicht gespeichert werden
    Lösung: Prüfe, ob du die nötigen Berechtigungen hast, um Skripte in diesem Dokument zu speichern.


Alternative Methoden

Wenn du keine Makros verwenden möchtest, kannst du die bedingte Formatierung auch direkt über die Benutzeroberfläche von Google Sheets einstellen:

  1. Markiere den gewünschten Bereich.
  2. Gehe zu Format > Bedingte Formatierung.
  3. Wähle die Regel aus und gib die Formel ein.
  4. Klicke auf "Fertig".

Diese Methode ist weniger flexibel, bietet aber eine einfache Möglichkeit, ohne Makros zu arbeiten.


Praktische Beispiele

  • Beispiel für bedingte Formatierung: Wenn du die Zellen in Spalte A basierend auf den Werten in Spalte E formatieren möchtest, kannst du die oben genannten Formeln anpassen, um die gewünschten Bedingungen zu erfüllen.

  • Druckbereich festlegen: Um den Druckbereich in Google Tabellen festzulegen, gehe zu Datei > Drucken, und wähle die Option "Druckbereich anpassen". Hier kannst du den gewünschten Bereich markieren.


Tipps für Profis

  • Nutze Bedingte Formatierung in Verbindung mit Makros, um dynamische Berichte zu erstellen.
  • Experimentiere mit verschiedenen Formeln in der bedingten Formatierung, um komplexe Bedingungen zu definieren.
  • Halte dein Makro übersichtlich und gut dokumentiert, sodass du es bei Bedarf leicht anpassen kannst.

FAQ: Häufige Fragen

1. Kann ich Makros in Google Sheets wie in Excel verwenden?
Ja, Google Sheets unterstützt Makros, allerdings in einer anderen Skriptsprache (Google Apps Script).

2. Wie kann ich mehrere Bereiche in einem Makro ansprechen?
Du kannst die setRanges() Methode mit einem Array von Bereichen verwenden, z.B. setRanges([range1, range2]).

3. Was ist der Unterschied zwischen Google Sheets und Excel Makros?
Excel verwendet VBA für Makros, während Google Sheets Google Apps Script verwendet, was auf JavaScript basiert.

4. Wie kann ich den Druckbereich in Google Sheets festlegen?
Gehe zu Datei > Drucken und wähle die Option "Druckbereich anpassen", um den gewünschten Bereich zu markieren.

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