coltseavers
Goto Top

Wie Datenstrukturen in Excel manipulieren?

Hallo zusammen,

ich habe eine Excel-Datei, bei der je Zeile verschiedene Manipulationen durchgeführt werden sollen.

Beispiel:
In Zeile 1 gibt es die Spalten A,B,C,D,E, F und G.
In jeder der Spalten E, F und G können Werte (Dezimalzahlen) stehen, müssen aber nicht.

Es soll nun geprüft werden, ob Werte in den Spalten vorhanden sind und wenn ja, dann soll je wertenthaltende Spalte eine neue Zeile entstehen.

Die Originalzeile ist also z.B. bei folgenden Spalten mit Werten belegt:
ABCDEFG

Entstehen sollen daraus 3 Zeilen:
ABCDE
ABCDF
ABCDG

(Die Daten sollen hinterher in ein Programm importiert werden, welches je Zeile nur einen Wert verarbeiten kann).

Nun meine Frage:
Wie macht man das generell in Excel? Gibts dafür Funktionen, oder macht man das mit VBA?
Ich erwarte natürlich keine komplette Lösung - aber wenn mich jemand in die richtige Richtung stupsen würde, käme ich damit schon weiter.

Vorhanden ist übrigens ein Excel 2010.

Vielen Dank vorab!

Gruß,
Colt

Content-Key: 518954

Url: https://administrator.de/contentid/518954

Printed on: April 23, 2024 at 13:04 o'clock

Member: TomTomBon
TomTomBon Nov 25, 2019 at 14:44:33 (UTC)
Goto Top
Moin Moin,

Aus einer Tabelle von mir:
=WENN(Hauptseite!B7<>"";(Hauptseite!A7&", "&Hauptseite!B7);"")  

(Hauptseite!B7 ist hier das erste Blatt, Zelle B7, kann damit auch eine normale Zelle stehen sprich ohne "Hauptseite!")

Ich tippere das entsprechend in die Zellen ein.
Die Wenn Abfrage bedeutet das er erst reagiert wenn IRGENDETWAS (nicht leer bedeutet <>"") drinnen steht.

Probiere mal aus.

Just my Senf
Tom
Mitglied: 141965
141965 Nov 25, 2019 updated at 15:38:13 (UTC)
Goto Top
VBA Variante
Sub ZeilenErstellen()
    Dim arrColumns As Variant, cell As Range, rngNewRow As Range, i As Integer
    arrColumns = Array("E", "F", "G")  
    With ActiveSheet
        For Each cell In .Range("A2:A" & .Cells(Rows.Count, "A").End(xlUp).Row)  
            For i = 0 To UBound(arrColumns)
                If .Cells(cell.Row, arrColumns(i)).Value <> "" Then  
                    Set rngNewRow = .Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)  
                    cell.Resize(1, 4).Copy Destination:=rngNewRow
                    .Cells(cell.Row, arrColumns(i)).Copy Destination:=rngNewRow.Offset(0, 4)
                End If
            Next
        Next
    End With
End Sub

back-to-topVor Makro

screenshot

back-to-topNach Makro Tabelle um Einträge ergänzt

screenshot
Member: TomTomBon
TomTomBon Dec 03, 2019 at 07:03:32 (UTC)
Goto Top
Moin Moin,

Chapeau.
Auf jeden Fall gehts du konkreter auf die Frage ein die sich mir nicht ganz erschloss face-smile
Mitglied: 141965
141965 Dec 03, 2019 at 08:50:22 (UTC)
Goto Top
Joa, und wenn der TO sich dann auch noch mal hierher bequemen würde, könnte man das ganze auch abschließen.
Member: TomTomBon
TomTomBon Dec 04, 2019 at 07:23:00 (UTC)
Goto Top
Tjoa

face-wink
Member: coltseavers
coltseavers Dec 07, 2019 at 21:59:23 (UTC)
Goto Top
Die Sache ist noch in Bearbeitung. Melde mich dazu noch.