Verschieben Sie einen Block von 1000 Zeilen in eine neue Spalte in Excel

Verschieben Sie einen Block von 1000 Zeilen in eine neue Spalte in Excel

Eine mechanische Prüfmaschine gibt pro Test 1000 Datenzeilen (+ eine Kopfzeile) in 4 Spalten aus. Allerdings gibt sie den zweiten Test ab Zeile 1002 aus, den dritten Test ab Zeile 2003 und so weiter. Ich muss jeden Block von 1001 Zeilen (in 4 Spalten) verschieben, um in einer neuen Spalte bei Zeile 1 zu beginnen. Test 1 sollte Spalte AD sein, Test 2 sollte Spalte EH sein und so weiter.

Jede Hilfe wäre willkommen

Excel-Bild

Antwort1

Die Ausgabe erfolgt auf einem separaten Arbeitsblatt.

Angenommen, Sie haben 10 Datenblöcke. Diese liegen im Bereich Export_Curve_03!A1:D10010.

Fügen Sie in Zelle A1 Ihres Ausgabearbeitsblattes die Formel hinzu

=INDEX(Export_Curve_03!$A$1:$D$10010,ROW(A1)+1001*INT((COLUMN(A1)-1)/4),1+MOD(COLUMN(A1)-1,4)

Kopieren Sie diese Formel nach unten bis zur Zeile 1001 und quer, um genügend Spalten auszuwählen – 40 Spalten im Fall von 10 Datenblöcken, also kopieren Sie sie in den Bereich A1:AN1001.

Die Konvertierung ist vermutlich nur einmal für jeden Satz Eingabedaten erforderlich. Wenn also Speicherplatz ein Problem darstellt, würde ich vorgehen, alles auf dem Ausgabearbeitsblatt mithilfe von „Inhalte einfügen“ in Werte zu ändern.

Erläuterung

Die INDEXFunktion wird verwendet, um einzelne Zellen aus einem Array auszuwählen und hat, wie oben verwendet, die allgemeine Form, INDEX(array,i, j)die den Wert in der i-ten Zeile und j-ten Spalte des Arrays darstellt.

Die Ausgabe wird Export_Curve_03!$A$1:$D$10010in Blöcke von 1001 Zeilen aufgeteilt, wobei der erste Block in den Spalten AD der Ausgabe steht, der zweite in den Spalten EH, der dritte in den Spalten IL usw. Eine Zelle in der Ausgabe kann also mit der Eingabeblocknummer abgeglichen werden, indem der Ausdruck

INT((COLUMN(cell)-1)/4)

wobei celleine Zellreferenz wie A805 oder X20 angibt

Tatsächlich wird dieser Ausdruck als 0 für eine Zelle in den Spalten AD, 1 für eine Zelle in EH, 2 für eine Zelle in IL usw. ausgewertet. Dies ist 1 weniger als die Blocknummer, was praktisch ist, da die Einbeziehung in den Ausdruck

ROW(cell)+1001*INT((COLUMN(cell)-1)/4)

identifiziert die richtige Zeilennummer aus der Eingabe, die einer Zelle der Ausgabe entspricht.

Die erforderliche Spaltennummer der Eingabe, die zu einer Spalte der Ausgabe passt, erhält man durch Wiederholen des Musters 1,2,3,4,1,2,3,4,... über alle Spalten der Ausgabe, beginnend mit 1 in Spalte A.

Der Ausdruck

1+MOD(COLUMN(cell)-1,4)

identifiziert effektiv die Spalte der Eingabe (1, 2, 3 oder 4), die einer Zelle in der Ausgabe entspricht.

Die beiden Ausdrücke für die Zeile und die Spalte der Eingabe, die einer beliebigen Ausgabezelle entsprechen, können nun in die INDEX-Funktion eingesetzt werden, womit die Erklärung abgeschlossen ist.

verwandte Informationen