Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
212to216
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
212to216
212to216
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makro

Makro
01.02.2003 21:00:24
Vanessa
Hallo
Wer kann das folgende Makro anschauen?
Die Funktion, von diesem Makro ist Folgende:
Übertragen von Tabelle2 Spalte D zu Tabelle4 Spalte A ohne doppelte Daten.
es funktioniert bei mir nicht gut und ich weiß nicht wo der Fehler ist
*****************************************************
Option Explicit
Sub Übertragen()
Dim ws1 As Worksheet
Set ws1 = Worksheets(4)
Dim i%, i1%, i2%
Dim letzteZeile As Long
Dim shLetzteZeile As Long
letzteZeile = ws1.Range("A65536").End(xlUp).Row
i = 1
For i1 = 2 To Worksheets.Count
shLetzteZeile = Worksheets(i1).Range("D65536").End(xlUp).Row
For i2 = 4 To shLetzteZeile
If ws1.Columns(1).Find(what:=Worksheets(i1).Cells(i2, 4)) _
Is Nothing Then
ws1.Cells(letzteZeile + i, 1) = Worksheets(i1).Cells(i2, 4)
i = i + 1
End If
Next i2
Next i1
End Sub

Danke
Gruß Vanessa

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Makro
01.02.2003 22:28:28
PeterW

Hallo Vanessa,

wenn Du von Tabelle 2 nach Tabelle 4 übertragen willst warum dann:

For i1 = 2 To Worksheets.Count

Fragender Gruß
Peter

Re: Makro
01.02.2003 22:43:12
wolf.w.radzinski

Hallo
anschauen? neee, ALTERNATIVE -->

Gruß -wr-

wsz = Sheets(3) ? (o.T.)
01.02.2003 22:45:50
PeterW



ganz kleine Änderung
01.02.2003 22:51:24
wolf.w.radzinski

die erste Zeile in der Zieltabelle muß nicht in JEDEM Fall angepaßt werden, sondern nur, wenn die Tabelle vorher leer war.

imho ist es einfacher zu FILTERN und dann alle SICHTBAREN Zellen zu kopieren für die erste Zelle gibt es eine "Sonderbehandlung" (aber nur, wenn die Ursprungstabelle keine Überschriften hat!)
und kopiert wird Area für Area und nicht zellenweise

Gruß -wr-



Anzeige
'ze fix
01.02.2003 22:54:00
wolf.w.radzinski

Sheets(1).ShowAllData

muß natürlich

wsq.ShowAllData

heißen

Re: wsz = Sheets(3) ?
01.02.2003 22:56:50
wolf.w.radzinski

danke,

ich hab halt nur 3 Sheets :-) ... er muß natürlich Sheets(1) in Sheets(2) und sheets(3) in scheets(4) ändern :-) ...

Gruß -wr-

ps: die Nase läuft und benebelt die Sinne :-( hatschiiiii

'ze Fix (2.)
01.02.2003 23:12:47
wolf.w.radzinski

erste_zeile = ziel.Cells(65536).End(xlUp)

muß

erste_zeile = ziel.Cells(65536).End(xlUp).Row

heißen

Re: Makro
01.02.2003 23:53:40
Vanessa

Hallo Peter

was soll ich eintragen ?
Danke
Gruß Vanessa

Re: wsz = Sheets(3) ?
02.02.2003 00:00:01
Vanessa

Hallo Wolf.w.r
Deine Lösung funktioniert nicht bei mir…...Excel Stürz immer
Danke
Gruß Vanessa

Anzeige
bei mir funktioniert es (meist)
02.02.2003 08:58:57
wolf.w.radzinski

mögliche Ursachen:
i) ich nutze noch XL97
ii) ich habe bemerkt, daß der FILTERAUFRUF auch bei mir ab einer bestimmten Zeilenzahl "aussteigt" (nichts geht mehr)
iii) hab deshalb noch eine On Error Zeile eingefügt und die Quelle zusätzlich auf UsedRange begrenzt

Gruß -wr-

hier nochmals der abgeänderte Code (der u.U. in der XP Version trotzdem nicht läuft?)



Re: wsz = Sheets(3) ?
02.02.2003 09:28:25
andre

hallo,
wenn die daten von tabelle x auf tabelle y kommen sollen, ist die verwendung des namens besser als die indexnummer sheets(xy). nach dem motto "nicht überall, wo tabelle3 dran steht, ist tabelle3 drin" ;-)
gruss andre

Anzeige
getestet
02.02.2003 09:57:38
wolf.w.radzinski

Hallo,

ich hab mal ein paar TIMER Zeilen eingefügt und folgendes festgestellt

bei 16384 Zeilen (2^14) braucht (auf meinem PC) die

AdvancedFilter Zeile immer > 200 Sekunden (NUR DIESE EINE PROGRAMMZEILE!!!)
und die For-Next Copy Schleife ca 4 Sekunden

bei 32768 Zeilen sind es (nur 1.Versuch gemacht)

AdvancedFilter Zeile >= 700 Sekunden
und die For-Next Copy Schleife ca 20 Sekunden

(da war ich dann kurz davor schon den 1.Versuch abzubrechen)

wie lange braucht im Vergleich dein Code mit For Next FIND Schleife für sowas? (muß ich mal testen)

Gruß -wr-

FOLGENDES!
02.02.2003 10:47:35
wolf.w.radzinski

Hallo Vanessa,

ich hab mal beide Versionen (AdvancedFilter und Find) mit 5000 Zufallszahlen aus dem Bereich 1 bis 1000 getestet , d.h. es gibt maximal 1000 Zeilen (bzw. Zellen) zu kopieren)

Advancedfilter hat dafür ca 60 Sekunden gebraucht, die Variante mit FIND benötigte dafür nur ca. 20 Sekunden (also 3x so schnell!), d.h. AdvancedFilter scheint doch nicht sooo geeignet - braucht einfach zu lang.

DEINEN CODE muß man aber um LOOKAT:= xlWhole ergänzen, sonst findet er zu viele Doppelte :-(

hier mal den geänderten Code, den ich zum Test verwendet hab.
deine Blätter und Zellbereiche mußt du darin evtl noch anpassen?



Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige