Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Eine Zeile in mehrere aufteilen
#1
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
Antworten Top
#2
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
Antworten Top
#3
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
Antworten Top
#4
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
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste