Registriert seit: 08.02.2021
Version(en): 2019
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
Registriert seit: 12.03.2016
Version(en): Excel 2003
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
Registriert seit: 08.02.2021
Version(en): 2019
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
Registriert seit: 12.03.2016
Version(en): Excel 2003
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