Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
996to1000
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

Bereich von rechts nach links auslesen?

Bereich von rechts nach links auslesen?
04.08.2008 16:58:00
rechts
Hallöle,
ich habe für jeden Vorgang, wie in der Testtabelle, einen Namen definiert. Gibt es nun die Möglichkeit über VBA jeden Bereich von rechts nach links zu durchsuchen, um immer den ersten Wert der gefunden wird zu erhalten? Quasi bei Vorgang1 "D", bei Vorgang2 "E" usw.
Ich brauch nämlich diese Werte später für eine Auswertung. Die Bereiche sind festgelegt, haben aber nicht immer die selbe Spaltenanzahl sondern manchmal mehr oder weniger. Daher muss das irgendwie dynamisch sein.
Dankeschön und schönen Abend
https://www.herber.de/bbs/user/54328.xls

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bereich von rechts nach links auslesen?
04.08.2008 17:10:00
rechts
Hallo
Geht sicher auch von Rechts, aber eigentlich ist es egal (jedenfalls bei dieser Größenordnung der Spalten)
Dir kommts doch sicher nur aufs Ergebnis an, oder?
Beispiel:

Sub Vorgang1()
Dim c As Range, strg1 As String
For Each c In Range("Vorgang1")
If c  "" Then strg1 = c.Value
Next
MsgBox "FÜr Vorgang1 wird gespeichert " & strg1
End Sub



Sub Vorgang2()
Dim c As Range, strg2 As String
For Each c In Range("Vorgang2")
If c  "" Then strg2 = c.Value
Next
MsgBox "FÜr Vorgang2 wird gespeichert " & strg2
End Sub



Sub Vorgang3()
Dim c As Range, strg3 As String
For Each c In Range("Vorgang3")
If c  "" Then strg3 = c.Value
Next
MsgBox "FÜr Vorgang3 wird gespeichert " & strg3
End Sub


Gruß Matthias

Anzeige
AW: Bereich von rechts nach links auslesen?
04.08.2008 17:39:56
rechts
Hi,
danke ihr beiden für die schnellen Antworten. Naja im Prinzip hab ich eine variable Spaltenanzahl ... mal mehr, mal weniger. Aber es sind ungefähr 400 Vorgänge. Kann man das ganze so umschreiben, das jenes Makro durchläuft und mir die Ergebnise in Spalte "z" oder so wiedergegeben werden? Das heißt, das ich jedes Ergebnis weiter hinten wiederfinde.
@ Daniel
Ich wüßte nicht, wie ich sonst die Daten auslesen kann? Gibt es da einfachere Möglichkeiten? Ich brauch eben aus jeder Zeile den ersten Wert links von der Spalte "Identification" ...
Danke für eure Antworten
Gruß
Andre

Anzeige
Beispiel ...
04.08.2008 17:54:00
Matthias
Hallo
meinst Du so ... ?
Klick auf Schaltfläche "alle" in der Datei

Die Datei https://www.herber.de/bbs/user/54332.xls wurde aus Datenschutzgründen gelöscht


Gruß Matthias

AW: Beispiel ...
04.08.2008 20:41:26
Andre
Hi Mathias,
genau das mein ich!! *freu*
Aber da ich an die 400 Vorgänge hab, gibt es die Möglichkeit irgendwie eine Schleife zu bauen und alles in eine Methode zu bauen?

Ich hab nicht mehr viel Zeit (heute) ...
04.08.2008 21:09:00
Matthias
Hallo Andre
Das geht sicherlich auch zu machen, aber dazu wären genauere Angaben erforderlich.
evtl lädst Du ja ein Beispiel hoch. Mit ein paar konkreten Infos.
Welcher Bereich Welche Zeilen / Spalten, Grundaufbau der Tabelle etc.
Aber von meiner Seite (heute nicht mehr).
Vielleicht hat ja ein anderer Excelfreund heute noch Lust und Zeit.
Ich schau morgen erst wieder in diesen Beitrag rein.
Gruß Matthias

Anzeige
AW: Beispiel ...
04.08.2008 21:10:27
Daniel
Hi
genau das Ergebnis erhälst du auf einfache Weise ohne Makro und ohne Namen für alle 400 Vorgänge, wenn du diese Formel verwendest (Matrixformel, dh ohne geschweifte Klammern eingeben und mit STRG+SHIFT+ENTER abschleißen), in Zeile 2 eingeben und nach unten kopieren

{=INDEX(A2:H2;1;MAX(SPALTE(B2:H2)*(B2:H2"")))}


hier dein Beispiel:
https://www.herber.de/bbs/user/54339.xls
Gruß, Daniel
ps man kann anstelle der Matrixformel auch diese verwenden, dann erspart man sich die etwas _ kompliziertere Eingabe:


=INDEX(A2:H2;1;SUMMENPRODUKT(MAX(SPALTE(B2:H2)*(B2:H2""))))


Anzeige
AW: Beispiel ...
04.08.2008 21:21:09
Andre
Hi Daniel,
ja das funktioniert! Doch leider ist ja die Spaltenanzahl in der die WP's stehen nicht fest. D.h. mein einziger Referenzpunkt ist die Spalte "Identification" und links davon brauch ich die ersten Werte. Manchmal sinds eben mehr, manchmal weniger. Und es sollte schon automatisch funktionieren, ohne die Formel anzupassen. Daher tuh' ich wirklich VBA favorisieren.
Grüße und dickes dankeschön an euch!

AW: Beispiel ...
04.08.2008 21:55:22
Ramses
Hallo
wenn die Spalte den Namen "Identification" hat, dann ist die Antwort hier bereits erfolgt.
Das kannst du zur Zelladressierung verwenden
Gruss Rainer

Anzeige
AW: Beispiel ...
04.08.2008 22:09:38
Andre
Hallo zusammen,
ich habe mir jetzt was von euren Beiträgen zusammengebastelt:
With Worksheets("Tabelle1").Rows(1)
Set rZelle = .Find(sName, lookat:=xlWhole, LookIn:=xlValues)
ActiveWorkbook.Names.Add Name:=sName, RefersToR1C1:= _
"=Tabelle1!C" & rZelle.Column
bName = Rows(1).Find(what:="Identification", LookIn:=xlValues, lookat:=xlWhole).Column
For Each Zelle In Range("A2:A" & Range("A1").End(xlDown).Row)
ActiveWorkbook.Names.Add Name:="Vorgang" & Zelle.Value, RefersTo:=Zelle.Resize(, bName - 1)
For Each c In Range("Vorgang" & Zelle)
If c "" Then strg = c.Value
Next
Cells(Range("Vorgang" & Zelle).Row, "Z") = strg
Next
End With
Er legt jetzt quasi den Namen für die Spalte "Identification" an, legt die Vorgangsbereiche fest und holt dort jeweils den letzten Wert raus.
Vielen Dank für eure Hilfe und einen schönen Feierabend!

Anzeige
AW: Beispiel ...
04.08.2008 23:15:14
Daniel
Hi
auch das lässt sich per Formel lösen:
=INDEX(A2:BEREICH.VERSCHIEBEN(A2;0;VERGLEICH("Identification";$1:$1;0)-2);1; SUMMENPRODUKT(MAX(SPALTE(B2:BEREICH.VERSCHIEBEN(A2;0;VERGLEICH("Identification";$1:$1;0)-2)) *(B2:BEREICH.VERSCHIEBEN(A2;0;VERGLEICH("Identification";$1:$1;0)-2)""))))
die Formel wird zwar etwas länger, aber was solls.
nun ist es egal, wieviele Spalten du hast, es wird immer der Bereich bis links von der Spalte ausgewertet, in der "Identification" steht.
wenn du ein schnelles und einfaches Makro brauchst, dann würde ich einfach eines schreiben, daß diese Formel in die entsprechende Spalte schreibt.
with Range("Z2:Z400")
.FormulaLocal = "=INDEX(A2:BEREICH.VERSCHIEBEN(A2;0;VERGLEICH(""Identification"";$1:$1;0)-2);1;SUMMENPRODUKT(MAX(SPALTE(B2:BEREICH.VERSCHIEBEN(A2;0;VERGLEICH(""Identification"";$1:$1;0)-2))*(B2:BEREICH.VERSCHIEBEN(A2;0;VERGLEICH(""Identification"";$1:$1;0)-2)""""))))"
.Formula = .Value
Gruß, Daniel

Anzeige
AW: Bereich von rechts nach links auslesen?
04.08.2008 17:11:33
rechts
Hallo
vielleicht hilft dir dieses kleine Makro weiter:
das Ergebnis der Abfrage wird der entsprechenden Variable abgelegt

Sub test()
Dim Ergebnis As String
With Range("Vorgang1")
Ergebnis = IIf(.Cells(.Cells.Count) = "", .Cells(.Cells.Count).End(xlToLeft), .Cells(.Cells. _
Count))
End With
End Sub


durch deine Verwendung Namen ist es halt mit der Dynamik einwenig schwierig
Gruß, Daniel

319 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige