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

Vergleichoperator durch Bezug

Vergleichoperator durch Bezug
04.01.2015 12:24:34
Andre

Hallo zusammen,
ich möchte gerne zwei Werte miteinander vergleichen. Der Vergleichoperator soll jedoch durch einen relativen Bezug hergestellt werden.
z.B. 2&A1&3, wenn in A1 <, dann 2 < 3.
Es wird mir aber immer ein #Wert Fehler ausgegeben. Wie kann ich diesen Fehler umgehen?
Vielen Dank!

32
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Vergleichoperator durch Bezug
04.01.2015 12:35:47
Hajo_Zi
nur wenige sehen Deine Formel. Vielleicht wird es dadurch klarer.
In Deinem Beitrag steht nicht zu welchem Wert A1 kleiner sein soll.

Ich vermute: In A1 steht nur der Operator "<" owT
04.01.2015 12:39:17
Matthias L

AW: Vergleichoperator durch Bezug
04.01.2015 12:45:49
Andre
In A1 soll z.b. < stehen. Dann soll z.b. in B2 stehen =Wenn(2&A1&3;"hat funktioniert";"Mist")

AW: Vergleichoperator durch Bezug
04.01.2015 12:52:34
Hajo_Zi

Tabelle1
AW: Flexibel
04.01.2015 12:56:49
Hajo_Zi

Tabelle1
AW: Flexibel
04.01.2015 13:05:46
Andre
Hallo Hajo,
Danke für die Antwort, aber ich verstehe ehrlich gesagt deinen Ansatz nicht. Die Funktion "Auswerten" kenn mein Excel nicht.

AW: Flexibel
04.01.2015 13:08:26
Hajo_Zi
Du solltest es nicht in die Zelle schreiben. Lese meinen Beitrag genau, es ist ein definierter Name.
Gruß Hajo

Anzeige
AW: Flexibel
04.01.2015 13:39:47
Andre
Und wie soll könnte das im Falle einer Summeprodukt-Funktion fubktionieren?
Beispiel:
Userbild
Formel spuckt immer wieder den Fehler aus.

AW: Flexibel
04.01.2015 13:42:07
Hajo_Zi
Ich erstelle die Lösung für das was im Beitrag dargestellt wurde. Wird diese Darstellung geändert, überlasse ich anderen die Lösung, da ich schon eine Lösung erstellt hatte und dafür Zeit investiert habe. Ich arbeite nicht für den Papierkorb.
Gruß Hajo

Anzeige
AW: Flexibel
04.01.2015 13:54:17
Andre
Ich bin dir dankbar für deine Hilfe. Ich dachte jedoch, dass das Problem stets das gleiche ist und es mit der WENN-Funktion am einfachsten wäre.

AW: Flexibel
04.01.2015 14:55:17
Robert
Hallo, falls ich es richtig verstanden habe...
=WENN(WENN(A1=">";2>3;2<3);"hat funktioniert";"mist")
Gruß

AW: Vergleichoperator durch Bezug
10.01.2015 17:43:40
Daniel B.
Hallo Andre,
ich nochmal, hat sich doch ein Fehler eingeschlichen.
Die Formel ist:
=WENN(ODER(UND(A1="<";B1 UND(A1="=";B1=C1)=WAHR
;UND(A1=">";B1>C1)=WAHR);
"hat funktioniert";"Mist")
Grüße
Daniel B.

Excel4
04.01.2015 14:38:13
ransi
HAllo Andre,
Die alten Excel4-Funktionen (zu denen gehört Auswerten())sind "etwas sperrig."
Sie haben aber immer noch ihre Daseinsberchtigung und werden daher auch in Excel14 noch unterstützt.
Zeitgemäß ist aber heute VBA, bzw. VB.Net.
Mit etwas VBA kann man dein Problem ganz schnell lösen.
Diesen Code in ein Modul:
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit


Public Function machs(ParamArray vnta() As Variant)
    Dim objScriptControl As Object
    Dim strExecuteString As String
    Set objScriptControl = CreateObject(Class:="ScriptControl")
    strExecuteString = Join(vnta, "")
    With objScriptControl
        .Language = "VBScript"
        .AddCode "Dim ReturnValue"
        .ExecuteStatement "ReturnValue = " & strExecuteString
        machs = .Eval("ReturnValue")
    End With
End Function


Der Aufruf ist ganz einfach:
Tabelle1

Anzeige
AW: Excel4
04.01.2015 15:15:17
Luschi
Hallo Andre & Ransi,
so funktioniert es auch:

Public Function machs(ParamArray vnta() As Variant)
Dim strExecuteString As String
strExecuteString = Join(vnta, "")
machs = Application.Evaluate(strExecuteString)
End Function
Gruß von Luschi
aus klein-Paris

AW: Excel4
04.01.2015 16:19:33
Andre
Hallo,
vielen Dank. Vielleicht stelle ich mich etwas blöd an, aber bei mir scheint es dennoch nicht zu funktionieren:
Die Formel in meinem Beispiel lauetet ja dann:
=SUMMENPRODUKT((D5:D9)*(machs(E5:E9;G5;H5)))
Trotzdem kommt ein Fehler.

AW: Excel4
04.01.2015 17:16:13
Luschi
Hallo Andre,
komisch, was hat die jetzige Formel '=SUMMENPRODUKT(...)' mit Deiner Ausgangsfrage zu tun?
Zeige doch mal das Beispiel in 1 Testdatei.
Gruß von Luschi
aus klein-Paris

Anzeige
Du stellst dich nicht blöd an, ...
04.01.2015 17:16:43
Luc:-?
…André,
die beiden gleichnamigen UDFs sind nur zu primitiv, um deine (erweiterte?) Anforderung erfüllen zu können; sie sind nicht matrixfml-fähig!
Im Grunde genommen erfüllt die xlStandardFkt VERKETTEN schon mal genau den 1.Teil deiner Anforderung, denn sie verbindet auch mehrere Vektoren elementweise untereinander bzw mit einem Skalar. Für den 2.Teil, die Auswertung, kannst du dann entweder die alte XLM-Fkt AUSWERTEN, die nur in einer benannten Fml verwendet wdn kann (→Namen definieren, Fml im Bezug eintragen!), oder eine leistungsfähige UDF auf der Basis der vbFkt Evaluate (wie im folgd Bsp) benutzen:
{=SUMME(D5:D9*MTRANS(Compute(VERKETTEN(E5:E9;G5;H5))))} °/
Diese UDF wird im Herber-Archiv nur erwähnt, da sie von mir noch nicht freigegeben wurde. Aber man kann eine UDF wie zB Luschis Variante oder im Archiv enthaltene einfachere entsprd umbauen bzw erweitern.
Bei Bedarf kann ich das übernehmen, ist nicht schwer, nur etwas aufwendiger. Dafür kann dann die vbFkt Join entfallen. Solche Kombinationen mag ich in einfachen Fällen ohnehin nicht sonderlich, denn sie verwischen als InselLösungen den Blick auf das Wesentliche.
°/Für Interessenten: MTRANS ist hier erforderlich, weil Compute stets einen horizontalen Vektor erzeugt.
Gruß, Luc :-?

Anzeige
Habe doch mal eben eine mxfmlfähige ...
04.01.2015 20:11:57
Luc:-?
…UDF geschrieben, André,
mit der du dein Ziel auch in einer 1zelligen MatrixFml erreichen kannst:
{=SUMME(D5:D9*LetText(VERKETTEN(E5:E9;G5;H5)))}
Dazu das folgende UDF-Pgm in ein allgemeines Modul kopieren!
Rem MxFmlFäh UDF ermittelt Ergebnis v.Ausdrücken (Fmln) in Textform
'   Vs1.0(2) -LSr -cd:20150104 -1pub:20150104herber -lupd:20150104t
Function LetText(Bezug)
Dim sx As Long, sz As Long, zx As Long, zz As Long, bez, erg As Variant
On Error GoTo fx
If IsArray(Bezug) Then
If TypeName(Bezug) = "Range" Then
With WorksheetFunction
bez = .Transpose(.Transpose(Bezug))
End With
Else: bez = Bezug
End If
On Error Resume Next
If IsError(LBound(bez, 2)) Then
On Error GoTo fx: zz = 1: sz = UBound(bez) + 1 - LBound(bez)
Else: On Error GoTo fx
zz = UBound(bez, 1) + 1 - LBound(bez, 1)
sz = UBound(bez, 2) + 1 - LBound(bez, 2)
End If
ReDim erg(zz - 1, sz - 1)
For Each Bezug In bez
If IsError(Bezug) Then
erg(zx, sx) = Bezug
Else: erg(zx, sx) = Evaluate(CStr(Bezug))
End If
zx = (zx + 1) Mod zz: sx = sx - CInt(zx = 0)
Next Bezug
LetText = erg
ElseIf IsError(Bezug) Then
LetText = Bezug
Else: LetText = Evaluate(CStr(Bezug))
End If
fx: If CBool(Err.Number) Then LetText = CVErr(xlErrNull)
End Function
Luc :-?

Anzeige
AW: Habe doch mal eben eine mxfmlfähige ...
05.01.2015 11:46:36
Andre
Vielen Dank. Bei mir kommt aber weiterhin der Fehler. Auch mit deinem UDF.

Bei mir nicht, was entweder an deinen Daten ...
05.01.2015 13:33:13
Luc:-?
…oder an falscher Anwendung liegen könnte, André,
denn die Fml muss zwingend als MatrixFml eingegeben wdn (Abschluss mit [[Strg][Umsch]][Enter]).
Da die UDF Fehler in den Ausgangsdaten in ihr Ergebnis weiterreicht, müsstest du es statt SUMME mal mit der entsprd (fehler-ignorierenden) AGGEGRAT-Fml versuchen oder die EinzelFmln separat ausgeben*, um den Fehler zu lokalisieren. An der UDF kann es im GgSatz zu den beiden anderen hier nicht liegen!
* Was ergibt VERKETTEN über den angegebenen Bereich? Was steht in allen Bereichen? Ggf Datei mit BspDaten, die Fehler ergeben, hochladen!
Luc :-?

Anzeige
TestDaten-Nachtrag
05.01.2015 15:45:54
Luc:-?
einfach nur genial :-)
06.01.2015 07:02:00
Matthias L
Hallo Luc
AW: einfach nur genial :-)
06.01.2015 10:26:09
Andre
Deine Funktion funktioniert nur mit ganzen Zahlen. Sobald ich einen Bruch etc. nutze, kommt der Fehler.

AW: einfach nur genial :-)
06.01.2015 11:28:07
Matthias L
Hallo Andre
Ist nicht meine Funktion. Die hat Luc geschrieben
und ja ich habe es nur mit Ganzzahlen getestet.
Mein Beitrag war ja auch eher an Luc gerichtet, aber vielleicht pflegt er das ja noch mit ein ;-)
Gruß Matthias

Ja, das ist klar, denn 'Evaluate' versteht nur ...
06.01.2015 13:10:43
Luc:-?
…US-Notation, André,
also DezimalPkt. Wäre kein Problem, das, bezogen auf die lokalen Einstellungen, noch einzubauen. Du könntest dir aber auch mit Umwandlung direkt in der Fml behelfen, wenn du dich nicht gleich für Peters SUMMEWENN-Variante entscheiden willst, die hier wohl die einfachere Wahl wäre, nicht aber, wenn's anders bzw komplexer würde oder nicht direkt zusammenhängende ZellBereiche angegeben wdn können.
Da die UDF aber für alle möglichen FmlText-Auswertungen brauchbar ist, die dann allerdings stets in US-Notation angegeben wdn müssen, könnte die Berücksichtigung dieses speziellen Falles kontraproduktiv für den eigentl HptZweck der UDF sein. Muss ich mir also doch sehr überlegen…
Die Fml sähe mit bisherigem Stand dann so aus:
{=SUMME(D5:D9*LetText(WECHSELN(VERKETTEN(E5:E9;G5;H5);",";".")))}
Gruß, Luc :-?

Anzeige
TestDatenNachtrag
06.01.2015 15:15:47
Luc:-?
'Genial' ist zwar recht übertrieben, Matti, ...
06.01.2015 13:21:48
Luc:-?
…aber die UDF kann noch mehr, wie wg Evaluate-Verwendung klar sein dürfte. Das Argument muss eben stets in US-Notation angegeben wdn.
Aber die UDF ist nur eine Mini-Variante von anderen derartigen Auswertungs-UDF wie TransFor, Compute und Explore, wobei letztere auch (ggf eingeschränkt) mit lokalen FmlTexten zurecht kommt. Das erfordert aber eine wesentlich komplexere Herangehensweise… ;-)
Gruß, Luc :-?

AW: Excel4
04.01.2015 17:30:41
ransi
Hallo Luschi,
Ja, ja, die Eva Luate.
Die hatte ich garnicht mehr auf der Agenda.
@Andre
Da war ich mit dem ScriptControl viel zu umständlich unterwegs.
ransi

Anzeige
vielleicht geht es mit Zählenwenn?!
05.01.2015 11:48:17
Tino
Hallo,
sorry, Beitrag im falschen Zweig soll in 1. oT.
05.01.2015 11:51:36
Tino

Die GesamtFml fktt eher mit SUMMEWENN, ...
06.01.2015 04:48:54
Luc:-?
…Tino,
sofern seine Daten iO sind, was ich nunmehr bezweifle.
Gruß, Luc :-?

AW: Vergleichoperator durch Bezug
10.01.2015 17:38:48
Daniel B.
Hallo Andre,
hatte nicht eher Zeit, der Job.
Ich habe folgenden variablen Vorschlag, d.h es ist egal, ob in A1 <, = oder > steht.
=WENN(ODER(UND(A1="<";B1";B1>C1)=WAHR);"hat funktioniert"; "Mist"
Grüße
Daniel B.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige