Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1260to1264
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

Alle Werte einer Zelle teilen

Alle Werte einer Zelle teilen
Sandra
Hallo Excelfreunde!
Ich nutze folgenden VBA-Code:
Function AlleWerte _
(rErg As Range, _
sMatch As String, _
rMatch As Range, _
Optional sDelim As String = " ") _
As String
'rErg=Ergebnisspalte, sMatch=Suchbegriff
'rMatch=Suchspalte, sDelim=Trennzeichen
Dim objErg As Object, lngC As Long
Dim arrErg, arrMatch
Set objErg = CreateObject("Scripting.Dictionary")
arrErg = rErg.Value
arrMatch = rMatch.Value
For lngC = LBound(arrMatch) To UBound(arrMatch)
If arrMatch(lngC, 1) Like sMatch Then
objErg(objErg.Count + 1) = arrErg(lngC, 1)
End If
Next
AlleWerte = Join(objErg.items, sDelim)
End Function
Es werden mir also in eine Zelle mehrere Zahlen (z.B. durch Semikolon getrennt) ausgegeben. Nun möchte ich gern in einer anderen Spalte diese Werte wiederum durch einen individuellen Wert (je Zeile) teilen. Es wäre schön, wenn die Werte dabei wieder durch Semikolon getrennt in einer Zelle stehen würden.
In einer weiteren Zelle sollte dann der größte Wert ausgeben werden.
Kann jemand bitte helfen? Ich schaffe die Ergebnisse jeweils nur, wenn nur ein Wert je Zelle ausgegeben wird... .
Danke & viele Grüße
Sandra

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

Betreff
Benutzer
Anzeige
...hat niemand eine Idee?
24.04.2012 14:32:24
Sandra
...hat niemand eine Idee?
AW: ...hat niemand eine Idee?
24.04.2012 16:11:37
Rudi
Hallo,
so könnte das gehen:
Function AlleWerteDiv _
(rErg As Range, _
sMatch As String, _
rMatch As Range, _
Optional sngDiv As Single = 1, _
Optional sDelim As String = "; ") _
As String
'rErg=Ergebnisspalte, sMatch=Suchbegriff
'rMatch=Suchspalte, sngDiv=Divisor, sDelim=Trennzeichen
Dim objErg As Object, lngC As Long
Dim arrErg, arrMatch
Set objErg = CreateObject("Scripting.Dictionary")
arrErg = rErg.Value
arrMatch = rMatch.Value
For lngC = LBound(arrMatch) To UBound(arrMatch)
If arrMatch(lngC, 1) Like sMatch Then
objErg(objErg.Count + 1) = arrErg(lngC, 1) / sngDiv
End If
Next
AlleWerteDiv = Join(objErg.items, sDelim)
End Function

Function MaxAlleWerte(strWerte As String, Optional sDelim As String = "; ")
Dim arrTmp, sTmp
arrTmp = Split(strWerte, sDelim)
For Each sTmp In arrTmp
MaxAlleWerte = Application.Max(MaxAlleWerte, sTmp * 1)
Next
End Function

Gruß
Rudi
Anzeige
AW: ...hat niemand eine Idee?
24.04.2012 16:55:08
Sandra
Hallo Rudi!
Vielen Dank (erneut) für deine tolle Unterstützung! MaxAlleWerte klappt ausgezeichnet!
Könntest du mir bitte noch ein Beispiel für AlleWerteDiv geben? Vielen Dank!
Gruß
Sandra
AW: ...hat niemand eine Idee?
24.04.2012 18:09:41
Rudi
Hallo,
AlleWerteDiv funktioniert wie AlleWerte, nur dass du noch den Divisor angeben kannst. Als Zelle oder auch als Festwert. Du musst aber nicht. Dann ist er 1.
=AlleWerteDiv(A2:A10;"a";B2:B10;3;"; ")
=AlleWerteDiv(A2:A10;"a";B2:B10;C2;"; ")
Gruß
Rudi
AW: ...hat niemand eine Idee?
25.04.2012 08:40:13
Sandra
Hallo Rudi!
Super! Danke!
Einen schönen Tag
Sandra
He, Rudi, alter 'Insulaner', warum nicht etwas ...
24.04.2012 18:13:56
Luc:-?
…universeller als diese Anhäufung von Speziallösungen…? ;->
zB aufeinander und dem Vorhandenen aufbauend ungefähr so:
1. alfa: =JoinHVect(horizdatenfeldvektorlfdausdruck;trennzeichen) → wertelistentext
2. beta: =Split2HVect(wertelistentext;trennzeichen) → horizdatenfeldvektor
3. Einsatz in Fmln:
  - Bsp1: =JoinHVect(Split2HVect(wertelistentext;";")/A1;";")
  - Bsp2: =MAX(Split2HVect(wertelistentext;";")/A1)
Übrigens sind etliche udFktt, die alfa/beta entsprechen, bereits im Archiv vertreten!
Gruß Luc :-?
Anzeige

330 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige