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

VBA R1C1

VBA R1C1
11.03.2005 11:57:00
Karl
Hi,
Ich möchte in der VLookup Formel meines Makro gerne die Lookup Zelle (hier: R8C3) nach Durchlauf der Schleife ändern (d.h. R9C3, R10C3, RjC3 wobei j die Zeilenvariable ist).
Wie kann ich das anstellen? Habe schon R[j]C3 und ähnliches probiert funktioniert aber nicht. "R" &j &"C3" funktioniert bei mir auch nicht. Bekomme die Fehlermeldung Compile Error: Expected end of statement.
Außerdem möchte ich die Range der Lookup Tabelle konstant halten, d.h. Company1!R[-7]:R[65528] soll sich verändern und zwar so ähnlich wenn ich mich nicht irre Company1!R[-7-j]:R[65528-j] (praktisch komplettes Worksheet Company1).
Was ist zu tun?
Hier der VBA Code
Dim v As Integer
Dim i As Integer
Dim j As Integer
i = 0
j = 0
v = 8
For i = 0 To 4
For j = 0 To 100
ActiveSheet.Range("E" & v + j).Offset(0, i).FormulaR1C1 = "=VLOOKUP(R8C3,Company1!R[-7]:R[65528]," & v + i + 1 & ",0)"
Next j
Next i
End Sub
Vielen Dank im Voraus Ihr Excel VBA Hacker!
Karl

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA R1C1
11.03.2005 12:53:20
Chris
Hi Karl,
ich würde an Stelle von "FormulaR1C1" die Methode "Formula" verwenden und dann die direkten Zellen mit cells(a,b).address angeben. Hinter "address" kannst du mit row- und columnsabsolute auch festlegen, ob die relative oder absolute Adressen möchtest.
Gruss
Chris
AW: VBA R1C1
11.03.2005 15:15:37
Karl
Hi Chris,
Vielen Dank für den Tip. Ich scheine allerdings echt zu blöd zu sein (VBA macht mich fertig...1te Programmiersprache überhaupt). Ich habe den Code folgendermaßen geändert:
Dim v As Integer
Dim i As Integer
Dim j As Integer
i = 0
j = 0
v = 8
For i = 0 To 4
For j = 0 To 100
ActiveSheet.Range("E" & v + j).Offset(0, i).Formula = "=VLOOKUP(Worksheets(Company1).Cells(8,3).adress(),Company1!R[-7]:R[65528]," & v + i + 1 & ",0)"

Next j
Next i
Das nimmt mir der Compiler aber nicht ab. Wenn ich nur cells(8,3) eingebe dann läuft zwar das Makro, aber die Lookup Referenz wird als cells(8,3) geschrieben.
Mann mann, ich denke Du wirst mir da sicher weiterhelfen können, die ExcelVBA hilfe tat es auf jeden Fall nicht.
Hast Du eine Buchempfehlung?
Vielen Dank im Voraus,
Karl
Anzeige
hat sich wohl erledigt - owT
13.03.2005 17:58:44
Luc
AW: hat sich wohl erledigt - owT
14.03.2005 08:47:04
Chris
Hi Karl,
sorry, aber ich war das ganze WE nicht im Nezt! Also falls dich die Lösung noch interessiert:
Da die gesamte Formel als String, also als Zeichenkette eingegeben wird, musst du diese für die Zelladressen aufspalten:
* "=VLOOKUP(" & "Worksheets(Company1).Cells(8,3).address" & "," & Worksheets(Company1).Range(Cells(1,1),Cells(50,2)).address "," & v + i + 1 & ",Falsch)"
Wenn du die Arbeitsmappe zwischendurch nicht wechselst, kannst du diese Angaben ("Worksheets(Company1)" ) auch weglassen, also nur cells(8,3).address!!!
Am Anfang deiner Formel würde ich nur *Activesheet.Cells(v+i+j,5).formula = ....
schreiben, müsste eigentlich ausreichen.
War das ein bisschen verständlicher?
Gruss
Chris
Diese Sache musst du zweimal machen:
1. Beim Suchkriterium = cells(8,3).address
2. Bei der Matrix die du durchsuchen möchtest = Range(cells(1,1),cells(50,2)).address
- Hier wird also der Bereich von Zelle(1,1) bis Zelle(50,2) durchsucht
dann war noch ein kleiner Fehler in der Formel, die letzt 0 ist ein Falsch
Anzeige
AW: hat sich wohl erledigt - owT
14.03.2005 12:36:14
Karl
Hi Karl,
sorry, aber ich war das ganze WE nicht im Nezt! Also falls dich die Lösung noch interessiert:
Da die gesamte Formel als String, also als Zeichenkette eingegeben wird, musst du diese für die Zelladressen aufspalten:
* "=VLOOKUP(" & "Worksheets(Company1).Cells(8,3).address" & "," & Worksheets(Company1).Range(Cells(1,1),Cells(50,2)).address "," & v + i + 1 & ",Falsch)"
Wenn du die Arbeitsmappe zwischendurch nicht wechselst, kannst du diese Angaben ("Worksheets(Company1)" ) auch weglassen, also nur cells(8,3).address!!!
Am Anfang deiner Formel würde ich nur *Activesheet.Cells(v+i+j,5).formula = ....
schreiben, müsste eigentlich ausreichen.
War das ein bisschen verständlicher?
Gruss
Chris
Diese Sache musst du zweimal machen:
1. Beim Suchkriterium = cells(8,3).address
2. Bei der Matrix die du durchsuchen möchtest = Range(cells(1,1),cells(50,2)).address
- Hier wird also der Bereich von Zelle(1,1) bis Zelle(50,2) durchsucht
dann war noch ein kleiner Fehler in der Formel, die letzt 0 ist ein Falsch
Hi Chris,
Vielen Dank für Deinen Lösungsvorschlag. Ich habe bereits von Hajo eine Lösung bekommen, wobei er nicht mit .adress arbeitet. Was macht .adress denn genau? Ich erkenne ehrlich gesagt den Sinn von .adress nicht (was an meinen bescheidenen (NULL) VBA Kenntnissen liegt).
würde das nicht auch ohne .adress und nur mit Range funktionieren?
Vielen Dank auf jeden Fall nochmal für Deine Hilfe,
KArl
Anzeige
AW: hat sich wohl erledigt - owT
14.03.2005 14:45:50
Chris
Hi Karl,
mit .address bekommst du die Adresse zur einer Zelle oder zu einem Bereich als String ausgegeben, dabei kannst du danach in Klammern noch bestimmen ob die Bezüge absolut oder relative sein sollen (also ob sie sich beim Kopieren anpassen oder nicht!)
= *Cells(1,1).address (rowabsolute:=false, columnabsolute:=true)*
Must mal in die Hilfe schauen, ist ganz gut erklärt. Da ich die Formel als String eingebe, denke ich, dass es ohne .address nicht funktioniert - kann aber sein, dass doch - keine Ahnung :o)
Gruss
Chris

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige