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

Wert suchen und weiterrechnen

Wert suchen und weiterrechnen
20.08.2007 12:03:00
Rainer
Hallo zusammen
ich bin am rumknobeln des folgenden Problems:
ich habe in einer Datei in Spalte A eine Auflistung von diversen Zahlen. Im VBA Editor habe ich auch eine Zahl. Ich möchte prüfen ob die Zahl in Spalte A vorhanden ist. Falls ja, soll der Wert aus der Spalte B genommen werden. Dieser soll aber nicht wie bei der Vlookup funktion ausgwiesen werden, sondern ich möchte mit diesem Wert weitterrechnen (durch eine Zahl teilen).
Diesen Endwert möchte ich dann in jede Zelle einer Range reinschreiben.
Ich bin noch Anfänger in VBA- programmierung. Was ich weiss ist, dass mit einer Funktion ein Wert ausgegen werden kann, aber wie kann ich checken ob dieser Wert existiert und falls ja, den wert in einer anderen Spalte ausweisen? Könnte man etwas mit Find machen? ich hab wirklich noch keine grosse Ahnung. Da ich noch nicht von der grünen Wiese aus programmieren kann wäre ich froh wenn ihr mir ein Paar tips gebt, damit ich mal basteln kann ;-)
Viele Grüsse
Rainer

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wert suchen und weiterrechnen
20.08.2007 12:17:12
Beverly
Hi Rainer,
angenommen, deine Werte stehen in Spalte A, die Werte zum Weiterrechnen in Spalte B, und es soll der gefundene Wert durch 5 geteilt werden

Sub finden()
Dim raZelle As Range
Set raZelle = Columns("A").Find("DeinSuchbegriff", lookat:=xlWhole)
If Not raZelle Is Nothing Then MsgBox raZelle.Offset(0, 1) / 5
End Sub


Hilft dir das weiter? Falls du Fragen hast - frage ruhig.
________________________________________

AW: Wert suchen und weiterrechnen
20.08.2007 12:27:21
Daniel
Hi
die eleganteste Lösung für dein Problem ist folgende:
1. du überlegst dir eine normale Excel-Formel, die dein Problem löst
2. diese Formel schreibst du in die erste Zelle deiner Range
3. du selektierst diese Zelle
4. du wechselst in den den VBA-Edior direkt-Fenster und gibst dort ein:
?selection.formulalocal
5. das Ergebnis verwendest du in deinem VBA-Code folgendermaßen:
range("C1:C100").formulalocal = "Hier die Formel eingeben"
6. wenn in der Tabelle nicht Formeln sondern Fix-Werte stehen sollen, schreibst du noch folgendes:
range("c1:c100").formula = range("C1:C100").value
aber nochmal zu deiner konkreten Frage
ja as könntest du über Find lösen, und zwar mit folgendem Code:

dim SuchErg as rang
set SuchErg = Range("A:A").find(what:=dein Suchwert, lookin:=xlvalues, lookat:=xlwhole)
if not SuchErg is nothing then
Msgbox cells(sucherg.row, 2).value 'hier wird der Zahlenwert aus Spalte B ausgegeben
end if


Gruß, Daniel

Anzeige
AW: Wert suchen und weiterrechnen
20.08.2007 13:36:44
Rainer
hallo Karin, hallo Daniel
Besten Dank für eure nette Hilfe!
Ich habe nun beides versucht und bin wohl immernoch zu dof dazu.
@Karin: Ich verstehe nicht ganz. Ich möchte ja (vielleicht habe ich das auch nicht klar geschrieben) dass die Werte in einer anderen Datei gesucht werden. So wie ich den Code verstehe passiert da aber nix dergleichen, oder?
Und dann ist mir noch etwas unklar. Wo kann ich definieren in welcher Spalte der Endwert ausgegeben werden soll?
@Daniel: Die Anwendung hört sich gut an, ich brauch aber noch eine kurze Nachhilfe wie ich das mache. Was meinst du mit: "4. du wechselst in den den VBA-Edior direkt-Fenster und gibst dort ein: " einfach alt + F11 und eine neue Porzedur öffnen?
und dann war mir auch noch nicht ganz klar wie ich die Zelle die Formel schreiben kann. Ich habe ja den Wert (sagen wir es wird die Zahl 100 gefunden) noch gar nicht. Somit kann ich ja auch nicht 100/5 teilen. (angenommen dies wäre meine anschliessende Rechenoperation.
bezüglich Lösung mit find: ich habe keinen Wert in Spalte B erhalten. hast du die Prozedur so programmiert, dass falls nichts gefunden wird einfach nichts passiert? und dann hab ich mich wirklich nicht sauber ausgedrückt. Die Datei mit den Suchwerten in Spalte A und den Ergebnissen in Spalte B ist nicht die selbe Datei wie da wo der Endwert nach der Rechenoperation reingeschrieben werden soll.
Nun ist mir noch folgender Gedanke durch den Kopf: Könnte es ein Problem geben, im Fall dass keine Übereinstimmung gefunden wird. Denn falls ich ja danach eine Division durchführe mag Excel das ja wohl nicht wenn es "nichts" durch 5 (Annahme) teilen müsste.
Danke für eure Hilfe und vorallem Geduld mit meinem begrenzten Wissen.
Gruss
Rainer

Anzeige
AW: Wert suchen und weiterrechnen
20.08.2007 14:00:02
Daniel
Hi
zur ersten Frage:
nein, keine neue Prozedur
es gibt das DIREKTFENSTER (falls es nicht offen ist, über ANSICHT aktivieren), dort kannst du direkt VBA-Befehle ausführen, ohne extra eine Prozedur zu erstellen zu müssen.
bei der Formellösung ist es so, daß sich die Formel selbst den Wert suchen und berechnen muß.
du löst das Problem so, wie du es ohne VBA auch lösen würdest, Formel ausdenken, in die erste Zelle schreiben und nach unten kopieren.
Dieses Vorgehen ist, wenn viele Daten abgearbeitet werden müssen, oft effektiver als eine VBA-Schleife.
zum 2. Teilproblem:
ja, ich habe die Funktion so programmiert, daß nichts passiert, wenn der Wert nicht gefunden wurde.
falls in dann doch was passieren sollte, musst du halt
IF.... THEN
...
ELSE
...
END if
verwenden, wobei dann wenn nichts gefunden wurde, der Programmteil zwischen ELSE und END IF abgearbeitet wird.
in diesem Fall solltest du die Ergebnisvariable nicht verwenden, da sie NICHTS ist und somit auch keinen Wert hast. Wenn du trotzdem versuchst, den Wert in einer Rechenoperation zu verwenden, bekommst du einen Programmabbruch.
Aber dafür hast du ja die IF-Abfrage, damit du auf die verschiedenen Fälle entsprechend reagieren kannst.
Gruß, Daniel

Anzeige
AW: Wert suchen und weiterrechnen
21.08.2007 09:18:00
Beverly
Hi Reiner,
mir scheint, du hast meinen Code nicht gestestet. Er macht auch nichts anderes als der von Daniel. Du hattest außerdem geschrieben, dass du mit dem Wert weiterrechnen willst - genau das macht der Code: er dividiert den gefundenen Wert durch 5. Was du berechnen willst, hast du ja nicht geschrieben. Da du außerdem nicht geschrieben hast, wo genau der berechnete Wert eingetragen werden soll (Zitat: "in einer Spalte"), wird er in einer MsgBox ausgegeben.
Bis später,
Karin

...etwas weitergekommen
21.08.2007 16:20:22
Rainer
Hallo Karin
Ich habe den Code schon ausprobiert. Aber wohl aufgrund meiner mangelnden Kenntnis falsch oder nur mangelhaft angepasst damit der code nicht funktionniert hat. Ich bin jetzt nochmals drüber gegangen und hab endlich kapiert was Daniel damals gemeint hatte mit seiner ersten Version. Das erste Erfolgserlebnis folgte auch sogleich :-) , aber es klappt noch nicht ganz.
ich habe nun folgendes makro:
Option Explicit

Sub test()
Range("S2:S10").FormulaLocal = "SVERWEIS([Kundenklassifikation.xls]Stammdaten!$C$5;[07_01_CC. _
xls]Tabelle1!$A:$N;5;FALSCH)/SUMMEWENN(E:E;[Kundenklassifikation.xls]Stammdaten!$C$4;K:K)"
Range("S2:S10").Formula = Range("S2:S10").Value
End Sub


ich habe alles genau so gemacht wie er mir es erklärt hat. Ich kriege aber in der entsprechenden Zelle der definierten Range nur den Text
"SVERWEIS([Kundenklassifikation.xls]Stammdaten!$C$5;[07_01_CC.xls]Tabelle1!$A:$N;5;FALSCH)/SUMMEWENN(E:E;[Kundenklassifikation.xls]Stammdaten!$C$4;K:K)"
Leider rechnet er da noch nichts.
Ich glaube nun ist es nicht mehr weit zum Ziel, aber was fehlt mir noch? Kannst du mir nochmals weiterhelfen?
Viele Grüsse und besten Dank für eure Hilfe
Rainer

Anzeige
AW: ...etwas weitergekommen
21.08.2007 16:34:00
Beverly
Hi Rainer,
da fehlt wirklich nur eine Kleinigkeit: wenn du eine Formel per Code eintragen weills, dann gehört da auch das Gleichheitszeichen mit dazu, andernfalls ist es nur Text - wie du schon festgestellt hast.

Range("S2:S10").FormulaLocal = "=SVERWEIS([Kund...


Bis später,
Karin

nochmals etwas weiter...
22.08.2007 08:35:00
Rainer
Hallo Karin
ja allerdings, die hätte ich jetzt also ruhig selbst noch ausfindig machen können ;-)
Jetzt hab ich noch etwas weitergetüftelt, da ich keine statischen Dateinamen und Pfade im Code möchte, sondern diese aus einem Tabellenblatt ziehen möchte.
Ich kann die entsprechenden Dateien wo der Sverweis geschieht und reingeschrieben wird problemlos öffnen. Ich schaffte es aber nicht, die formel so anzupassen, dass ich dort auch die Variable drin habe. Ich habe versucht den Dateinamen "SVERWEIS([Kundenklassifikation.xls]Stammdaten!" durch "SVERWEIS([wbkQuelle]Stammdaten!" zu ändern. Das gefällt ihm aber nicht.
ich habe den folgenden code:

Sub test()
Public wbkQuelle As Workbook
Public wbkZiel As Workbook
'On Error GoTo FehlerTest
' Prüfung, ob files schon geöffnet ist
For Each wbkQuelle In Application.Workbooks
If LCase(wbkQuelle.Name) = LCase(Range("D10")) Then Exit For
Next
If wbkQuelle Is Nothing Then
Set wbkQuelle = Workbooks.Open(Worksheets("Pfade Originaldateien").Range("D10"))
End If
Workbooks("Tool_Master.xls").Activate
Sheets("Pfade Originaldateien").Select
For Each wbkZiel In Application.Workbooks
If LCase(wbkZiel.Name) = LCase(Range("D12")) Then Exit For
Next
If wbkZiel Is Nothing Then
Set wbkZiel = Workbooks.Open(Worksheets("Pfade Originaldateien").Range("D12"))
End If
Range("S2:S10").FormulaLocal = "=SVERWEIS([07_01_BD.xls]Stammdaten!$C$5;[07_01_CC.xls]Tabelle1!$ _
A:$N;5;FALSCH)/SUMMEWENN(E:E;[07_01_BD.xls]Stammdaten!$C$4;K:K)"
Range("S2:S10").Formula = Range("S2:S10").Value
End Sub


kannst du mir weiterhelfen?
sorry für die vielen Fragen, ich bin mir erst all die sachen am Aneignen und komme leider nur schrittweise weiter.
Viele Grüsse
Rainer

Anzeige
AW: nochmals etwas weiter...
22.08.2007 10:00:10
Beverly
Hi Reiner,
für die vielen Fragen brauchst du dich nicht entschuldigen - dazu ist das Forum ja da. :-))
Eine Variable einbinden kann man, indem man den feststehenden Teil durch & mit der Variablen verknüpft. Mal ungetestet:
"=SVERWEIS([" & wbkQuelle.Name & "]Stammdaten!..."
Bis später,
Karin

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige