Registriert seit: 12.04.2014
Version(en): Office 365
(24.06.2017, 17:21)SamTG schrieb: Ich habe meine Tabellen schon als Datenbanken in Access gespeichert, da ich schon einige andere Abfragen erstellt habe. Gibt es vielleicht auch eine Funktion wie list.select bei Access? Power Query lässt sich größtenteils über das UI bedienen, d.h. Coden durck Klicken. Wenn deine Daten schon als Access-Tabellen vorliegen dann sollte es doch ebenso einfach sein eine entsprechende Abfrage zu erstellen.
Wir sehen uns! ... Detlef
Meine Beiträge können Ironie oder Sarkasmus enthalten.
Registriert seit: 20.08.2015
Version(en): 2013
(24.06.2017, 17:29)Fennek schrieb: Hallo,
schau mal, ob du damit zurecht kommst:
Einmal kopieren, 6 x paste könnte reichen.
mfg Danke Fennek, leider ist das bei meiner Menge an Datensätzen sehr anstrengend für meinen kleinen Rechner. Nur ein Lauf über alle Zeilen dauerte fast 30 Minuten. Bei Access habe ich noch auch noch nicht die richtige Lösung gefunden. Das wird noch eine harte Nuss... LG Sam
Registriert seit: 06.12.2015
Version(en): 2016
Hallo, mit VBA könnte es wesentlich schneller gehen. Die Daten müssen, wie in der Datei vorhin, in Cells(3,1) beginnen und mit einer Leerzeile von der Überschrift getrennt sein. Es kann sein, dass es bei zu vielen Zeilen eine Fehlermeldung gibt, da "transpose" eine max. Anzahl hat. Code: Sub Fen() With CreateObject("scripting.dictionary") F = Cells(3, 1).CurrentRegion For i = LBound(F) To UBound(F) If F(i, 1) = 3179 Or F(i, 1) = 5012 Then If Not .exists(F(i, 2)) Then .Add F(i, 2), F(i, 1) Else .Item(F(i, 2)) = .Item(F(i, 2)) & ", " & F(i, 1) End If End If Next i Cells(5, 5).Resize(.Count, 2) = Application.Transpose(Array(.keys, .Items)) End With End Sub
Auf einem "vernüftigen" REchner sollte es nicht mehr als 10 Sekunden dauern (geraten, aber auf Basis früherer Ergebnisse) mfg
Registriert seit: 14.04.2014
Version(en): 2003, 2007
25.06.2017, 10:34
(Dieser Beitrag wurde zuletzt bearbeitet: 25.06.2017, 10:34 von atilla.)
Hallo, von mir auch eine Variante mit Dictionary: Code: Sub mach() Dim i As Long, n As Long Dim lngZ As Long Dim feld, schreibFeld Dim varStrg Dim c As Object Set c = CreateObject("Scripting.Dictionary") With Sheets("Tabelle1") lngZ = .Cells(.Rows.Count, 1).End(xlUp).Row .Range("C3:C" & lngZ).ClearContents feld = Range("A3:b" & lngZ) schreibFeld = Range("C3:C" & lngZ) For i = LBound(feld) To UBound(feld) If feld(i, 1) = 3179 Or feld(i, 1) = 5012 Then If Not c.exists(feld(i, 2)) Then c(feld(i, 2)) = i Else schreibFeld(c(feld(i, 2)), 1) = n + 1 schreibFeld(i, 1) = n + 1 n = n + 1 End If End If Next i .Range("C3:C" & lngZ) = schreibFeld End With
End Sub
Bei 150 Tausend Zeilen dauerte es bei mir ca 3 Minuten. Bei jeder ID darf ein Artikel immer nur einmal vorkommen.
Gruß Atilla
Registriert seit: 20.08.2015
Version(en): 2013
Hallo zusammen,
also wie gesagt ich weiß dass es VBA und so gibt, aber ich kenne mich null aus. Wenn ich die Codes im VBA Direktfenster eingebe kommt bei beiden Fehlermeldung. Was mache ich falsch? bzw wo muss ich den Code einfügen?
Hab jetzt auch nochmal mit Access probiert, aber auch da bin ich noch nicht weiter. Die Kriterien mit einem Und zu verbinden scheint nicht zu funktionieren, da er mir immer 0 rausgibt, was nicht stimmt.
LG Sam
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen, der Code muss in ein Modul. Wenn Du im VBA-Editor bist, gehst Du über das Menü | Einfügen | Modul. Dann gehst Du mit dem Cursor irgendwo in den Code und startest ihn mit F5 Wenn es einen Fehler gibt, dann teile ihn uns mit, einfach nur ... Fehler ... reicht i.d.R. nicht zum korrigieren
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
|