Ich habe überprüft, wie man Single-Cell-Array-UDFs machen und kann nicht Kopf oder Schwanz von dem, was ich gesehen habe, so dachte ich, vielleicht sollte ich besser fragen!Umwandlung eines UDF in ein Array UDF
Ich frage mich, ob jemand mir helfen könnte, herauszufinden, wie ich meine UDF in etwas umwandeln kann, das mit einem Bereich umgehen kann, dessen Ausgabe dann gemittelt werden könnte.
Ich habe eine UDF erstellt die Anzahl der Monate in einem Alter, in diesem Format zu finden:
Chronological Age
8:1
8:2
8:9
8:1
8:0
7:10
8:9
die UDF geht wie folgt:
Function GDAgeToMonths(YearsMonths As String) As Integer
Dim Colonz As Integer, Yearz As Integer, Monthz As Integer, Greaterz As Integer
' check if the stings consists of ">" sign
If InStr(YearsMonths, ">") >= 1 Then
Greaterz = 2
Else
Greaterz = 1
End If
' check position of ":" or "." sign
If InStr(YearsMonths, ":") >= 1 Then
Colonz = InStr(YearsMonths, ":")
Else
Colonz = InStr(YearsMonths, ".")
End If
Yearz = Mid(YearsMonths, Greaterz, Colonz - Greaterz)
Monthz = Right(YearsMonths, Len(YearsMonths) - Colonz)
GDAgeToMonths = Yearz * 12 + Monthz
End Function
So war ich etwas entlang der Linien denken von:
Mit der Funktion unten, um den Durchschnitt von Monaten zurück zu einem Alter:
Function GDMonthsToAge(NumberofMonths As Integer) As String
Dim Yearz As Integer, Monthz As Integer
Yearz = NumberofMonths \ 12
Monthz = NumberofMonths - (12 * Yearz)
GDMonthsToAge = Yearz & ":" & Monthz
End Function
Ich hoffe wirklich, dass dies Sinn macht!
Ich weiß nicht wirklich, ob es eine Array-Formel per se sein muss oder ob es etwas mit einem Bereich tun würde, aber ich plane im Grunde, eine Formel zu verwenden, um das Ergebnis einer Formel auf jeder Zelle in a zu mitteln Angebot.
Jede Hilfe wird dankbar erhalten!
Vielen Dank für Ihre Zeit!
Kein UDF muss eine Matrixformel sein, da Sie die wiederholenden Berechnungen innerhalb des Codes für die UDF selbst erstellen. Außerdem kann kein UDF einen Wert in eine Zelle des Arbeitsblatts schreiben, die nicht die Zelle ist, die die UDF enthält. Eine Reihe von Zellen kann jedoch eine UDF enthalten und wie jede andere native Worksheet-Formel "Array-Eingabe" sein. – Jeeped
Danke dafür - ich glaube ich verstehe was du meinst. Die UDF, die ich erstellen möchte, nimmt einen Bereich an, konvertiert ihn in Monate, mittelt ihn, konvertiert ihn zurück in Jahre und meldet ihn dann in der Zelle, in der er geschrieben ist. Genauso wie wenn Sie die durchschnittliche Funktion innerhalb von Excel verwenden Zelle in ein "durchschnittliches" Format, bevor Sie die Durchschnittsberechnung durchführen. Um es anders auszudrücken, ich möchte das Durchschnittsalter von einer Spalte von Altern erhalten. Excel kann keine Altersangaben im obigen Format interpretieren, daher müssen sie zuerst in mehrere Monate konvertiert werden, aber ich möchte keine weitere Spalte dafür erstellen. –