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

Ausgedruckt am: 29.03.2024 um 11:03 Uhr

Mitglied: TomTomBon
TomTomBon 25.11.2019 um 15:44:33 Uhr
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 25.11.2019 aktualisiert um 16:38:13 Uhr
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
Mitglied: TomTomBon
TomTomBon 03.12.2019 um 08:03:32 Uhr
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 03.12.2019 um 09:50:22 Uhr
Goto Top
Joa, und wenn der TO sich dann auch noch mal hierher bequemen würde, könnte man das ganze auch abschließen.
Mitglied: TomTomBon
TomTomBon 04.12.2019 um 08:23:00 Uhr
Goto Top
Tjoa

face-wink
Mitglied: coltseavers
coltseavers 07.12.2019 um 22:59:23 Uhr
Goto Top
Die Sache ist noch in Bearbeitung. Melde mich dazu noch.