2016-05-18 9 views
1

Ich versuche, einige Datensätze in ihren eigenen Spalten zu mitteln. Die Anzahl der Datensätze kann sich ändern, daher muss die Anzahl der Spalten I dynamisch sein.Excel VBA: Verwenden von .formula mit dynamischen Bereichen

Auch ich habe mehrere Sätze von Datensätzen auf jedem Blatt, und weil die Datensätze dynamisch sind, füge ich Spalten in das Blatt früher im Code, so dass ich den Startpunkt für den Datensatz nicht fest codieren kann. Mit anderen Worten, ich kann nicht einfach sagen ...

Range("L5").formula = "=AVERAGE(H5:K5)"

..., weil ich nicht sicher wissen kann, dass die Datensätze bei H5 starten. Es könnte bei F5 oder G5 usw. beginnen.

Also versuche ich den Startpunkt als Argument in einer As Range-Variable übergeben, aber ich weiß nicht, wie Schnittstelle dies mit einer .formula.

Der folgende Code funktioniert nicht. Ich schätze, weil ich eine Bereichsvariable in einer solchen Zeichenfolge nicht setzen kann.

Sub Average() 
Dim c As Range 

Set c = Range("B5:B10") 

Range("F5").FormulaR1C1 = "=Average(" & c & ")" 

Gibt es eine Möglichkeit, Bereiche mit Excel-Formeln wie diesem zu verwenden?

Antwort

2

Es ist für die Adresse und den Ausfall eines Kreisobjekt suchen, ist Wert:

Range("F5").Formula = "=Average(" & c.Address(0,0) & ")" 
0

Wenn der Bereich ist die auf dem Blatt nur Daten gemittelt werden, können Sie die „letzte Zeile“ zu finden und "Letzte Spalte", dann verwenden Sie diese Variablen in der Formel.

letzte Zeile zu finden: LastRow = Cells.Find ("*", Range ("A1"), xlFormulas, xlPart, _ xlByRows, xlPrevious, False False) .Row

zu Finde letzte Spalte Buchstabe: LastCol = Split (Zellen (1, ActiveSheet.Cells.Find (Was: = "*", _ SearchDirection: = xlPrevious, _ SearchOrder: = xlByColumns) .Column) .Address, "$ ") (1)

Die Formel würde sich ändern von: "= MITTELWERT (H5: K5)" zu: "= MITTELWERT (H5:" & LASTCOL & Letzte Zeile & ")"

Verwandte Themen