Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
308to312
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
308to312
308to312
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Namen aus Liste in mehreren Tab. suchen

Namen aus Liste in mehreren Tab. suchen
11.09.2003 21:49:10
Fritz
Hallo VBA-Experten,

ich bitte euch um Hilfe bei der Bewältigung folgender Aufgabe:

Ich möchte, dass aus einer Namensliste, die sich in der Tabelle "A1" in den Zellen B7:B17 befindet, zunächst der Name aus B7 aus 15 Tabellen (P1 bis P15) jeweils aus dem Bereich B4:B33 gesucht wird. In der Tabelle, in der der Name gefunden wird, sollen aus der entsprechenden Zeile die Werte der Spalten G, H, I, J, K in der Tabelle A1 in die Zellen C7, D7, E7, F7 und G7 kopiert werden.
Dieser Vorgang sollte schließlich weitere 10 mal für die Namen aus den Zellen B8 bis B17 der Tabelle A1 wiederholt werden.

Ich denke, dass sich diese Aufgabe mit einer VBA-Prozedur bewerkstelligen lässt.

Für Hilfe in jeglicher Form danke ich euch bereits an dieser Stelle.

Mfg Fritz

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Namen aus Liste in mehreren Tab. suchen
12.09.2003 00:02:47
Josef Ehrensberger
Hallo Fritz,

kopiere diesen Code in ein allgemeine Modul
und weise ihm eine Schaltfläche zu


Sub SucheFritz()
Dim iRow As Integer
Dim iCol As Integer
Dim iRow2 As Integer
Dim iCol2 As Integer
Dim iSht As Integer
On Error Resume Next
For iRow = 7 To 17   'zäler für zeile 7 bis 17 in "A1"
For iSht = 1 To 15   'zähler für Tabellen P1 bis P15
For iRow2 = 4 To 34  'zähler für zeile 4 bis 34 in P 1-15
If Sheets("P" & iSht).Cells(iRow2, 2) = Sheets("A1").Cells(iRow, 2) Then
For iCol2 = 7 To 11
Sheets("A1").Cells(iRow, iCol2 - 4) = Sheets("P" & iSht).Cells(iRow2, iCol2)
Next
End If
Next
Next
Next
End Sub


Das ist allerdings nur eine einfache lösung ohne Fehlerbehandlung
die Namen müssen 100%ig übereinstimmen.

Gruß Sepp
Anzeige
Lösung einfach Klasse!
12.09.2003 08:38:15
Fritz
Hallo Sepp,
vielen Dank für Deine Arbeit, Du hast mir sehr geholfen.
Das Ganze funktioniert einwandfrei. Mein Kompliment, ich beneide solche VBA-Kenner ob ihrer Kenntnisse.
Gruß Fritz
Josef, noch eine Bitte
12.09.2003 11:53:16
Fritz
Hallo Josef,
weil ich weiß, dass sämtliche Namen übereinstimmen müssen, damit die Prozedur fehlerfrei läuft und ich möglicherweise einige Kleinigkeiten in der Tabelle ändern bzw. erweitern möchte, habe ich eine letzte Frage (Bitte).
Zunächst bin ich dankbar, für jeden - für Profis scheinbar noch so überflüssigen -Kommentar im Code. Deshalb habe ich zu einigen Anweisungen in der Prozedur, die ich nicht verstehe, noch Fragen bezüglich ihrer Bedeutung (Wirkung) und es wäre nett, wenn Du mir dazu noch einige Erläuterungen machen könntest. Im Einzelnen:

- Was bedeuten die Variablen iCol und iCol2?

und damit

- Was bewirken die Anweisungen:
" For iCol2 = 7 To 11 " und
"Sheets ("A1").Cells(iRow, iColw - 4) = Sheets("P" & iSht).Cells(iRow2, iCol2)"

Ich denke (hoffe zumindest), dass ich mit einigen Erläuterungen in der Lage bin, die von mir gewünschten Änderungen selbst vorzunehmen.

Nochmals Danke für Deine Mühe.

Mfg
Fritz
Anzeige
AW: Josef, noch eine Bitte
12.09.2003 23:45:08
Josef Ehrensberger
hallo Fritz,

es freut mich das die mein Code geholfen hat.

Hier noch einige erläuterungen.

Dim iRow As Integer '= der zähler für die Zeilen in deinem Blatt "A1"

Dim iCol As Integer '= ist überflüssig, hab ich vergessen zu löschen - sorry

Dim iRow2 As Integer '= der zähler für die Zeilen in deinem Blättern "P1 - P15"

Dim iCol2 As Integer '= der zähler für die Spalten in deinem Blättern "P1 - P15"

Dim iSht As Integer '= der zähler für die Blättern "P1 - P15"

For iRow = 7 To 17 'zählt von Zeile 7 bis 17 in "A1" in denen deine Namen stehen

For iCol2 = 7 To 11 'zählt von Spalte 7(G) bis 11(K) im jeweiligen Blatt "P" & iSht

Sheets("A1").Cells(iRow, iCol2 - 4) = Sheets("P" & iSht).Cells(iRow2, iCol2)
in Blatt "A1"Zelle(Zeile,Spalte) wird der wert von "P&iSht"Zelle(Zeile,Spalte) geschrieben.

Ich hoffe du kommst jetzt klar.

Wenn nicht melde dich nochmal,
Gruß Sepp
Anzeige
Josef, ich brauch noch einmal Deine Hilfe
13.09.2003 14:37:13
Fritz
Hallo Josef,
zunächst vielen Dank für Deine erneute Hilfe und auch das Angebot, mich zu melden, wenn ich nicht klarkomme. Leider muss ich davon Gebrauch machen, aber ich merke, dass man VBA nicht in wenigen Tagen lernt, zumindest ich nicht.
Ich wollte eigentlich die Prozedur selbst erweitern und schäme mich etwas, dass ich auch mit trozt Deiner zusätzlichen Hilfe das nicht schaffe.

Die Ausgangssituation wollte ich wie folgt erweitern:
In Tabelle "A1" befindet sich nicht nur eine Namensliste (wie gehabt im Zellbereich B17 bis B17) sondern fünf weitere:
2. Liste: Zellbereich B23:B33
3. Liste: Zellbereich B38:B48
4. Liste: Zellbereich B53:B63
5. Liste: Zellbereich B68:B78
6. Liste: Zellbereich B83:B93
Diese Namen sollen ebenfalls in den Tabellen P1 bis P15 gesucht werden, und die Werte aus den entsprechenden Zeilen und Spalten (wie beim Ausgangsbeispiel) in der Tabelle A1 wieder in die jeweilige Zeile (gleiche Spalten wie beim Ausgangsbeispiel) geschrieben werden.
Es würde mich freuen, wenn ich noch einmal auf Deine Hilfe bauen kann.

Gruß und schönes Wochenende
Fritz
Anzeige
suche mit mehreren Bereichen
13.09.2003 15:32:46
Josef Ehrensberger
Hallo Fritz,

ich hab den Code ein wenig umgestellt.

Jetzt werden, wenn du das Makro startes,
immer die Namen gesucht die du gerade markiert hast.

Also zuerst die Namen in deinem Blatt ("A1") auswählen
und denn das Makro starten.


Sub SucheFritz2()
Dim rng As Range
Dim iRow2 As Integer
Dim iCol2 As Integer
Dim iSht As Integer
On Error Resume Next
For Each rng In Selection
For iSht = 1 To 15   'zähler für Tabellen P1 bis P15
For iRow2 = 4 To 34  'zähler für zeile 4 bis 34 in P 1-15
If Sheets("P" & iSht).Cells(iRow2, 2) = rng Then
For iCol2 = 7 To 11
rng.Offset(0, iCol2 - 6) = Sheets("P" & iSht).Cells(iRow2, iCol2)
Next
End If
Next
Next
Next
End Sub


Ich hoffe das es jetzt endlich klappt.

Noch einen schönen Samstag - Sepp
Anzeige
AW: suche mit mehreren Bereichen
14.09.2003 10:23:22
Fritz
Hallo Josef,
ich habe jetzt (mit Deiner Hilfe) eine für mich akzeptable Lösung gefunden.
Nochmals vielen Dank. Aller Anfang ist halt eben schwer, da ist man immer wieder froh, wenn man auf so nette und hilfsbereite Forumsbesucher bauen kann.

Gruß
Fritz
Danke für die Rückmeldung! o.T.
14.09.2003 18:37:51
Josef Ehrensberger
o.T.

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige