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

Namen aus anderenTabellen in Spalte B?

Namen aus anderenTabellen in Spalte B?
13.05.2007 13:33:00
dieter(drummer)
Excel und VBA SoLaLa
Excel/VBA SoLa
Hi VBA Profis. Starte hiermit 2. Versuch für Hilfe.
Excel und VBA SoLaLa
Problemlösung als VBA gesucht:
Mappe hat 54 Tabelenblätter. 1. Tab.blatt "KdKwÜbersicht und 53 Kalenderwichen.
Lösung gesucht für:
Im Tabellenblatt "KdKwÜbersicht, in Spalte B, sollen alle Namen untereinander aufgelistet werden, die in den Tabelleblättern der KW01 bis KW 53, in den dem Bereich G7 bis N100 stehen (dort gibt es auch leere Zellen und Namen kommen merhfarch vor).
Die Namen sollen aber nur einmal in "KDKwÜbersicht", in Spalte B, gelistet werden. Kommen neue Namen, so sollen diese in Spalte B unten eingefügt werden.
Anbei Musterdatei zum besseren Verständnis.
https://www.herber.de/bbs/user/42453.xls
Hilfe wäre toll und Dank für's drum kümmern.
Mit Gruß dieter(drummer)

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Namen aus anderenTabellen in Spalte B?
13.05.2007 13:57:08
Klaus-Dieter
Hallo Dieter,
versuche es mal so:
KdKwÜbersicht

 ABCDEFBE
1EK je Kw's 2007      
2       
3  Su. KW's44017
4RangKundennameSu. KW's123Anzahl
53real11530 1
61Kaiser's27275 2
71Hit2717 2
8 Aldi/Medion 00 0

Formeln der Tabelle
ZelleFormel
D3=TEILERGEBNIS(3;D5:D21)
E3=TEILERGEBNIS(3;E5:E21)
F3=TEILERGEBNIS(3;F5:F21)
BE3=TEILERGEBNIS(3;BE5:BE21)
A5=WENN(BE5=0;"";RANG(BE5;$BE$5:$BE$291))
C5=WENN(BE5>0;BE5;"")
D5=SUMMENPRODUKT((Kw01!F$5:N$203=B5)*1)
E5=SUMMENPRODUKT((Kw02!G$5:O$203=B5)*1)
BE5=ZÄHLENWENN(D5:BD5;">0")
A6=WENN(BE6=0;"";RANG(BE6;$BE$5:$BE$291))
C6=WENN(BE6>0;BE6;"")
D6=SUMMENPRODUKT((Kw01!F$5:N$203=B6)*1)
E6=SUMMENPRODUKT((Kw02!G$5:O$203=B6)*1)
BE6=ZÄHLENWENN(D6:BD6;">0")
A7=WENN(BE7=0;"";RANG(BE7;$BE$5:$BE$291))
C7=WENN(BE7>0;BE7;"")
D7=SUMMENPRODUKT((Kw01!F$5:N$203=B7)*1)
E7=SUMMENPRODUKT((Kw02!G$5:O$203=B7)*1)
BE7=ZÄHLENWENN(D7:BD7;">0")
A8=WENN(BE8=0;"";RANG(BE8;$BE$5:$BE$291))
C8=WENN(BE8>0;BE8;"")
D8=SUMMENPRODUKT((Kw01!F$5:N$203=B8)*1)
E8=SUMMENPRODUKT((Kw02!G$5:O$203=B8)*1)
BE8=ZÄHLENWENN(D8:BD8;">0")

Viele Grüße Klaus-Dieter

Online-Excel

Anzeige
AW: Namen aus anderenTabellen in Spalte B?
13.05.2007 14:41:00
dieter(drummer)
Hi Klaus-Dieter,
Danke für Info. Ist leider nicht das, was ich suche.
Suche nur VBA Lösung, die mir die Namen aus den Tabellen KW01 bis ... (aus Bereich F5 bis N z.B. 100) in die Tabelle KwKwÜbersicht in Spalte B einfügt. kann z.B. durch Doppelklick in der Spalte B erfolgen. Es geht also erst mal um die Namen aus den KW Tabellen in Tabelle KdKwÜbersicht, Spalte B.
Danke fürs drum kümmern. Evtl kannst Du mir weiterhelfen.
Gruß dieter(drummer)

AW: Namen aus anderenTabellen in Spalte B?
13.05.2007 18:41:00
Klaus-Dieter
Hallo Dieter,
wer lesen kann, ist im Vorteil. An der anderen Sache bin ich inzwischen dran. Melde mich wieder.
Viele Grüße Klaus-Dieter

Online-Excel

Anzeige
AW: Namen aus anderenTabellen in Spalte B?
13.05.2007 19:20:54
Klaus-Dieter
Hallo Dieter,
anbei das versprochene Makro:

Option Explicit
Sub suchen()
Dim Blatt As Object
Dim c As Range
Dim firstAddress As String
Dim lZeile As Long
Dim merk As Integer
For Each Blatt In ActiveWorkbook.Sheets
With Sheets(Blatt.Name).Range("F5:N203")
Set c = .Find("*", LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
For lZeile = 5 To Sheets("KdKwÜbersicht").Range("B65536").End(xlUp).Row
If Sheets("KdKwÜbersicht").Cells(lZeile, 2) = Sheets(Blatt.Name).Cells(c.Row, c. _
Column) Then
merk = 1
Exit For
Else
merk = 0
End If
Next lZeile
If merk = 0 Then
Sheets("KdKwÜbersicht").Cells(Sheets("KdKwÜbersicht").Range("B65536") _
.End(xlUp).Row + 1, 2) = Sheets(Blatt.Name).Cells(c.Row, c.Column)
End If
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address  firstAddress
End If
End With
Next Blatt
End Sub


Es trägt scheinbar auch Begriffe doppelt ein, das liegt aber an deinen Listeneinträgen. Groß- und Kleinschreibung kann das Makro nicht unterscheiden. Dann sind hinter den Firmennamen teilweise Leerzeichen, das wird dann auch als anderer Name interpretiert. Man könnte das auch automatisieren, indem das Makro ins Modul des Tabellenblatts geschrieben wird und mit dem Actlvate-Ereignis beim Öffnen der Seite gestartet wird. Konnte ich jetzt aber nicht testen, da dein VBA-Bereich mit Passwort geschützt ist.
Viele Grüße Klaus-Dieter

Online-Excel

Anzeige
AW: Tsd. Dank an Klaus-Dieter. Klappt super!
13.05.2007 19:49:00
dieter(drummer)
Hi Klaus-Dieter,
habs gerade ausprobiert und funktioniert super. Herzlichen Dank für Deine Bemühungen. Evtl. Doppelnamen durch Gruß- oder Kleinbuchstben etc. entferne ich über ein Extra Makro für Spalte B. das bekomme ich hin. Danke noch mal, hast mir viel Mühe gespart.
Wünsche Dir noch einen schönen Sonntag.
Gruß dieter(drummer)

AW: Namen aus anderenTabellen in Spalte B?
13.05.2007 20:55:00
Klaus-Dieter
Hallo Dieter,
habe das Makro noch mal etwas optimiert, da ich inzwischen festgestellt habe, dass deine Monatslisten unterschiedlich lang sind, habe ich das entsprechend berücksichtigt.

Option Explicit
Sub suchen()
Dim Blatt As Object
Dim c As Range
Dim firstAddress As String
Dim lZeile As Long
Dim merk As Integer
Dim lZiel As Long
For Each Blatt In ActiveWorkbook.Sheets
lZiel = Sheets(Blatt.Name).Range("B65536").End(xlUp).Row
With Sheets(Blatt.Name).Range("F5:N" & lZiel)
Set c = .Find("*", LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
For lZeile = 5 To Sheets("KdKwÜbersicht").Range("B65536").End(xlUp).Row
If Sheets("KdKwÜbersicht").Cells(lZeile, 2) = Sheets(Blatt.Name).Cells(c.Row,  _
c. _
Column) Then
merk = 1
Exit For
Else
merk = 0
End If
Next lZeile
If merk = 0 Then
Sheets("KdKwÜbersicht").Cells(Sheets("KdKwÜbersicht").Range("B65536") _
.End(xlUp).Row + 1, 2) = Sheets(Blatt.Name).Cells(c.Row, c.Column)
End If
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address  firstAddress
End If
End With
Next Blatt
End Sub


Viele Grüße Klaus-Dieter

Online-Excel

Anzeige
AW: Dank an Klaus-Dieter für Optimierung
14.05.2007 19:11:11
dieter(drummer)
Hi Klaus-Dieter,
habe heute erst Deine neue, optimierte Variante gesehen.
Herzlichen dafür.
Mit Gruß
dieter(drummer)

AW: Hilfe Klaus-Dieter: Optimierung läuft nicht
14.05.2007 19:56:00
dieter(drummer)
Hi Klaus-Dieter,
wenn ich Deine optimierte Version laufen lassen, werden KEINE Namen in Spalte B eingetragen!?
Kannst Du noch mal nachsehen? Danke fürs drum kümmern.
Gruß dieter(drummer)

AW: Hilfe Klaus-Dieter: Optimierung läuft nicht
14.05.2007 20:19:16
Klaus-Dieter
Hallo Dieter,
bei mir funktioniert das.
Viele Grüße Klaus-Dieter

Online-Excel

AW: Danke Klaus-Dieter- Optimierung läuft doch!
14.05.2007 21:14:13
dieter(drummer)
Hi Klaus-Dieter,
Deine Optimierung läuft doch! Hatte wohl etwas falsch gemacht.
Nochmals Danke für Deine Hilfe.
Gruß und noch einen schönen Abend.
dieter(drummer)
Anzeige

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige