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

Logische Operationen mit booleschen Vektoren?

Logische Operationen mit booleschen Vektoren?
Jens
Liebe Forums-Helfer!
Ich möchte gerne zwei boolesche Vektoren miteinander verknüpfen.
Am besten mal ein kleines Beispiel:
A1:A3=B1 ergibt, als Matrixformel eingegeben, einen booleschen Vektor. Zum Beispiel {FALSCH; WAHR; FALSCH}
Ich möchte jetzt zwei solche Vektoren mit einer logischen Operation verknüpfen. So in der Art:
UND(A1:A3=B1;A4:A6=B2)
Im Beispiel könnte das dann sein:
UND({FALSCH; WAHR; FALSCH};{WAHR; WAHR; FALSCH})
und das sollte dann ergeben: {FALSCH;WAHR;FALSCH}
Tut es aber nicht... :-(
Mit diesem Vektor würde ich dann in einer Wenn-Formel weitermachen...
Falls das jetzt unklar war, könnte ich ein kleines Excel-Beispiel hochladen.
Könnt ihr mir hier weiterhelfen?
Vielen Dank sagt
der Jens

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

Betreff
Benutzer
Anzeige
AW: Logische Operationen mit booleschen Vektoren?
31.08.2011 22:23:36
Josef

Hallo Jens,
"{=(A1:A3=B1)*(A4:A6=B2)}"

« Gruß Sepp »

Das liegt daran, dass Boolesche Fktt ...
31.08.2011 23:13:14
Luc:-?
nicht matrixfmlfähig sind, Jens!
Neben der dir von Sepp gezeigten, rein numerischen Lösung gibt es nur eine Möglichkeit, eine Boolesche Fkt zur Akzeptanz von MatrixFmln zu „bewegen”, man muss Platzhalter verwenden! Das geht natürl nur per benannter Fml auf Basis der XLM-Fkt AUSWERTEN, bspw so:
VektorUnd =AUSWERTEN(WECHSELN(WECHSELN("und(x;y)";"x";{FALSCH;WAHR;FALSCH});"y";{WAHR; WAHR; FALSCH}))
A1:A3-Fml: {=VektorUnd}
A1:A3-Erg: {FALSCH;WAHR;FALSCH}
Gruß Luc :-?
Anzeige
AW: Das liegt daran, dass Boolesche Fktt ...
31.08.2011 23:21:41
Jens
Hallo!
Danke für eure Vorschläge, die beide funktionieren!!
Sepps Lösung ist vordergründig einfacher.
Gibt es da eigentlich an Stelle der Multiplikation (für UND-Verknüpfung) auch einfache Lösungen, um andere logische Operationen zu "emulieren"?
Ich hab mal "+" für ODER versucht, war aber auf Anhieb nicht erfolgreich.
UND, ODER, XOR etc. wären super! :-)
Liebe Grüße und nochmal vielen Dank sagt
der Jens
AW: Das liegt daran, dass Boolesche Fktt ...
31.08.2011 23:33:48
Josef

Hallo Jens,
AND: {=(A1:A3=B1)*(A4:A6=B2)}
OR: {=(A1:A3=B1)+(A4:A6=B2)}
XOR: {=((A1:A3=B1)+(A4:A6=B2))=1}

« Gruß Sepp »

Anzeige
Korrektur!
31.08.2011 23:36:56
Josef
ODER währe eigentlich so.
OR: {=((A1:A3=B1)+(A4:A6=B2))>0}
« Gruß Sepp »

AW: Korrektur!
01.09.2011 00:12:26
Jens
Danke nochmal an alle!
Das kann ich wirklich sehr häufig gut gebrauchen!
der Jens
Plus ist aber richtig! Könnte ggf 1 Problem ...
31.08.2011 23:38:29
Luc:-?
…mit den Vektoren sein, Jens!?
Wenn du mehr als UND bzw ODER haben willst, muss das in VBA pgmiert wdn. Da gibt's die Logik-Operatoren Not And Or Xor Eqv Imp. Alle anderen lassen sich ja in ihrer Wirkung darauf zurückführen.
Gruß Luc :-?
Anzeige
Zugabe per VBA, auch für LOLLO-Fans
01.09.2011 01:51:20
Luc:-?

Rem Negation von Argument2 bzw logische Verknüpfung von Arg2 u. Arg3 lt Arg1
'   Auszug aus udF LogOp aus xlAddIn FXsubset - LSr:CyWorXxl *Var2 20110831n
'   OrigVs 1.3a -1Pub: 20110901* herber.de -CDate: 20091002 -LUpd: 20091217t
Function LogOpX(ByVal LOp, ByVal XWert, Optional ByVal YWert)
Const lopTex As String = "not and nand or nor xor eqv neqv imp nimp"
Dim LO As Boolean
If Not IsNumeric(XWert) Then XWert = _
Replace(Replace(UCase(XWert), "L", 1), "O", 0): LO = IsNumeric(XWert)
If IsMissing(YWert) Then
If Not IsNumeric(XWert) Then LogOpX = CVErr(xlErrNum): Exit Function
XWert = CLng(XWert)
Else
If Not IsNumeric(YWert) Then YWert = _
Replace(Replace(UCase(YWert), "L", 1), "O", 0): LO = IsNumeric(YWert)
If IsNumeric(XWert) And IsNumeric(YWert) Then
XWert = CLng(XWert): YWert = CLng(YWert)
Else: LogOpX = CVErr(xlErrNum): Exit Function
End If
End If
If Not IsNumeric(LOp) Then _
LOp = WorksheetFunction.Match(LOp, Split(lopTex), 0) - 1
Select Case LOp
Case 0:     LogOpX = Not XWert
Case 1:     LogOpX = XWert And YWert
Case 2:     LogOpX = Not (XWert And YWert)
Case 3:     LogOpX = XWert Or YWert
Case 4:     LogOpX = Not (XWert Or YWert)
Case 5:     LogOpX = XWert Xor YWert
Case 6:     LogOpX = XWert Eqv YWert
Case 7:     LogOpX = Not (XWert Eqv YWert)   'synonym zu Xor
Case 8:     LogOpX = XWert Imp YWert
Case 9:     LogOpX = Not (XWert Imp YWert)
Case Else:  LogOpX = CVErr(xlErrNA)
End Select
If LogOpX >= -2 And LogOpX 
Gruß Luc :-?
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige