2017-05-31 2 views
1

ich eine Tabelle in sheet1 einer Arbeitsmappe wie dieses:VBA Lookup-Funktion

section | Class 
11  | 2 
11  | 2 
12  | 3 
12  | 3 
12  | 3 
13  | 4 

Auf Blatt 2 Ich habe so etwas wie dies:

section | Class 
11  |  
11  | 
11  | 
11  | 
11  | 
11  | 
12  |  
12  |  
12  | 
12  | 
12  |  
13  | 

ich die Lookup-Funktion in sheet2 verwenden möchten den Wert für die Klasse von sheet1 zu bekommen und das ist das Makro, das nur für die erste Zelle erzeugt wird:

ActiveCell.FormulaR1C1 = _ 
     "=LOOKUP(RC[-1],Sheet1!RC[-1]:R[4]C[-1],Sheet1!RC:R[4]C)" 

Mein actu al Formel ist:

=LOOKUP(A2,Sheet1!A2:A6,Sheet1!B2:B6) 

Ich möchte es so sein:

=LOOKUP(A2,Sheet1!$A$2:A6,Sheet1!$B$2:B6) 

aber dieses nicht erlaubt. Könnte jemand mir helfen, die Klassenspalte auszufüllen?

Antwort

2

Versuchen Sie so etwas wie dieses ...

Sub GetClasses() 
Dim wsSource As Worksheet, wsDest As Worksheet 
Dim lr1 As Long, lr2 As Long 
Application.ScreenUpdating = False 
Set wsSource = Sheets("Sheet1") 
Set wsDest = Sheets("Sheet2") 
lr1 = wsSource.Cells(Rows.Count, 1).End(xlUp).Row 
lr2 = wsDest.Cells(Rows.Count, 1).End(xlUp).Row 
wsDest.Range("B2:B" & lr2).Formula = "=LOOKUP(A2,'" & wsSource.Name & "'!$A$2:$A$" & lr1 & ",'" & wsSource.Name & "'!$B$2:$B$" & lr1 & ")" 
Application.ScreenUpdating = True 
End Sub 
+0

funktioniert perfekt! – SQLserving

+0

Danke für die Rückmeldung. :) – sktneer

2

Z1S1-Bezugsart zunächst ein wenig seltsam ist, aber man sollte versuchen, es zu verstehen, wenn Sie VBA tun werden.

Eckige Klammern bezeichnen relative Referenz, keine Klammern bedeuten absolute Referenz:

R1C4 = Zeile 1, Spalte 4 = $D$1
R[1]C[-2] = bezogen auf denen die Formel, 1 Zeile nach unten und 2 Spalten nach links.
[0] wird nichts, so R[0]C[1] würde eigentlich RC[1] werden, was bedeutet, gleiche Zeile, eine Spalte auf der rechten Seite.

Also in Ihrem Fall die Formel sollte wie folgt aussehen:

ActiveCell.FormulaR1C1 = _ 
    "=LOOKUP(RC[-1],Sheet1!R2C1:R[4]C[-1],Sheet1!R2C2:R[4]C)" 

Sie können wie diese Excel-Display Formeln haben, kann es helfen, zu verstehen, wie diese Formel Art funktioniert. In Datei/Optionen/Formeln, wählen Sie "R1C1 Reference Style".

Alternativ können Sie auch .Formula statt .FormulaR1C1 als @sktneer verwenden. Es ist zunächst einfacher, obwohl Sie feststellen werden, dass es in seinen Anwendungen in VBA eingeschränkter ist.

+0

Danke für das schnelle Intro zu R1C1. Ihre ersten beiden Punkte sind viel sinnvoller als viele der Websites, die ich durchgemacht habe. Ich werde sicher mehr darüber erfahren. Es ist relativ elegant. – SQLserving