Sverweis?

Hallo Zusammen

Sorry für die unzureichende Überschrift aber cih weiß nicht wie ich das Problem nennen soll…Bin mittlerweile mit meinem Latein am Ende :wink:

Ich habe zwei Tabellenblätter. In Tabellenblatt 1 kann geschrieben werden, Tabellenlatt 2 soll sich „selber“ füllen (Zugriff später gesperrt)

Tabelle 1 (T1) dient der Auftragsdarstellung. Hier werden Auftragsnummern und deren Details vergeben. Ein Detail zum Beispiel ist der Produktionsort „küche“. Sobald „küche“ in T1 geschrieben wird sollte in Tabelle 2 (T2) die Auftragsnummer erscheinen. Also im Grunde so, dass sobald „Küche“ geschrieben wird, in T2 „Küche“ erscheint und durch die Aufragsnummer belegt wird.

Ich denke ich komme an einem Makro nicht vorbei? Mein Lieblingsbefehl sverweis klappt denke ich nicht, da ich „Küche“ also das Suchkriterium nicht in Spalte 1 von T1 habe (da steht die Auftragsnummer!)"Küche steht ungefähr in Spalte 5. Das doofe ist, dass ich an dieser Reihenfolge nichts ändern kann. Weiterhin dürfte der sverweis nicht klappen, da „Küche“ auch mehrmals vorkommen kann.

Ich bräuchte also eine Formel / Makro das T1 „überwacht“ und sobald „küche“ geschrieben wurde abläuft und mir den Wert aus Spalte A in die Tabelle 2 Spalte D schreibt.

Hilfe :frowning:((((

Vielen Dank für eure Antworten (hoffe ich habe mich verständlich ausgedrückt)
Lieben Gruß

Hallo

Dies in den Makrocode von T1 einfügen:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 5 And (Target = „Küche“ Or Target = „küche“) Then
Worksheets(2).Cells(Target.Row, 4) = ActiveSheet.Cells(Target.Row, 1)
End If
End Sub

Gruß
smalbop

Sverweis nach links
Hallo,
hier mal eine Formellösung:
http://www.excelformeln.de/formeln.html?welcher=24

Gruß Holger

Hey smalbop

super klappt! allerdings hat es noch einen schönheitsfehler…

Wie gewollt schreibt er bei „küche“ in T2 die Auftragsnummer. Allerdings auch genau in die Zeile in der es in T1 auch steht.
Also in T1 steht Küche in Zeile 18 dann schreibt er die auftragsnummer auch in Zeile 18 auf T2…geht das auch, dass er die nächste freie zeile in der Tabelle nimmt? sieht sonst irgendwie doof aus und ich hab ein bisschen sorge, dass so zeilen übersehen werden, also sollte Küche mal in Zeile 1547 stehen oder so und in T2 sind nur 3 zeilen beschrieben…

Und: jetzt werde ich übermütig weil das so schön klappt :wink: kann er mir auch außer der Auftragsnummer noch andere Werte aus beispielsweise Spalte c, d; e oder so gleich mit kopieren?

Danke :smile:

Hallo Holger

Danke für den Tipp aber das funktioniert aus dem Grund irgendwie nicht weil ich das kriterium „küche“ mehrmals in der Liste habe und der Wert der aufgelistet werden soll unterschiedlich ist.

LG
Stracciatella

Ok,
aber welches dann nun die „richtige“ Küche ist musst du auch im Makro klar definieren. Sei es nun das es der erste, letzte oder sonnst was Eintrag ist.
Küche EG
Küche 1.Stock … oder so ähnlich.

Wenn es doch eine Formellösung sein soll,
würde ich mich hier mal umsehen und zB. nach sverweis suchen:
http://www.excelformeln.de/suche.html
Eine sehr zu empfehlende Seite!

oder du müsstest konkreter werden wie die Suchkriterien sich unterscheiden oder wo sie dann stehen.

Gruß Holger

Und: jetzt werde ich übermütig weil das so schön klappt :wink:
kann er mir auch außer der Auftragsnummer noch andere Werte
aus beispielsweise Spalte c, d; e oder so gleich mit kopieren?

Hallo Stracciatella,

Private Sub Worksheet\_Change(ByVal Target As Range)
Dim Zei2 As Long
If Target.Column = 5 And UCase(Target.Value) = "KÜCHE" Then
 Zei2 = Worksheets("Tabelle2").Cells(Rows.Count, 1).End(xlUp).Row + 1
 Cells(Target.Row, 1).EntireRow.Copy Destination:=Worksheets("Tabelle2").Cells(Zei2, 1)
End If
End Sub

Gruß
Reinhard

Hallo Reinhard

habe es übernommen und die „platzhalter“ küche und „Tabelle2“ angepasst:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zei2 As Long
If Target.Column = 4 And UCase(Target.Value) = „v150“ Then
Zei2 = Worksheets(„v150“).Cells(Rows.Count, 1).End(xlUp).Row + 1
Cells(Target.Row, 1).EntireRow.Copy Destination:=Worksheets(„v150“).Cells(Zei2, 1)
End If
End Sub

Geht aber nicht…also er macht gar nichts wenn ich das Suchkriterium v150 in der 4 Spalte eintrage?

hmpf :frowning:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zei2 As Long
If Target.Column = 4 And UCase(Target.Value) = „v150“ Then
Zei2 = Worksheets(„v150“).Cells(Rows.Count,
1).End(xlUp).Row + 1
Cells(Target.Row, 1).EntireRow.Copy
Destination:=Worksheets(„v150“).Cells(Zei2, 1)
End If
End Sub

Geht aber nicht…also er macht gar nichts wenn ich das
Suchkriterium v150 in der 4 Spalte eintrage?

Hallo Stracciatella,

auf den ersten Kurzblick hin, probier’s mal so:

If Target.Column = 4 And UCase(Target.Value) = " V 150" Then

Gruß
Reinhard

Also der Ansatz von Smalbop war schon gut…der hat super funktioniert…nur eben, dass er nicht die nächste freie zeile genommen hat sondern immer genau die gleiche zeile in der es in T1 auch gestanden hat…und nur eine Zelle kopiert hat

also so eine Kombi quasi aus beiden ansätzen :wink:

so langsam überlege ich wirklich ob ich mal eine Schulung mitmachen sollte :wink: dann könnte ich wenigstens selber ein bisschen basteln :wink:
kann da jemand was empfehlen??? bin für alles offen denn bin ja sehr begeistert über eure Lösungsvorschläge…irgendwo muss man das ja lernen können*g*

sagenhaft! hat geklappt Danke

hmm wenn ich jetzt versehentlich vorne v150 eingetragen hätte dann schreibt er das ja in t2. sollte ich in t1 diese zeile wieder löschen…kann er das auch automatisch in t2 löschen?

hmm wenn ich jetzt versehentlich vorne v150 eingetragen hätte
dann schreibt er das ja in t2. sollte ich in t1 diese zeile
wieder löschen…kann er das auch automatisch in t2 löschen?

Hallo Stacciatella,

das ging schon irgendwie, vielleicht, vielleicht auch nicht.
Problem ist, Zeile löschen löst kein Ereignis aus wie Worksheet_Change.

Alternativ, lege dir oben in der Symbolleiste ein neues Symbol zu, dem du ein Makro zuweist.
Bei Klick darauf wird dann Tab2 gelöscht und neu befüllt mit den Zeilen aus Tab1 wo halt in Dx „v150“ steht.
Wäre das was?

Gruß
Reinhard

sagenhaft! hat geklappt Danke

hmm wenn ich jetzt versehentlich vorne v150 eingetragen hätte
dann schreibt er das ja in t2. sollte ich in t1 diese zeile
wieder löschen…kann er das auch automatisch in t2 löschen?

Hallo,

ich denke schon, dass WS-Change auf Zeilenlöschen reagiert.

Private Sub Worksheet\_Change(ByVal Target As Range)
 Dim Zei2 As Long
 If Target.Column = 4 And UCase(Target.Value) = "V150" Then
 Zei2 = Worksheets(2).Cells(Rows.Count, 1).End(xlUp).Row + 1
 Cells(Target.Row, 1).EntireRow.Copy Destination:=Worksheets(2).Cells(Zei2, 1)
 ElseIf Target.Column = 4 And Target.Value = 0 Then
 Zei2 = Worksheets(2).Cells(Rows.Count, 1).End(xlUp).Row + 1
 Cells(Target.Row, 1).EntireRow.Copy Destination:=Worksheets(2).Cells(Zei2, 1)
 End If
End Sub

Ist es das, was du brauchst?

Gruß
smalbop

OT

ich denke schon, dass WS-Change auf Zeilenlöschen reagiert.

hallo Smalbop,

jepp du hast Recht, ich lag da falsch in der Annahme.

Gruß
Reinhard

Hallo Reinhard,

wobei noch zu ergänzen wäre, dass mein Vorschlag natürlich unnötig kompliziert war. Besser ist

Private Sub Worksheet\_Change(ByVal Target As Range)
 Dim Zei2 As Long
 If Target.Column = 4 And \_
 (UCase(Target.Value) = "V150" Or Target.Value = 0) Then
 Zei2 = Worksheets(2).Cells(Rows.Count, 1).End(xlUp).Row + 1
 Cells(Target.Row, 1).EntireRow.Copy \_
 Destination:=Worksheets(2).Cells(Zei2, 1)
 End If
End Sub

Gruß
smalbop

hey dank für die vielen antworten

jetzt habe ich gerade nochmal mit den leuten gesprochen die die tabelle benutzen müssen…

anfangs funktionierte der code ja mit einer zelle die kopiert wurde jetzt kopiere ich auf meinen wunsch hin die ganze zeile

ich benötige aber doch nur die zelle…(bin grad etwas genervt von mir selbst*zwinker*)
aber sie muss in die nächst freie zeile bei V150 eingefügt werden und zwar spalte b

also suchkriterium v150 steht in spalte 7 in T1 und kopiert werden soll der wert aus spalte a sobald v150 in spalte 7 eingegeben wird. die kopie sollte in T2 in der nächst freien zeile in der spalte b erscheinen

hm…

hat keiner mehr zeit…ich krieg das wirlich nicht hin :frowning: habe mir schon beide codes angeschaut und gehofft paralellen zu finden aber leider nein…

ich möchte, dass nur eine zelle kopiert wird und nicht die ganze zeile…und diese zelle bitte in der nächst freien zelle aus spalte B in Tabelle2 erscheint…

vielleicht doch noch jemand??

Danke!

ich möchte, dass nur eine zelle kopiert wird und nicht die
ganze zeile…und diese zelle bitte in der nächst freien zelle
aus spalte B in Tabelle2 erscheint…

Hallo Stracciatella,

Private Sub Worksheet\_Change(ByVal Target As Range)
Dim Zei2 As Long
If Target.Column 4 Or UCase(Target.Value) "V150" Then Exit Sub
Zei2 = Worksheets("v150").Cells(Rows.Count, 1).End(xlUp).Row + 1
'Ax --\> v50!Bx
Worksheets("v150").Cells(Zei2, 2) = Cells(Target.Row, 1)
End Sub

Gruß
Reinhard

Super!!! danke Dir! Ihr habt mir sehr geholfe *beidedaumenhoch*