Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1544to1548
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
Inhaltsverzeichnis

Spalten mit variablem Namen ansprechen

Spalten mit variablem Namen ansprechen
01.03.2017 14:57:32
Kaan
Hallo liebe VBA Experten, ich bins wieder!
Ich hätte da ein kleines, aber auf Dauer nerviges, Problem.
Ich habe eine Excel Tabelle, die jeden Monat 2 Spalten dazubekommt. Diese Spalten haben entweder die Überschriften "Bestellte Menge X Produkte" oder "Bestellte Menge Y Produkte" und stehen immer in Zeile 2.
Wenn diese nun aber in meine Tabelle eingetragen werden, aber vom vorherigen Monat schon Daten drinstehen, ändern sich die Namen der neu dazukommenden Spalten zu "Bestellte Menge X Produkte2" und "Bestellte Menge Y Produkte2". Nach 10 mal durchlaufen heißen diese dann "Bestellte Menge X Produkte10" und "Bestellte Menge Y Produkte10" usw., ich glaube ihr wisst wo das hinläuft.
Das ist für mich aber leider ein Problem, da ich gerne hätte das jede Spalte, egal wie oft die Überschrift schon vorhanden ist, die Überschrift "Bestellte Menge X Produkte" oder "Bestellte Menge Y Produkte" beibehält.
Das hat mit dem Code zu tun der dann mit den Daten weiter arbeiten muss.
Kann man das irgendwie abstellen, dass jede Spaltenüberschrift einen einzigartigen Namen haben muss?
Falls das nicht möglich ist, wie kann ich meinen Code ändern, dass ich dieses Problem nicht mehr habe?
Mein Code ist Dank der Hilfe eines netten VBA Experten hier aus dem Forum zustande gekommen. Beim weiteren arbeiten mit dem Code ist mir dann dieses kleine aber feine Problem über den Weg gelaufen.
Hier ein kleiner Ausschnitt aus dem Code:
Sub Gesamtergebnis()
Dim rZelleX As Range
Dim sSuchX As String: sSuchX = "Bestellte Menge X Produkte"
With ThisWorkbook.Worksheets("Sheet1").Rows(Range("A2").Row)
Set rZelleX = .Find(What:=sSuchX, After:=Range("A2"), LookIn:=xlValues, _
LookAt:=xlWhole, SearchDirection:=xlNext)
End With
End Sub

Mit dem obigen Code sucht er nach der Überschrift "Bestellte Menge X Produkte" (bei der zweiten Überschrift wäre es das gleiche, deshalb habe ich sie hier weggelassen)
Wenn ich genau weiß, dass zu der Überschrift eine 2 oder andere einstellige Zahl dazukommt, dann kann ich eine weitere Suchvariable mit = "Bestellte Menge X Produkte" & "?" deklarieren, das würde so funktionieren.
Nun kann es aber sein dass in einem Jahr dort 100 Spalten hinzugefügt wurden, dann müsste der Code auch die Überschrift "Bestellte Menge X Produkte50" oder "Bestellte Menge X Produkte100" finden können. Ich könnte für jeden dieser Fälle eine eigene Suchvariable mit " & "?" " oder " & "?" " (etc.) deklarieren, ja, aber ich kann mir nicht vorstellen dass das die beste Lösung ist.
Ich entschuldige mich für die Menge an Text, ich wusste mich nicht kürzer zu fassen!
Mit freundlichen Grüßen,
Kaan

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
mal logisch
01.03.2017 15:50:25
Michael
Hi Kaan,
wenn die Spaltenüberschriften alle gleich sind, woher soll Excel dann wissen, welche die richtige ist?
Du solltest "verwertbare" Angaben beim Schreiben der Überschriften machen, meinetwegen mit angehängtem Monatskürzel (Jan, Feb) oder wie auch immer. DANN kannst Du die zum jeweiligen Monat passenden Spalten mit .find ermitteln.
Ansonsten schätze ich eine Datenstruktur mit sich erweiternden Spalten eher kritisch: das Konzept könnte evtl. überarbeitungswürdig sein.
Schöne Grüße,
Michael
AW: mal logisch
03.03.2017 10:34:17
Kaan
Hallo Michael,
selbstverständlich ist es unüblich, mehrere Spalten mit dem gleichen Namen zu haben. In meinem speziellen Fall ist das aber durchaus so gewollt.
Durch deine Antwort gehe ich mal davon aus, dass es keine Möglichkeit gibt, die einzigartigen Namen abzustellen.
Also bleibt mir nur noch die Möglichkeit, das Problem durch Anpassung meines Codes zu lösen.
Um Hilfe dabei würde ich mich sehr freuen
Vielen Dank für deine Antwort Michael.
Mit freundlichen Grüßen,
Kaan
Anzeige
AW: mal logisch
03.03.2017 11:06:56
Michael
Hi Kaan,
Deinen Code, der die Überschriften erzeugt, hast Du nicht gepostet, so daß wir Dir hier natürlich auch keine Änderungen vorschlagen können.
Vielleicht hilft aber auch schon dieser Hinweis zu .find; Du hast notiert:
Set rZelleX = .Find(What:=sSuchX, After:=Range("A2"), LookIn:=xlValues, _
LookAt:=xlWhole, SearchDirection:=xlNext)

LookAt:=xlWhole bedeutet, daß der Zellinhalt *exakt* mit dem Suchbegriff übereinstimmen muß. Wenn Du stattdessen xlPart verwendest, wird mit sSuchX = "Bestellte Menge X Produkte" eben auch alles "getroffen", wo sSuchX enthalten ist, nämlich z.B. "Bestellte Menge X Produkte 1", aber dann eben auch "Die Bestellte Menge X Produkte"...
Schöne Grüße,
Michael
Anzeige
AW: mal logisch
06.03.2017 10:04:58
Kaan
Hallo Michael,
dein Vorschlag hat wunderbar funktioniert!
Einen Code zur Erstellung der Überschriften habe ich nicht. Die Spalten werden mit Überschriften und Werten kopiert und eingefügt, von daher dachte ich dass dieser eher irrelevant wäre.
Aber da die Überschriften von meiner Seite aus immer gleich bleiben, ist deine Lösung zu meinem Problem ideal, vielen Dank für deine Hilfe und die Zeit, die du dir dafür genommen hast!
Mit freundlichen Grüßen,
Kaan
gern geschehen
06.03.2017 13:50:10
Michael
Hallo Kaan,
es freut mich, daß Du meinen Hinweis umsetzen konntest - und daß Du Dich nochmal gemeldet hast.
Der Vollständigkeit halber noch zwei links zu .find:
https://www.herber.de/mailing/vb/html/xlmthfind.htm
und vom Hersteller...
http://msdn.microsoft.com/de-de/library/office/ff839746.aspx
... mit Beispielcode, der aber leider nicht zeigt, daß Variable c as Range geDimt ist.
Ich wünsche weiterhin happy exceling und grüße schön,
Michael
Anzeige

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige