Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1428to1432
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
Inhaltsverzeichnis

Arrays über Range befüllen in Function

Arrays über Range befüllen in Function
06.06.2015 21:03:26
Manne
Hallo,
ich kniffel hier gerade seit einer Weile an einem Problem herum und komme einfach nicht weiter.
Ich habe eine große Tabelle in welcher ich über eine Funktion eine Art Zusammenfassung erstellen möchte. Viele Spalten davon sind lediglich mit Zahlen befüllt oder leer. Diese handhabe ich gerade so:
In der Tabelle: =fFunction(A2; B2; C3) Die Funktion:
function fFunction (a, b, c as integer) as string
dim strText
strText = "Zusammenfassung: "
if a  "" then
strText = strText & "(" & a & ")"
else
strText = strText & "-"
end if
if b  "" then
strText = strText & "(" & b & ")"
else
strText = strText & "-"
end if
if c  "" then
strText = strText & "(" & c & ")"
else
strText = strText & "-"
end if
fFunction = strText
end function

Ist es irgendwie möglich, dies über ein Array zu lösen?
Einlesen würde ich die Zellen gerne über eine Range um Variablen zu sparen, also so
=fFunction(A2:C2)
Das scheint er auch irgendwie aufzunehmen. Allerdings habe ich mangels Erfahrung an Array keine Ahnung, wie ich diese Daten jetzt innerhalb der Funktion verwenden kann!?

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Arrays über Range befüllen in Function
06.06.2015 21:17:54
Sepp
Hallo Manne,
erkläre zuerst mal anhand eines Beispieles genauer, was du erreichen willst.
Gruß Sepp

AW: Arrays über Range befüllen in Function
06.06.2015 22:34:37
Manne
Hallo Sepp,
was ich erreichen möchte ist, meine bisherige Funktion in folgendes umzuwandeln:
Einlesen der Daten über eine Range:
=fFunction(A2:C2)
Und die Funktion selbst in folgendes zu ändern:
function fFunction (a as range) as string
dim strText
strText = "Zusammenfassung: "
for i = 1 to 3
if arr(i)  "" then
strText = strText & "(" & arr(i) & ")"
else
strText = strText & "-"
end if
next i
fFunction = strText
end function
Ich finde keine Möglichkeit um die eingelesene Range a in das Array zu übertragen (das ist der Teil mit ? ;) )
Ist dies innerhalb einer Funktion überhaupt möglich?
Gruß,
Manne

Anzeige
AW: Arrays über Range befüllen in Function
06.06.2015 22:45:44
Sepp
Hallo Manne,
Tabelle1

 ABCDEFGH
1123 5 7 
2        
3        
4        
5Zusammenfassung: (1)(2)(3)-(5)-(7)       
6        
7        

Formeln der Tabelle
ZelleFormel
A5=fFunction(A1:G1)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Function fFunction(Bereich As Range) As String
  Dim strText As String
  Dim rng As Range
  
  strText = "Zusammenfassung: "
  
  For Each rng In Bereich
    If rng.Text <> "" Then
      strText = strText & "(" & rng.Text & ")"
    Else
      strText = strText & "-"
    End If
  Next
  
  fFunction = strText
End Function


Gruß Sepp

Anzeige
AW: Arrays über Range befüllen in Function
06.06.2015 23:13:08
Manne
Wow!
Das ist ja einfacher und besser als was mir im Kopf herum schwebte. Ich danke dir vielmals!
Aber wo ich mir jetzt nicht ganz sicher bin, ist das jetzt überhaupt ein Array?

AW: Arrays über Range befüllen in Function
06.06.2015 23:18:21
Sepp
Hallo Manne,
nein, Range ist kein Array, sondern ein Range-Objekt.
Gruß Sepp

Ein einfaches Join hätte schon fast gereicht, ...
07.06.2015 03:50:17
Luc:-?
…Leute;
mit etwas RECHERCHE käme man dann auf die Vielzahl der bereits im Archiv befindlichen LösungsFktt (UDF), u.a. auch welche, die auch Datenfelder (aus Ausdrücken=Teil-Fmln als HptArgument) verarbeiten können.
Ich hätte das dann bspw per Fml so gelöst: =WECHSELN("("&VJoin(A1:G1;")(")&")";"()";"-")
Die UDF VJoin kann man nämlich auch für andere, ähnlich gelagerte Aufgaben einsetzen und nicht nur für diese eine und einzige Spezifik. Sepps Fkt ist also ein Einweg-Produkt und damit unökologisch. ;-]
Sie löst einerseits das augenblickliche Problem des Fragestellers und zeigt andererseits, dass der Verfasser eine spezifisch orientierte (Pgmierer-)Fkt schreiben kann. Nicht weniger, aber auch nicht mehr…
Gruß + schöSo, Luc :-?

Anzeige
Ach Luc, ...
07.06.2015 08:09:09
Sepp
... musst du eigentlich überall deinen Senf dazugeben?
Die von Dir genannten Funktionen sind mir wohl bekannt.
Ich hatte den Fragesteller ja gefragt, was er eigentlich erreichen will, aber er wollte wohl SEINE eigen UDF. Jetzt weiß er wenigstens, wie man dieser einen Bereich übergibt, mit einer fertigen UDF aus dem Archiv wäre er gleich Klug als wie davor.
Gruß Sepp

Naja, wenn du meinst! Ist denn deine UDF ...
10.06.2015 03:07:07
Luc:-?
…nicht auch schon fertig, Sepp?
Was unterscheidet die also außer ihrer …Einweg-Verpackungsart“ von bereits vorhandenen Lösungen. Hättest du nur die vbFkt Join adaptiert, wär's mir zwar auch zu simpel gewesen, aber wenigstens etwas universeller. Du hättest wenigstens auf die Deklarierung von Arg1 As Range verzichten können. Das mache ich nämlich nur, wenn's unbedingt erforderlich ist. Aber als AWer meint ja so mancher, nichts auf erfahrungs­praktische Lösungen geben zu müssen. Wer so etwas tut, muss damit rechnen, dass ich „meinen Senf“ dazugebe.
Ich gebe zwar zu, dass deine UDF anders aussieht als die gängigen (mal von den speziellen Spezifika abgesehen), aber muss denn die Anzahl der „Eintagsfliegen“, mit denen womöglich spätestens der Amtsnachfolger des Fragestellers nichts mehr anfangen kann, nur deshalb stetig vermehrt wdn?! Das Netz ist ohnehin schon voll von so etwas (und manche PCs sicher auch).
Viele behaupten ja, dass das Lernen in einem Forum von Gegenseitigkeit geprägt ist. Davon merke ich hier allerdings nur wenig…
Nichts für ungut! Gruß, Luc :-?
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige