Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1104to1108
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Formel > einzelne Werte anzeigen
Stefan
Hallo Excel-Freunde
gibt es eine Formel / Funktion, die mir folgendes anzeigen lässt:
a1 = 10
b1 = 30
in c1 steht die Formel z.b. +a1+b1 (=40)
in D1 soll nun stehen "10+30"
Es sollen also alle Einzelwerte, die die Summer ergeben angezeigt werden.
Bei zwei Zahlen ist das vielleicht noch nicht so wichtig
Aber wenn die Formel komplexer ist, wäre so eine Anzeige sehr hilfreich
Freu mich auf einen Tip
Gruss Stefan

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Formel > einzelne Werte anzeigen
19.09.2009 13:37:47
hary
Hi Stefan
reicht es evtl. wenn Du in der Formel die Bezuege anklickst nd mit F9 kannst Du den Wert zeien lassen.
Achtung wieder zurueck nur mit Esc.

Tabellenblattname: Tabelle1
 

A

B

C

1

10

20

30


Benutzte Formeln:
C1: =10+20

Gruss Hary
Anzeige
AW: Formel > einzelne Werte anzeigen
19.09.2009 13:43:09
Stefan
Hey Hary
so mach ich es normalerweise auch ...
aber ich möchte die Einzelwerte gern via Formel .. in der Zelle angezeigt bekommen
noch ne Idee ?
Gruss Stefan
Formelüberwachung einblenden
19.09.2009 14:14:48
ransi
HAllo
Blende dir doch die Formelüberwachung ein.
Dann gehst du auf den Button mit der Lupe und lässt dir die Berechnungsschritte anzeigen.
Das Ganze zu Automatisieren hab ich auch schon mal versucht.
Das Handle des Fenster habe ich bekommen (Massiver API-Einsatz), aber ich bin daran gescheitert die Texte (die Zwischenergebnisse) in dem Label auzulesen.
ransi
Anzeige
AW: Formelüberwachung einblenden
19.09.2009 19:30:55
Stefan
Hey Robert
vielen Dank für den Thread-Link
ist ja fast die gleiche Frage ;)
aber leider nicht die Antwort enthalten :((
Gruß
Stefan
AW: Formelüberwachung einblenden
19.09.2009 19:36:17
Stefan
Hallo Rasni
vielen Dank für die Idee
nur leider nicht ganz die Lösung meines "Problems"
wenn in
a1 = 10
b1 = 20
c1 = +a1+b1
soll in d1 " 10+20 " stehen
und nicht " +a1+b1 "
;O
Noch ne Idee ?
Gruß
Stefan
hiermit gehts
19.09.2009 21:36:02
Stefan
Hallo ransi und alle anderen
mit folgendem Code funzt es
Besten Gruß
Stefan
Option Explicit
Option Base 1
Public Function AnzeigeFormel(x)
'Hinweis:
'mehrere Formel ergänzen in einer Zelle
'   =AnzeigeFormel(ZS)&" + "&AnzeigeFormel(ZS)
'  also mit   &  am Ende der Ersten   und   & am Anfang der Zweiten
Dim CallerSheet As String, CallerBook As String
Dim OriFor As String, FormularLen As Integer
Dim MathOp As Variant, I As Integer
Dim SearchStart As Integer, K As Integer
Dim SwapOp As Boolean, LastK As Integer
Dim CellAdd As String, Genfor As String, GenOpt As String
Dim Variable As Variant
Dim Bf As String, Md As String, Af As String
Static AlreadyOpen As Boolean
'Dim MyCell As Object, GetCaller As String
'Set MyCell = Application.Caller
'GetCaller = Str$(a) + "+" + Str$(b)
'GetCaller = MyCell.Address
'GetCaller = MyCell.Parent.Name
'GetCaller = MyCell.Worksheet.Name
'Application.Volatile
CallerSheet = Application.Caller.Parent.Name
CallerBook = Application.Caller.Parent.Parent.Name
'Print #1, "Main-->"; ActiveSheet.Name
MathOp = Array("=", "+", "-", "*", "/", "^", ",", ":")
OriFor = x.Formula
FormularLen = Len(OriFor)
ReDim Operator(FormularLen) As Integer
If Left$(OriFor, 1)  "=" Then
OriFor = "=" + OriFor
FormularLen = FormularLen + 1
End If
'Replace ":\" with "|\"
SearchStart = 1
Do While InStr(SearchStart, OriFor, ":\") > 0
K = InStr(SearchStart, OriFor, ":\")
Mid$(OriFor, K, 2) = "|\"
SearchStart = SearchStart + 1
Loop
K = 1
For I = 1 To 8  '8 math operators (include ',' and ':')
SearchStart = 1
Do While InStr(SearchStart, OriFor, MathOp(I)) > 0
Operator(K) = InStr(SearchStart, OriFor, MathOp(I))
SearchStart = Operator(K) + 1
K = K + 1
Loop
Next I
Operator(K) = FormularLen + 1
LastK = K
'Sort Operator()
Do
SwapOp = False
For I = 1 To LastK - 1
If Operator(I) > Operator(I + 1) Then
'swap Operator(I), Operator(I + 1)
K = Operator(I)
Operator(I) = Operator(I + 1)
Operator(I + 1) = K
SwapOp = True
End If
Next I
Loop Until SwapOp = False
Genfor = ""
For I = 1 To LastK - 1
CellAdd = Mid$(OriFor, Operator(I) + 1, Operator(I + 1) - Operator(I) - 1)
GenOpt = Mid$(OriFor, Operator(I), 1)
Call CheckBK(CellAdd, Bf, Md, Af)
GenOpt = GenOpt + Bf
CellAdd = Md
If CellAdd  "" Then
FormularLen = Len(CellAdd)
'       For K = 1 To FormularLen
'      Next K
Call ObtainValue(CellAdd, CallerSheet, CallerBook, Variable)
Else
Variable = ""
End If
Select Case GenOpt
Case Is = ":"
GenOpt = " to "
'GenOpt = "->"
'Case Is = "*"
'   GenOpt = "x"
End Select
Genfor = Genfor + GenOpt + Variable + Af
Next I
'Set supercript
Genfor = Right$(Genfor, Len(Genfor) - 1)
Call ReplaceConstant(Genfor)
If Left$(Genfor, 1) = "+" Then
AnzeigeFormel = Right$(Genfor, Len(Genfor) - 1)
Else
AnzeigeFormel = Genfor
End If
'Replace "|\" with ":\"
SearchStart = 1
Do While InStr(SearchStart, AnzeigeFormel, "|\") > 0
K = InStr(SearchStart, AnzeigeFormel, "|\")
Mid$(AnzeigeFormel, K, 2) = ":\"
SearchStart = SearchStart + 1
Loop
End Function
Sub CheckBK(ForStr As String, Bf As String, Md As String, Af As String)
'Check for Brackets ie. '()'
'Bf = before '('
'Md - between '('&')'
'Af -after ')'
Dim I As Integer, K As Integer, L As Integer
Dim Opb As Integer, Clb As Integer
L = Len(ForStr)
K = 0
Do While InStr(K + 1, ForStr, "(") > 0
K = K + 1
Loop
Opb = K
Clb = InStr(1, ForStr, ")")
If Clb = 0 Then Clb = L + 1
Bf = Left$(ForStr, Opb) ': Print "bf="; "@"; Bf$; "@"
Md = Mid$(ForStr, Opb + 1, Clb - Opb - 1) ': Print "md="; "@"; Md$; "@"
Af = Right$(ForStr, L - Clb + 1) ': Print "Af="; "@"; Af$; "@"
End Sub Sub RmvU(Md)
'Remove unwanted formating in number format string
Dim L As Integer, NewMd As String, I As Integer
Dim TempMd As String
NewMd = ""
L = Len(Md)
For I = 1 To L
TempMd = Mid(Md, I, 1)
Select Case TempMd
Case Is = "?"
'do nothing
Case Is = "_"
I = I + 1
Case Else
NewMd = NewMd + TempMd
End Select
Next I
Md = NewMd
End Sub Sub ObtainValue(CellAdd, CallerSheet, CallerBook, Variable)
On Error GoTo NonAdd
Dim Md As String
Dim VarAdd As Object
'Print #1, CellAdd, TypeName(Range(CellAdd).Value)
If Asc(Left$(CellAdd, 1)) "$" Then
Variable = CellAdd
'Print #1, "no address ", CellAdd
Else
If InStr(CellAdd, "!") = 0 Then
Set VarAdd = Workbooks(CallerBook).Worksheets(CallerSheet).Range(CellAdd)
Else
Set VarAdd = Range(CellAdd)
End If
'With VarAdd
'Md = TypeName(Worksheets(CallerSheet).Range(CellAdd).Value)
Md = TypeName(VarAdd.Value)
If Md = "Empty" Or Md = "Null" Or Md = "Error" Or Md = "String" Then
Variable = Md
Exit Sub
End If
'Print #1, CellAdd, Range(CellAdd).Value
'Variable = Str$(Range(CellAdd).Value)
'Variable = Str$(Range(CellAdd).Value)
'Md = Worksheets(CallerSheet).Range(CellAdd).NumberFormat
Md = VarAdd.NumberFormat
Call RmvU(Md)
'Print #1, CellAdd
If Md = "General" Then
'Variable = Str$(Worksheets(CallerSheet).Range(CellAdd).Value)
Variable = Str$(VarAdd.Value)
Else
'Variable = Format$(Worksheets(CallerSheet).Range(CellAdd).Value, Md)
Variable = Format$(VarAdd.Value, Md)
End If
'End With
End If
Exit Sub
NonAdd:
Variable = "Address Error"
On Error GoTo 0
End Sub
Sub ReplaceConstant(Genfor)
'Replace PI() with 3.142
Dim I As Integer, L As Integer, K As Integer
L = Len(Genfor)
For I = 1 To L
If InStr(I, Genfor, "PI()") > 0 Then
K = InStr(I, Genfor, "PI()")
Mid$(Genfor, K, 4) = "3.142"
End If
Next I
End Sub
Anzeige
hiermit gehts
19.09.2009 21:36:35
Stefan
Hallo ransi und alle anderen
mit folgendem Code funzt es
Besten Gruß
Stefan
Option Explicit
Option Base 1
Public Function AnzeigeFormel(x)
'Hinweis:
'mehrere Formel ergänzen in einer Zelle
'   =AnzeigeFormel(ZS)&" + "&AnzeigeFormel(ZS)
'  also mit   &  am Ende der Ersten   und   & am Anfang der Zweiten
Dim CallerSheet As String, CallerBook As String
Dim OriFor As String, FormularLen As Integer
Dim MathOp As Variant, I As Integer
Dim SearchStart As Integer, K As Integer
Dim SwapOp As Boolean, LastK As Integer
Dim CellAdd As String, Genfor As String, GenOpt As String
Dim Variable As Variant
Dim Bf As String, Md As String, Af As String
Static AlreadyOpen As Boolean
'Dim MyCell As Object, GetCaller As String
'Set MyCell = Application.Caller
'GetCaller = Str$(a) + "+" + Str$(b)
'GetCaller = MyCell.Address
'GetCaller = MyCell.Parent.Name
'GetCaller = MyCell.Worksheet.Name
'Application.Volatile
CallerSheet = Application.Caller.Parent.Name
CallerBook = Application.Caller.Parent.Parent.Name
'Print #1, "Main-->"; ActiveSheet.Name
MathOp = Array("=", "+", "-", "*", "/", "^", ",", ":")
OriFor = x.Formula
FormularLen = Len(OriFor)
ReDim Operator(FormularLen) As Integer
If Left$(OriFor, 1)  "=" Then
OriFor = "=" + OriFor
FormularLen = FormularLen + 1
End If
'Replace ":\" with "|\"
SearchStart = 1
Do While InStr(SearchStart, OriFor, ":\") > 0
K = InStr(SearchStart, OriFor, ":\")
Mid$(OriFor, K, 2) = "|\"
SearchStart = SearchStart + 1
Loop
K = 1
For I = 1 To 8  '8 math operators (include ',' and ':')
SearchStart = 1
Do While InStr(SearchStart, OriFor, MathOp(I)) > 0
Operator(K) = InStr(SearchStart, OriFor, MathOp(I))
SearchStart = Operator(K) + 1
K = K + 1
Loop
Next I
Operator(K) = FormularLen + 1
LastK = K
'Sort Operator()
Do
SwapOp = False
For I = 1 To LastK - 1
If Operator(I) > Operator(I + 1) Then
'swap Operator(I), Operator(I + 1)
K = Operator(I)
Operator(I) = Operator(I + 1)
Operator(I + 1) = K
SwapOp = True
End If
Next I
Loop Until SwapOp = False
Genfor = ""
For I = 1 To LastK - 1
CellAdd = Mid$(OriFor, Operator(I) + 1, Operator(I + 1) - Operator(I) - 1)
GenOpt = Mid$(OriFor, Operator(I), 1)
Call CheckBK(CellAdd, Bf, Md, Af)
GenOpt = GenOpt + Bf
CellAdd = Md
If CellAdd  "" Then
FormularLen = Len(CellAdd)
'       For K = 1 To FormularLen
'      Next K
Call ObtainValue(CellAdd, CallerSheet, CallerBook, Variable)
Else
Variable = ""
End If
Select Case GenOpt
Case Is = ":"
GenOpt = " to "
'GenOpt = "->"
'Case Is = "*"
'   GenOpt = "x"
End Select
Genfor = Genfor + GenOpt + Variable + Af
Next I
'Set supercript
Genfor = Right$(Genfor, Len(Genfor) - 1)
Call ReplaceConstant(Genfor)
If Left$(Genfor, 1) = "+" Then
AnzeigeFormel = Right$(Genfor, Len(Genfor) - 1)
Else
AnzeigeFormel = Genfor
End If
'Replace "|\" with ":\"
SearchStart = 1
Do While InStr(SearchStart, AnzeigeFormel, "|\") > 0
K = InStr(SearchStart, AnzeigeFormel, "|\")
Mid$(AnzeigeFormel, K, 2) = ":\"
SearchStart = SearchStart + 1
Loop
End Function
Sub CheckBK(ForStr As String, Bf As String, Md As String, Af As String)
'Check for Brackets ie. '()'
'Bf = before '('
'Md - between '('&')'
'Af -after ')'
Dim I As Integer, K As Integer, L As Integer
Dim Opb As Integer, Clb As Integer
L = Len(ForStr)
K = 0
Do While InStr(K + 1, ForStr, "(") > 0
K = K + 1
Loop
Opb = K
Clb = InStr(1, ForStr, ")")
If Clb = 0 Then Clb = L + 1
Bf = Left$(ForStr, Opb) ': Print "bf="; "@"; Bf$; "@"
Md = Mid$(ForStr, Opb + 1, Clb - Opb - 1) ': Print "md="; "@"; Md$; "@"
Af = Right$(ForStr, L - Clb + 1) ': Print "Af="; "@"; Af$; "@"
End Sub Sub RmvU(Md)
'Remove unwanted formating in number format string
Dim L As Integer, NewMd As String, I As Integer
Dim TempMd As String
NewMd = ""
L = Len(Md)
For I = 1 To L
TempMd = Mid(Md, I, 1)
Select Case TempMd
Case Is = "?"
'do nothing
Case Is = "_"
I = I + 1
Case Else
NewMd = NewMd + TempMd
End Select
Next I
Md = NewMd
End Sub Sub ObtainValue(CellAdd, CallerSheet, CallerBook, Variable)
On Error GoTo NonAdd
Dim Md As String
Dim VarAdd As Object
'Print #1, CellAdd, TypeName(Range(CellAdd).Value)
If Asc(Left$(CellAdd, 1)) "$" Then
Variable = CellAdd
'Print #1, "no address ", CellAdd
Else
If InStr(CellAdd, "!") = 0 Then
Set VarAdd = Workbooks(CallerBook).Worksheets(CallerSheet).Range(CellAdd)
Else
Set VarAdd = Range(CellAdd)
End If
'With VarAdd
'Md = TypeName(Worksheets(CallerSheet).Range(CellAdd).Value)
Md = TypeName(VarAdd.Value)
If Md = "Empty" Or Md = "Null" Or Md = "Error" Or Md = "String" Then
Variable = Md
Exit Sub
End If
'Print #1, CellAdd, Range(CellAdd).Value
'Variable = Str$(Range(CellAdd).Value)
'Variable = Str$(Range(CellAdd).Value)
'Md = Worksheets(CallerSheet).Range(CellAdd).NumberFormat
Md = VarAdd.NumberFormat
Call RmvU(Md)
'Print #1, CellAdd
If Md = "General" Then
'Variable = Str$(Worksheets(CallerSheet).Range(CellAdd).Value)
Variable = Str$(VarAdd.Value)
Else
'Variable = Format$(Worksheets(CallerSheet).Range(CellAdd).Value, Md)
Variable = Format$(VarAdd.Value, Md)
End If
'End With
End If
Exit Sub
NonAdd:
Variable = "Address Error"
On Error GoTo 0
End Sub
Sub ReplaceConstant(Genfor)
'Replace PI() with 3.142
Dim I As Integer, L As Integer, K As Integer
L = Len(Genfor)
For I = 1 To L
If InStr(I, Genfor, "PI()") > 0 Then
K = InStr(I, Genfor, "PI()")
Mid$(Genfor, K, 4) = "3.142"
End If
Next I
End Sub
Anzeige
kannst du bitte beispieldatei schicken?..
20.09.2009 07:55:11
robert
hi,
funkt bei mir nicht....
gruß
robert
Danke Stefan-passt! :-)) owT
20.09.2009 09:35:16
robert
gerne doch ;) owT
20.09.2009 11:08:29
Stefan

317 Forumthreads zu ähnlichen Themen


Hi Formelspezialisten,
in Zelle B2 steht dise Formel (funktionert auc h):
=TEXT(I4-D4;"00.0")&" ("&TEXT(I4/D4-1;"0%")&")".
Mein Ziel, dass eine Minuszahl in ROT erscheint. Hab's mit bedingte Formatierung versucht und bekomme es nicht hin.
Gibt es eine Möglichkeit, a...
Anzeige

Hallo Excelaner,
ich benötige mal wieder eine Hilfestellung.
Es soll der Wert in einer Spalte angezeigt werde, der in der untersten Zeile steht.
Mittels der Recherche habe ich nun folgende MatrixFormel erstellt:
=INDEX(Z1:Z5000;MAX(WENN(Z1:Z5000"";ZEILE(1:5000)));1)
Nur wird...

Hallo,
ich bräuchte bitte eure Hilfe.
Hab folgende Formel...
Selection.FormulaArray = _
=IF(ROW(R[-107]C[-3])>COUNTA('1'!R5C[4]:R200C[4]),"""",INDEX('1'!R5C4:R200C4,SMALL(IF('1'!R5C[4]:R200C[4]<>"""",ROW(R1:R196),""""),ROW(R[-107]C[-3]))))"
Mein Problem ist, dass ic...
Anzeige

Guten Abend zusammen.
Habe mal wieder ein Problem, dass ich alleine nicht gelöst bekomme.
Es geht darum, einen Ausdruck zu machen wobei nur Zeilen gedruckt werden sollen, die in C einen Wert haben, der grösser Null ist.
Habe mal ein Muster hochgeladen, weil meine Fragen und Erklärun...

Hallo zusammen,
ich bastle mal wieder an meinen Münzdateien und komme nicht so richtig weiter.
Mein Problem:
In Spalte A stehen Werte (z.B. 5 Pf), diese möchte ich nun trennen [in B2 soll per VBA die Funktion =Links(A2;1) / FormulaR1C1 = "=LEFT(RC[-53],1) ].
Diese Formel sollte...

Hallo Leute,
Guten Abend. Ich habe ein ganz großes Problem.
Ich habe eine Exceldatei mit vielen Datensätzen (ca. 8000). In Spalte C habe ich eine Formel, die auf Spalte A und B Bezug nimmt und aus einer Matrix den entsprechenden Wert sucht. Das ganze hat bis jetzt super funktioniert. W...
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige