Wie kann ich in einer Kalkulationstabelle (Excel, Google Docs, OpenOffice) Daten von Zeilen in Spalten umwandeln, jedoch nur Zellen, die nicht Null sind?

6087
NoCatharsis

Ich arbeite mit allen drei oben aufgeführten Tabellenkalkulationsprogrammen und glaube, dass meine Frage für alle drei gleich oder ähnlich beantwortet werden kann.

Auf meinem Blatt habe ich eine obere Reihe mit Spaltenüberschriften. Die zweite Zeile enthält Daten, die dem Spaltenkopf entsprechen, aber einige Zellen können leer sein oder nicht. Ich möchte die Daten in dieser zweiten Zeile transponieren, so dass die neue Spalte Nullzellen vollständig ignoriert.

Wenn ich zum Beispiel eine Zeile mit den Werten "A", NULL, "C", "D" in aufeinanderfolgenden Zellen habe, möchte ich so transponieren, dass die neue Spalte "A", "C", "D" mit erscheint Keine leere Zelle für NULL.

Ich hoffe, meine Beschreibung ist gut beschreibend. Vielen Dank.

2

5 Antworten auf die Frage

2
JDB

NoCatharsis,

Die einfache Antwort, die ich für Sie habe, ist Excel-spezifisch (Google Docs verfügte nicht über ähnliche Filter und die von Open Office mit Calc gefilterten Zellen):

1) Verwenden Sie "AutoFilter" (Daten> Filter> AutoFilter) und filtern Sie nach Nicht-Leerzeichen.

2) Restliche Zellen kopieren

3) Inhalte einfügen (Bearbeiten> Inhalte einfügen) und "Transponieren" aus den Optionen auswählen

JDB

1
Tim Lara

Ich kann mir keine Möglichkeit vorstellen, dies ohne Makroprogrammierung zu tun, daher bin ich nicht sicher über Google Docs oder OpenOffice, aber hier ist eine Möglichkeit, dies in Excel zu tun.

Dieses Makro setzt voraus:

  1. Ihre Daten befinden sich auf einem separaten Blatt mit dem Namen "Sheet1".
  2. Ihr Ziel ist ein leeres Blatt mit dem Namen "Sheet2".

Um das Makro zu verwenden, wählen Sie die Zeilen aus, die Sie in Sheet1 transponieren möchten, und führen Sie dann das Makro mit den markierten Zeilen aus. Die Ergebnisse sollten in Sheet2 kopiert werden.

Sub CopyNonNulls()  Dim DestinationCellAddress As String DestinationCellAddress = "A1"  Dim CurrentCellAddress As String CurrentCellAddress = DestinationCellAddress  For Each rw In Selection.Rows  For Each c In rw.Cells  If c.Value <> "" Then Worksheets("Sheet2").Range(CurrentCellAddress).Value = c.Value CurrentCellAddress = Worksheets("Sheet2").Range(CurrentCellAddress).Offset(1, 0).Address End If  Next  CurrentCellAddress = Worksheets("Sheet2").Range(DestinationCellAddress).Offset(0, 1).Address  Next  Worksheets("Sheet2").Select  End Sub 
1
AdamV

Angesichts des konkreten Beispiels, das mit einer Reihe beginnt und mit einer Spalte endet, würde ich die gleichen Schritte in umgekehrter Richtung ausführen, obwohl mir die Idee, ein gefiltertes Blatt zu erhalten, nicht gefällt. Wenn Sie die Daten sortieren können (dh die Reihenfolge spielt keine Rolle), würden alle Leerzeichen an einen Ort gelangen, an dem Sie die Zeilen löschen können.

Wie auch immer, ich schlage eine bessere Allround-Lösung mit erweiterten Filtern vor: Wählen Sie Ihre Zeile mit Originaldaten aus, kopieren Sie, wählen Sie eine Zelle irgendwo auf einem neuen Blatt mit mindestens einer leeren Zelle darüber aus, fügen Sie "Einfügen" ein, und klicken Sie auf "Übernehmen"

Jetzt haben Sie eine Spalte mit Lücken.

In der Zelle darüber geben Sie der Spalte eine Bezeichnung, sagen Sie "Daten". Machen Sie es fett (Strg-B), damit Excel erkennt, dass es sich um einen Titel handelt, auch wenn es sich um Text handelt, der wie der Rest der Spalte ist.

Geben Sie in einer anderen Zelle (z. B. zwei Zellen rechts) dieselbe Beschriftung und in der Zelle unter einem Sternchen (* - ein Platzhalter für später) ein. Wählen Sie Ihre Spalte mit allen Lücken und Kopfzeilen aus

Gehen Sie zur Registerkarte Daten> Gruppe sortieren und filtern und klicken Sie auf Erweiterter Filter.

Aktivieren Sie "An einen anderen Ort kopieren".

Überprüfen Sie, ob der "Listenbereich" Ihre ausgewählte Datenspalte enthält.

Klicken Sie auf die Schaltfläche "refedit" neben "Kriterienbereich" und wählen Sie die beiden zuvor erstellten Zellen mit der Kopfzeile und dem Platzhalter aus

Wählen Sie für den Bereich "Kopieren nach" eine beliebige Zelle in diesem Arbeitsblatt aus, z. B. ein paar Spalten nach rechts.

OK klicken.

Job erledigt. Sie haben jetzt einen neuen Satz zusammenhängender Daten und Sie können die anderen Spalten löschen.

Beachten Sie, dass Sie den erweiterten Filter nicht verwenden können, um die neue Liste auf ein anderes Blatt zu kopieren, es sei denn, Sie beginnen mit diesem Blatt und beginnen dann, um die Daten und Kriterien auszuwählen. Für einen schnellen und schmutzigen Ansatz ist dies viel einfacher.

1

Sie können dies über die TRANSPOSE-Funktion in Google Spreadsheets tun. Eine Erklärung dazu finden Sie hier: http://docs.google.com/support/bin/answer.py?hl=de&answer=71291

0
jmarston

Verwenden Sie eine Formel in einer neuen Gruppe von Zellen und Spalten =A270 | =A272 | =A274, und füllen Sie sie dann aus.

Es ordnet diese Spalte, zum Beispiel A, automatisch neu an, kopiert die Werte und fügt sie in ein neues Blatt ein.