Supportnet / Forum / Tabellenkalkulation
bestimmte Excel-zellen zuordnen
Frage
Hallo,
Ich habe eine Tabelle mit vielen Spalten, aus denen will ich nur bestimmte Zellen in eine Andere Tabelle übertragen / zuordnen.
Z.B:
Tab1 enthält eine SpalteD genannt "Pos.", Spalte E "Beschreibung" und Spalte F "Preis".
Tab2 enthält eine SpalteX "KPos" , eine SpalteZ "Text" und eine Spalte Y "EUR".
Wenn ich in Tabelle 1 in SpalteD je Zeile eine Kennung für die "KPos" eingebe (z.B. A), sollen alle Zeilen von Tab2 (mit Kennung "A")in Tab1 kopiert werden unter berücksichtigung, das nur die Zellen der definierten Spalte den in Tab 1 definierten Spalten zugeordnet werden.
Das gleiche soll für alle Kennungen möglich sein, die identisch mit "KPos" sind und in Tab1 nacheinander eingetragen werden( Bei "B" z.B. alle Zeilen mit Zellinhalten u.s.w).
Ich denke ein VBA-Makro könnte da helfen.
Habe das von nighty mal probiert, geht gut die Zeilen mit"x" kennzeichnen, allerdings werden dann alle Spalteninhalte rüberkopiert.
Dank im voraus
Antwort 1 von coros
Moin Martin,
ich habe da mal einen Lösungsvorschlag. Kopiere das nachfolgende Makro in ein Standardmodul.
Nachfolgenden Code kopiere bitte in das VBA Projekt Deiner Tabelle1.
Es wird jetzt, immer wenn Du in Spalte D einen Buchstaben eingibst, in Tabelle2 verglichen, ob es diese Position gibt und dann die Werte in die entsprechenden Spalten kopiert.
Ich hoffe, Du kommst klar. Bei Fragen oder Problemen melde Dich noch mal.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
ich habe da mal einen Lösungsvorschlag. Kopiere das nachfolgende Makro in ein Standardmodul.
Sub Kopieren()
Dim Kriterium As String, ZeileTab1 As Long, ZeileTab2 As Long, _
Wiederholungen As Long, Vergelich As String
ZeileTab1 = Worksheets(2).Range("X65536"). _
End(xlUp).Offset(1, 0).Row
Kriterium = Worksheets("Tabelle1").Range("D65536").End(xlUp)
Worksheets("Tabelle1").Range("D65536").End(xlUp).Delete
For Wiederholungen = 2 To ZeileTab1 Step 1
Vergleich = Cells(Wiederholungen, 24)
If Worksheets(2).Cells(Wiederholungen, 24) = Kriterium Then
ZeileTab2 = Worksheets("Tabelle1").Range("D65536"). _
End(xlUp).Offset(1, 0).Row
Worksheets(2).Cells(Wiederholungen, 24).Copy _
Worksheets(1).Cells(ZeileTab2, 4)
Worksheets(2).Cells(Wiederholungen, 25).Copy _
Worksheets(1).Cells(ZeileTab2, 5)
Worksheets(2).Cells(Wiederholungen, 26).Copy _
Worksheets(1).Cells(ZeileTab2, 6)
End If
Next Wiederholungen
End SubNachfolgenden Code kopiere bitte in das VBA Projekt Deiner Tabelle1.
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Column = 4 Then
Call Kopieren
End If
Application.EnableEvents = True
End SubEs wird jetzt, immer wenn Du in Spalte D einen Buchstaben eingibst, in Tabelle2 verglichen, ob es diese Position gibt und dann die Werte in die entsprechenden Spalten kopiert.
Ich hoffe, Du kommst klar. Bei Fragen oder Problemen melde Dich noch mal.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 2 von Martin Kletscher
HAllo COROS,
danke für die schnelle Antwort, hat mich echt übergerascht.
vom Ansatz her sehr gut, allerdings löscht er mir immer die 1. Zeile in Tabelle1.
Beim Kopieren von Tab2 werden die Zellen X,Y,Z in Tab1 den Zellen D,E,F zugeordnet und nicht X,Z,Y den Zellen D,E,F.
Also, schön wäre eine solche Bedingung:
Kopiere die entspr. Zellen von Tab2 in Tab1, wenn eine Zelle "Spaltenüberschrift_TAB1" verweist auf "Spaltenüberschrift_TAB2" in das Makro eingetragen / definiert werden kann.
dann kann ich das für beliebige viele Spalten definieren.
Gruß Martin
danke für die schnelle Antwort, hat mich echt übergerascht.
vom Ansatz her sehr gut, allerdings löscht er mir immer die 1. Zeile in Tabelle1.
Beim Kopieren von Tab2 werden die Zellen X,Y,Z in Tab1 den Zellen D,E,F zugeordnet und nicht X,Z,Y den Zellen D,E,F.
Also, schön wäre eine solche Bedingung:
Kopiere die entspr. Zellen von Tab2 in Tab1, wenn eine Zelle "Spaltenüberschrift_TAB1" verweist auf "Spaltenüberschrift_TAB2" in das Makro eingetragen / definiert werden kann.
dann kann ich das für beliebige viele Spalten definieren.
Gruß Martin
Antwort 3 von coros
Hi Martin,
hier der geänderte Code, der nicht mehr die erste Zeile löscht und die entsprechnede Zellzuweisung hat. Das die erste Zeile immer gelöscht wurde lag daran, dass ich davon ausgegangen bin, dass Du in einer Zelle in Spalte D den Buchstaben eingibst und dann sollen die Daten kopiert werden, aber ohne dass der eingegebene Buchstabe stehen bleibt. Deshalb habe ich diesen eingegebenen Buchstaben immer mit der Zeile
Worksheets("Tabelle1").Range("D65536").End(xlUp).Delete
wieder gelöscht. Hier nun das Makro. Tausche es gegen das erste Makro aus.
Die Sache, mit Kopieren von Tab1 nach Tab2 wenn irgendwas auf irgendwas verweist, erkläre bitte mal etwas genauer. Mit dem was Du geschrieben hast, komme ich nicht klar, bzw. verstehe ich nicht. Vielleicht liegt es aber nur an mir, dass ich vielleicht etwas begriffstutzig bin.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
hier der geänderte Code, der nicht mehr die erste Zeile löscht und die entsprechnede Zellzuweisung hat. Das die erste Zeile immer gelöscht wurde lag daran, dass ich davon ausgegangen bin, dass Du in einer Zelle in Spalte D den Buchstaben eingibst und dann sollen die Daten kopiert werden, aber ohne dass der eingegebene Buchstabe stehen bleibt. Deshalb habe ich diesen eingegebenen Buchstaben immer mit der Zeile
Worksheets("Tabelle1").Range("D65536").End(xlUp).Delete
wieder gelöscht. Hier nun das Makro. Tausche es gegen das erste Makro aus.
Sub Kopieren()
Dim Kriterium As String, ZeileTab1 As Long, ZeileTab2 As Long, _
Wiederholungen As Long, Vergelich As String
ZeileTab1 = Worksheets(2).Range("X65536"). _
End(xlUp).Offset(1, 0).Row
Kriterium = Worksheets("Tabelle1").Range("D65536").End(xlUp)
For Wiederholungen = 2 To ZeileTab1 Step 1
Vergleich = Cells(Wiederholungen, 24)
If Worksheets(2).Cells(Wiederholungen, 24) = Kriterium Then
ZeileTab2 = Worksheets("Tabelle1").Range("D65536"). _
End(xlUp).Offset(1, 0).Row
Worksheets(2).Cells(Wiederholungen, 24).Copy _
Worksheets(1).Cells(ZeileTab2, 4)
Worksheets(2).Cells(Wiederholungen, 26).Copy _
Worksheets(1).Cells(ZeileTab2, 5)
Worksheets(2).Cells(Wiederholungen, 25).Copy _
Worksheets(1).Cells(ZeileTab2, 6)
End If
Next Wiederholungen
End SubDie Sache, mit Kopieren von Tab1 nach Tab2 wenn irgendwas auf irgendwas verweist, erkläre bitte mal etwas genauer. Mit dem was Du geschrieben hast, komme ich nicht klar, bzw. verstehe ich nicht. Vielleicht liegt es aber nur an mir, dass ich vielleicht etwas begriffstutzig bin.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 4 von Martin Kletscher
Hallo Coros,
erstmal noch herzlichen dank für die Mühe.
irgendwie geht jetzt nix mehr, oder ich habe nen Gedankenblocker.
Hier ne hoffentlich bessere Erklärung, wie SpaltenInhalte der Tab2 in Tab1 kopiert werden sollen.
z.B. Alles aus Tab2"I" in Tab1"A", aus Tab2"R" in Tab1"B",aus Tab2"BR" in Tab1"D", etc.
(Hinweis: "/" ist Linie, für Spaltenerkennung)
Splte A / B / D / H / J / K / N / O
Tab1: HG/POS/KPOS/MENGE/H-PR/H-PrGes/AbgPrE/AbgPr
Splte I / R / BR / AK /
Tab2: Anlagengruppe/Stcklistpos/Kd-Pos/Menge/
(Fortsetzungder Spalten Tab2)
AM / AS / AW / AX
Bez-Pr/BezGesPr/AbgPreis/AbgGesPr
Danke im voraus, Martin
erstmal noch herzlichen dank für die Mühe.
irgendwie geht jetzt nix mehr, oder ich habe nen Gedankenblocker.
Hier ne hoffentlich bessere Erklärung, wie SpaltenInhalte der Tab2 in Tab1 kopiert werden sollen.
z.B. Alles aus Tab2"I" in Tab1"A", aus Tab2"R" in Tab1"B",aus Tab2"BR" in Tab1"D", etc.
(Hinweis: "/" ist Linie, für Spaltenerkennung)
Splte A / B / D / H / J / K / N / O
Tab1: HG/POS/KPOS/MENGE/H-PR/H-PrGes/AbgPrE/AbgPr
Splte I / R / BR / AK /
Tab2: Anlagengruppe/Stcklistpos/Kd-Pos/Menge/
(Fortsetzungder Spalten Tab2)
AM / AS / AW / AX
Bez-Pr/BezGesPr/AbgPreis/AbgGesPr
Danke im voraus, Martin
Antwort 5 von coros
Hi MArtin,
entweder steh ich jetzt fürchterlich auf dem Schlauch oder Dir fallen immer neue Spalten ein. Daraus läßt sich kein vernünftiges Makro machen, wenn immer nur Stückchenweise die Infos kommen, welche Zellinhalte wohin kopiert werden sollen. Besteht die Möglichkeit mir die Datei mal als Mail zukommen zu lassen? Du müsstest in der Datei kenntlich machen, welche Inhalt aus Tabelle2 in welche Zeile in Tabelle1 kopiert werden sollen. Meine Mail:coros@onlinehome.de
Ich schätze mal, dass ich dann eher ein makro anpassen kann, als mit den Infos aus Deinen Beiträgen.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
entweder steh ich jetzt fürchterlich auf dem Schlauch oder Dir fallen immer neue Spalten ein. Daraus läßt sich kein vernünftiges Makro machen, wenn immer nur Stückchenweise die Infos kommen, welche Zellinhalte wohin kopiert werden sollen. Besteht die Möglichkeit mir die Datei mal als Mail zukommen zu lassen? Du müsstest in der Datei kenntlich machen, welche Inhalt aus Tabelle2 in welche Zeile in Tabelle1 kopiert werden sollen. Meine Mail:coros@onlinehome.de
Ich schätze mal, dass ich dann eher ein makro anpassen kann, als mit den Infos aus Deinen Beiträgen.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 6 von coros
Hi,
ich noch mal. Wenn Du mir die Datei schicken solltest, dann binde bitte in der Betreffzeile irgendwie das Wort Supportnet mit ein. Das hat den Grund, das ich alle Mails, deren Absender ich nicht kenne, ungelesen lösche.
MfG,
coros
Jeder macht was er will, keiner macht was er soll, aber alle machen mit.
ich noch mal. Wenn Du mir die Datei schicken solltest, dann binde bitte in der Betreffzeile irgendwie das Wort Supportnet mit ein. Das hat den Grund, das ich alle Mails, deren Absender ich nicht kenne, ungelesen lösche.
MfG,
coros
Jeder macht was er will, keiner macht was er soll, aber alle machen mit.
Antwort 7 von Martin Kletscher
Hi,
sorry for confusion, aber es ist nicht so einfach, mit diesem mail-editor klare Spalten hinzukriegen.
Wollte ja eine Lösung für ein paar Spalten exemplarisch, so das ich weitere selber im script ergänzen kann.
so long so good, ich schicke dir nachher die Datei.Dadrin enth. mit den Versuchen deines Makros in Tabelle 1 und Tab2, sowie Tab11 und Tab12, die letztendlich wie Tab 1 und Tab2 funktionieren sollten. (Name der Tabellen kann ja geändert werden).
Vielen Dank im voraus für die Mühe die du hier reinsteckst.
Gruß Martin
sorry for confusion, aber es ist nicht so einfach, mit diesem mail-editor klare Spalten hinzukriegen.
Wollte ja eine Lösung für ein paar Spalten exemplarisch, so das ich weitere selber im script ergänzen kann.
so long so good, ich schicke dir nachher die Datei.Dadrin enth. mit den Versuchen deines Makros in Tabelle 1 und Tab2, sowie Tab11 und Tab12, die letztendlich wie Tab 1 und Tab2 funktionieren sollten. (Name der Tabellen kann ja geändert werden).
Vielen Dank im voraus für die Mühe die du hier reinsteckst.
Gruß Martin

