Clever-Excel-Forum

Normale Version: Eine Zeile in mehrere aufteilen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Leute,

Ich komme einfach nicht voran. Ich probiere es nun seit zwei Tagen es will nicht so klappen wie ich möchte.

Ich hab folgende Tabelle:

SKU | KBA-Nr | OEM-Nr

In dieser Tabelle stehen natürlich Daten. Ich möchte jedoch für jede SKU einmal mit KBA und einmal mit OEM-Nr eine eigene Zeile erstellen. Quasi das Gegenstück zur Normalisierung einer Tabelle. Doppelte Werte also erwünscht. Sprich es muss folgendermaßen ausschauen:

Sku = 123456 Kba= 78910 
Sku = 123456 oEM = Muster 
Sku = 123456 kba = 109876 

usw. Also soll jede Zeile sku einmal mit kba und einmal mit der OEM Nr angezeigt werden. Davor soll auch eine Spalte mit dem Namen stehen also als Spalte vor dem Wert. Ich weiß nicht wie man das in VB realisiert. Jede Hilfe wäre erwünscht.

Mfg
Hallo

die Lösung könnte so aussehen, mal auf die Schnelle entwickelt. Unklar ist mir er Fall wenn SKU mit KBA und OEM zusammentrifft?
Dieses kleine Makro ist leicht zu verstehen, man kann noch eine dritte Auswertung für beide zusammen einbauen.  KBA + OEM

mfg Gast 123

Code:
Sub Spalten_auswertung()
Dim AC As Range, lz1 As Long
Dim KBA As String, OEM As String
    'Lastzell über Spalte oder UsedRange festlegen
    lz1 = UsedRange.Rows.Count   'oder
    lz1 = Cells(Rows.Count, 1).End(xlUp).Row
    'Schleife in Spalte A=SKU
    For Each AC In Range("A2:A" & lz1)
        If AC.Value = Empty Then
        'Keine Auswertung wenn SKU = leer ist
        ElseIf AC.Cells(1, 2) <> "" Then
           'schreibt SKU in Spalte E, KBA in Spalte F
           AC.Offset(0, 5).Value = AC.Value
           AC.Offset(0, 6).Value = AC.Cells(1, 2)
        ElseIf AC.Cells(1, 3) <> "" Then
           'schreibt SKU in Spalte E, OEM in Spalte F
           AC.Offset(0, 5).Value = AC.Value
           AC.Offset(0, 6).Value = AC.Cells(1, 3)
        End If
    Next AC
End Sub
Vielen Dank schonmal,

KBA und OEM können auch gleichzeitig in der Liste vorhanden sein. Dann soll er eine Zeile mit KBA und eine Zeile mit OEM bauen, mit SKU als Zeilenanfang versteht sich. Hilfreich wäre noch wenn er vor dem Wert noch eine Spalte einfügt mit dem "Namen" des eingefügten also entweder KBA oder OEM-NR.



MFG
Hallo

hier noch einmal die verbesserte Bersion mit Vollauswertung aller Kombinations Möglichkeiten. Xum Offset:  die Zahlen 5,6,7,8 zeigen an um wieviele Spalten der kopierte Wert von A1 nach rechts verschoben wird. Wenn du andere Spalten bevorzugst kannst du diese Zahlen selbst aendern. Oder den Code so schreiben:  Cells(AC.Row, "F") = "KBA & OEM  
Mit obiger Schreibweise kannst du selbst festlegen in welchen Spalten das Ergebnis stehen soll. Ich denke jetzt hast du einiges wissenswertes über VBA erfahren.

mfg Gast 123

Code:
Sub Spalten_auswertung_Full()
Dim AC As Range, lz1 As Long, Txt As String
Dim SKU As String, KBA As String, OEM As String
    'Lastzell über UsedRange festlegen
    lz1 = ActiveSheet.UsedRange.Rows.Count
    Range("F2:I" & lz1).ClearContents
    'Schleife für Spalte: SKU Text suchen
    For Each AC In Range("A2:A" & lz1)
        SKU = Trim(AC)
        KBA = AC.Cells(1, 2)
        OEM = AC.Cells(1, 3)
        'SKU gesetzt, mit KNA/OEM auswerten
        If SKU <> Empty Then
           If KBA <> "" And OEM = "" Then
              'schreibt SKU in Spalte F, KBA in Spalte G
              AC.Offset(0, 6).Value = SKU
              AC.Offset(0, 7).Value = KBA
              AC.Offset(0, 5).Value = "SKU & KBA"
           ElseIf KBA = "" And OEM <> "" Then
              'schreibt SKU in Spalte F, OEM in Spalte G
              AC.Offset(0, 6).Value = SKU
              AC.Offset(0, 7).Value = OEM
              AC.Offset(0, 5).Value = "SKU & OEM"
           ElseIf KBA <> "" And OEM <> "" Then
              'schreibt SKU in Spalte F, KBa in Spalte G, OEM in Spalte H
              AC.Offset(0, 6).Value = SKU
              AC.Offset(0, 7).Value = KBA
              AC.Offset(0, 8).Value = OEM
              AC.Offset(0, 5).Value = "SKU & KNA & OEM"
           End If
        'KMA + OEM Auswertung wenn SKU = leer ist
        ElseIf KBA <> "" And OEM <> "" Then
               AC.Offset(0, 6).Value = KBA
               AC.Offset(0, 7).Value = OEM
               AC.Offset(0, 5).Value = "KBA & OEM"
        End If
    Next AC
End Sub