Komme aus VBA und möchte nach Java/js. Es geht um 2D-Arrays. Hört sich einfach an - ist es aber nicht, wenn man nur VBA kennt. Habe im iNet gesucht und nichts gefunden ... daher musste ich selbst basteln ...
Problem:
Problem:
- script für google Tabellen
- 2D-Array einlesen
- Daten per Schleife verändern
- in neues Array schreiben
- neues Array ausgeben
Java:
function MatrixLesenRechnenAusgeben(){
//erstellt: Martin Wilhelm (18.Sep.2017)
//Matrix-Daten aus dem sheet werden "mit einem Schlag" in Alt-Array eingelesen.
//Diese alten Daten werden per Schleife verändert, hier wird jeweils "2" addiert.
//Die veranderten alten Daten werden in ein Neu-Array geschrieben, in der gleichen Schleife.
//Neu-Array-Daten in einen beliebigen neuen Bereich im sheet schreiben.
var sheet =SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];//Abkurzung: sheet kurz per Pfad ansprechen
var AltStartZeile=6;//Alte Daten: Nr. der Start-Zeile
var AltStartSpalte=4;//Alte Daten: Nr der Start-Spalte
var AltDaten = [];//Alte Daten: 2D-Array
var ZeilenMatrix=4;//Matrix: Zeilenanzahl, in y-Richtung
var i=0;//Matrix,Schleife: Laufvariable Zeile, in y-Richtung
var SpaltenMatrix=5;//Matrix: Spaltenanzahl, in x-Richtung
var j=0;//Matrix,Schleife: Laufvariable Spalte, in x-Richtung
var NeuStartZeile=14;//Neue Daten: Nr. der Start-Zeile
var NeuStartSpalte=6;//Neue Daten: Nr der Start-Spalte
var Zielbereich;//Abkurzung: Schmiervariable, nur zur Verdeutlichung
var NeuDaten =[];//Neue Daten: 2D-Array
AltDaten=sheet.getSheetValues(AltStartZeile, AltStartSpalte, ZeilenMatrix, SpaltenMatrix);
//Alt-Array wird mit Daten aus sheet versehen
//Hier beginnt die aussere Schleife, um mit den Daten aus Alt-Array zu rechnen
for (var i=0;i<=ZeilenMatrix-1;i++) {
//der erste Array-Index beginnt mit 0 (i=0), i lauft hoch (i++) bis die Zeilenanzahl der Matrix erreicht ist (i=ZeilenMatrix), "-1" weil Indes bei 0 beginnt
NeuDaten[i] = [];
//Neu-Array als Zeile (1D-Array) initialisieren, das ist DER Unterschied zu VBA
for (var j=0;j<=SpaltenMatrix-1;j++) {
//hier beginnt die innere Schleife, Erklarung siehe aussere Schleife
NeuDaten[i][j]=AltDaten[i][j]+2;
//die Index-Variablen i und j laufen noch
//das neue 2D-Array wird mit Daten aus dem altem 2D-Array befullt, zusatzlich wird "2" addiert
Zielbereich = sheet.getRange(NeuStartZeile+i, NeuStartSpalte+j);
//Range im sheet wird laufend neu definiert, mit Start-Zeile/Spalte + i/j, i/j werden standig hochgezahlt
Zielbereich.setValue(NeuDaten[i][j]);
//in den Zielbereich werden standig die Daten aus dem neu berechneten Neu-Array geschrieben
}
//Ende der inneren Schleife (j)
}
//Ende der ausseren Schleife (i)
}
//Ende der function