Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1384to1388
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel VBA - primary key zum Kopieren von Spalten

Excel VBA - primary key zum Kopieren von Spalten
22.10.2014 14:26:28
Spalten
Hallo zusammen,
ich habe schon wieder eine Frage an euch... Ich hoffe, ihr könnt mir helfen :)
Ich habe eine Ausgangstabelle, aus der ich die verschiedenen Spalten kopieren muss. Ausgangspunkt hierfür ist eine Kombination aus 2 verschiedenen Nummern, die ich gerne verbunden als primary key nutzen würde. Gibt es da eine einfache Möglichkeit oder muss ich die beiden aneinander hängen und als String (oder so) auslesen, um es als Verbindung zu nutzen?
Das Problem ist nämlich, dass nicht pro Auftragsnummer eine Zeile genutzt wird, sondern gesplittet nach den verschiedenen Unterkategorien...
Wäre super, wenn ihr mir damit helfen könntet! :) In den verschiedenen Online-Foren habe ich immer nur Antworten gefunden, die sich auf das Kopieren in eine Access bezogen haben. Meine Daten sollen allerdings wieder in Excel landen...
Vielen Dank schon mal und viele Grüße
Monika

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel VBA - primary key zum Kopieren von Spalten
22.10.2014 15:57:40
Spalten
Hallo Monika,
deine Fragestellung ist noch etwas verwirrend.
Falls noch kein eindeutiger Key in einer Spalte vorhanden ist, dann kann man sich ggf. durch zusammenfügen/vergleichen des Inhalts von 2 oder mehr Spalten einen eindeutigen Key kreieren.
Bei Nummern funktioniert dies jedoch nur zu 100% wenn die Zahlen in den Spalten jeweils gleichviele Ziffern haben (ggf. mit führenden Nullen aufüllen). Alternativ kann man zwischen den Inhalten der Key-Spalten auch ein Sonderzeichen einfügen.
Beispiel:
Key 1	Key 2	P-Key	P-Key1	P-Key2	P-Key 3
9	10	910	00910	9|10	910
9	11	911	00911	9|11	911
91	1	911	09101	91|1	9101
2	1	21	00201	2|1	201
Formeln:
P-Key:	=A4&B4
P-Key1:	=TEXT(A4;"000")&TEXT(B4;"00")
P-Key2:	=A4 &"|" & B4
P-Key3:	=A4*100+B4

Die Formeln für Key (einfache String-Verkettung) liefern hier nicht immer eindeutige Keys.
P-Key1 und P-Key3 sind eindeutig für 3-Stellige Zahlen im 1. Teil-Key und 2-stellige Zahlen im 2. Teil-Key, wobei man mit dem Zahlen-Format bzw. dem Multiplikator für den 1. Teil-Key auch andere Zahlenbereiche abdecken kann.
Gruß
Franz

Anzeige
AW: Excel VBA - primary key zum Kopieren von Spalten
23.10.2014 08:18:38
Spalten
Hallo noch mal,
ja, die Nummern in einer Spalte haben jeweils immer gleich viele Ziffern.
Ich hatte auch schon überlegt, zu verketten, allerdings müsste ich ja dann eine neue Spalte anlegen - das wollte ich eigentlich vermeiden (oder kann ich das auch ohne Anlegen einer neuen Spalte?).
Ich versuche mich gerade daran, ein Makro zum kopieren der gewünschten Spalten zu schreiben und dachte, es gibt da vielleicht eine Möglichkeit, ohne die kombinierte Version der Nummern zwischenzuspeichern?
Danke und viele Grüße
Monika

AW: Excel VBA - primary key zum Kopieren von Spalten
23.10.2014 12:21:15
Spalten
Hallo Monika,
um Daten der Form
Key1	Key2	Wert1	Wert2	Wert3
1000	100	C001	D001	E001
1000	100	C002	D002	E002
1000	100	C003	D003	E003
1000	101	C004	D004	E004
1000	101	C005	D005	E005
1000	101	C006	D006	E006
1002	100	C007	D007	E007
1002	100	C008	D008	E008
1002	100	C009	D009	E009

umzusetzen in
P-Key	Key1	Key2	Wert11	Wert12	Wert13	Wert21	Wert22	Wert23	Wert31	Wert32	Wert33
1000100	1000	100	C001	D001	E001	C002	D002	E002	C003	D003	E003
1000101	1000	101	C004	D004	E004	C005	D005	E005	C006	D006	E006
1002100	1002	100	C007	D007	E007	C008	D008	E008	C009	D009	E009
funktioniert z.B. folgendes Makro.
Gruß
Franz
Sub aaTest()
Dim wksQuelle As Worksheet, Zeile_Q As Long
Dim strKey As String, ZeileSatz As Integer
Dim wksZiel As Worksheet, Zeile_Z As Long
Set wksQuelle = ActiveWorkbook.Worksheets(1)
Set wksZiel = ActiveWorkbook.Worksheets(2)
Zeile_Z = 1
With wksQuelle
For Zeile_Q = 2 To .Cells(.Rows.Count, 1).End(xlUp) + 1
If strKey  .Cells(Zeile_Q, 1).Text & .Cells(Zeile_Q, 2).Text Then
Zeile_Z = Zeile_Z + 1
strKey = .Cells(Zeile_Q, 1).Text & .Cells(Zeile_Q, 2).Text
ZeileSatz = 0
End If
ZeileSatz = ZeileSatz + 1
Select Case ZeileSatz
Case 1
.Range(.Cells(Zeile_Q, 1), .Cells(Zeile_Q, 5)).Copy wksZiel.Cells(Zeile_Z, 1)
Case 2
.Range(.Cells(Zeile_Q, 3), .Cells(Zeile_Q, 5)).Copy wksZiel.Cells(Zeile_Z, 6)
Case 3
.Range(.Cells(Zeile_Q, 3), .Cells(Zeile_Q, 5)).Copy wksZiel.Cells(Zeile_Z, 9)
Case 4
.Range(.Cells(Zeile_Q, 3), .Cells(Zeile_Q, 5)).Copy wksZiel.Cells(Zeile_Z, 12)
End Select
Next
End With
End Sub

Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige