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

Kann Formel nicht aufzeichnen

Kann Formel nicht aufzeichnen
01.12.2008 15:14:00
Kurt
Guten Tag,
ich habe folgende Formel:
=TEXT(P1;"")&"= "&TEXT(Q1;"##")&" | "&TEXT(P2;"")&"= "&TEXT(R1;"##")&" | "&TEXT(P3;"") &"= "&TEXT(S1;"##")&" | "&TEXT(P4;"")&"= "&TEXT(T1;"##")&" | "& TEXT(P5;"")&"= "&TEXT(U1;"##") &" | "&TEXT(P6;"")&"= "&TEXT(V1;"##")&" | "&TEXT(P7;"")&"= "&TEXT(W1;"##")&" | "&TEXT(P8;"") &"= "&TEXT(X1;"##")&" Gesamt = "&TEXT(Z1;"##")
ich wollte die Formel aufzeichnen, geht nicht,
Warum ?
Geht es unter Umständen als Makro ?
mfg Kurt P aus K

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kann Formel nicht aufzeichnen
01.12.2008 17:21:32
fcs
Hallo kurt,
die Formel-Länge packt der Recorder scheinbar nicht mehr.
der entsprechende Code sieht dann so aus:

Sub aaFormel()
' aaFormel Makro
Dim strFormel As String
'   'Formeltext zusammenfügen
strFormel = "=TEXT(P1;"""")&""= ""&TEXT(Q1;""##"")&"" | ""&TEXT(P2;"""")&""= """
strFormel = strFormel & "&TEXT(R1;""##"")&"" | ""&TEXT(P3;"""") &""= """
strFormel = strFormel & "&TEXT(S1;""##"")&"" | ""&TEXT(P4;"""")&""= ""&TEXT(T1;""##"")"
strFormel = strFormel & "&"" | ""& TEXT(P5;"""")&""= ""&TEXT(U1;""##"")&"" | """
strFormel = strFormel & "&TEXT(P6;"""")&""= ""&TEXT(V1;""##"")&"" | ""&TEXT(P7;""##"")"
strFormel = strFormel & "&""= ""&TEXT(W1;""##"")&"" | ""&TEXT(P8;"""") &""= """
strFormel = strFormel & "&TEXT(X1;""##"")&"" Gesamt = ""&TEXT(Z1;""##"")"
'Formel in aktive Zelle eintragen
ActiveCell.FormulaLocal = strFormel
End Sub


Gruß
Franz

Anzeige
AW: Kann Formel nicht aufzeichnen
02.12.2008 08:58:00
Kurt
Guten Morgen Franz,
danke für das Makro, teste gleich.
mfg Kurt P
Hallo Franz, das funktioniert
02.12.2008 09:23:50
Kurt
Hallo Franz,
das funktioniert einwandfrei !
Danke.
Habe gerade Daniel und Erich dazu was geschrieben,
mir währ es lieb wenn ich eine komfortable Lösung finden würde ?
DANKE !
mfg Kurt P
AW: Kann Formel nicht aufzeichnen
01.12.2008 18:50:00
Daniel
Hi
wenn du die Eingabe dieser Formel als Makro benötigst, dann kannst du das nicht aufzeichnen, weil die Formel für den Recorder zu lang ist.
Wenn du die Formel trotzdem im Makro haben willst, dann kannst du folgendermassen vorghehen:
- Formel von Hand in die Zelle eintragen
- Formel markieren
- in den VBA-Editor und dort ins Direktfenster wechseln
- dort den Befehl eintippen: ?Selection.FormulaLocal
- das Ergebnis kannst du dann in deinen Makrocode reinkopieren:

Range("A1").FormulaLocal = "hier deine Formel"


du musst dabei allerdings folgendes Beachten:
Anführungszeichen, die zur Formel gehören, müssen verdoppelt werden, damit der VBA-Editor das richtig erkennen kann:


Range("A1").FormulaLocal = "=""In Zelle A2 steht: ""&A2"


bei einer Formel wie deiner kannst du dazu die Funktion ERSETZEN nutzen, dazu den Formeltext ZWISCHEN den äusseren Anführungszeichen Markieren und auf BEARBEITEN - ERSEZTEN klicken und dann "markierten TExt" auswählen.
Gruß, Daniel

Anzeige
Hallo Erich u. Daniel
02.12.2008 09:16:22
Kurt
Guten Morgen Ihr Zwei,
danke erst mal für die Hilfe.
Ich muß leider meine Formel irgendwie anders durchführen.
Vielleicht darf ich meine gedanken mal mitteilen:
Da ich ein Makro für das Filtern habe, möchte ich das Ergebnis der Filterung aus der Spalte 4
und aus der Zelle A4 die Anzahl daneben in Zelle C4 setzen.
Beispiel:
Bei der Filterung habe ich 11 ausgewählt und in A4 steht die Anzahl von 5, sollte
In C4 folgendes stehen: 11 =5 .
Das Problem, wenn ich die nächste Filterung durchführe sollte das Ergebnis
in C4 auch kopiert werden also 11 = 5; 25 = 12 u.s.w.
geht sowas überhaupt ?
mfg Kurt P
Anzeige
AW: Hallo Erich u. Daniel
02.12.2008 11:54:31
fcs
Hallo Kurt,
mit einer benutzerdefinierten Funktion kann man die Filterkriterien auslesen.
Hier eine kleine Beispieldatei.
https://www.herber.de/bbs/user/57296.xls
Gruß
Franz
Hier der Code der Funktionen

Function FilterText(rngZelle As Range) As String
'Auflisten aller gesetzten Filter eines Autofilters
'Als Referenz-Zelle eine Zelle unterhalb der Überschriftzeile verwenden _
da sonst Formel nicht automatisch aktualisiert wenn Filter geändert wird.
Dim wks As Worksheet, intI As Integer
Const strSep As String = " | " 'Trenntext zwischen Filtern
Const strInt As String = ": "  'Trenntext zwischen Spaltentitel und Kriterium
Set wks = rngZelle.Parent
If wks.AutoFilterMode = True Then
For intI = 1 To wks.AutoFilter.Filters.Count
If wks.AutoFilter.Filters(intI).On Then
With wks.AutoFilter.Range
'Spaltentitel einlesen
If FilterText = "" Then
FilterText = FilterText & .Cells(1, intI).Value & strInt
Else
FilterText = FilterText & strSep & .Cells(1, intI).Value & strInt
End If
'Filterkriterium ermitteln
FilterText = FilterText & Kriterium(.Cells(2, intI))
End With
End If
Next
If FilterText = "" Then
FilterText = "Kein Filter gesetzt"
End If
Else
FilterText = "Filter nicht Aktiv"
End If
End Function
Function Kriterium(Zelle As Range) As String
'Anzeigen des Filterkriteriums einer Spalte
'Als Referenz-Zelle die Zelle unterhalb der Überschriftzeile des Autofilters verwenden _
da sonst Formel nicht automatisch aktualisiert wenn Filter geändert wird.
Dim wks As Worksheet, FilterNr
Set wks = Zelle.Parent
If wks.AutoFilterMode = True Then
FilterNr = Zelle.Column - wks.AutoFilter.Range.Column + 1
With wks.AutoFilter.Filters(FilterNr)
If .On Then
Kriterium = .Criteria1
Select Case .Operator
Case 0 'Nur 1. Bedingung
Kriterium = .Criteria1
Case xlAnd
Kriterium = .Criteria1 & " UND " & .Criteria2
Case xlOr
Kriterium = .Criteria1 & " ODER " & .Criteria2
Case xlBottom10Items
Kriterium = "Untersten Elemente: " & .Criteria1
Case xlTop10Items
Kriterium = "Obersten Elemente: " & .Criteria1
Case xlBottom10Percent
Kriterium = "Untersten Prozent: " & .Criteria1
Case xlTop10Percent
Kriterium = "Obersten Prozent: " & .Criteria1
End Select
If Kriterium = "=" Or Kriterium = "" Then
Kriterium = Kriterium & """"""
End If
Else
Kriterium = "" 'Filter für Spalte ist nicht gesetzt
End If
End With
Else
Kriterium = ""
End If
End Function


Anzeige
Hallo Franz, UFFFF
02.12.2008 12:36:00
Kurt
Hallo Franz,
das ist schon Superklasse, werde gleich mal testen, sag bescheid.
Wobei ich immer nur die Spalte 3 als Kriterieum habe. Also
in der Spalte3 wähle ich aus soll eingesetzt werden und dann wähle ich in der Spalte3
wieder aus und soll dann in der Zelle B2 weiter addiert werden,
mfg Kurt P aus K
Danke Franz -)
02.12.2008 19:02:21
Kurt
Guten Abend Franz,
ich habe deine Datei getestet, läuft soweit Prima allerdings,
habe ich jetzt nicht die Lösung die ich haben wollte.
Leider...
Na ja muß mal sehen wie ich so hinkomme...
mfg Kurt P aus K
AW: Makroaufzeichnung - zu lange Formel
01.12.2008 20:42:00
Erich
Hallo Kurt,
wenn die Formel so lang ist, dass sie sich nicht auf einmal aufzeichnen lässt, kannst du sie aufteilen
und die zwei (oder evtl. mehr) Teile getrennt aufzeichnen.
Wichtig dabei:
Die Aufzeichnung sollte immer in derselben Zelle stattfinden, damit die Bezüge stimmen.
In R6 ist deine Formel, in R7 eine gekürzte Fassung ( hoffentlich lässt sich TEXT(P2;"") ersetzen durch P2 ).
In R10 und R11 sind die beiden Formelteile.
In R8 habe ich beide Aufzeichnungen (Makro 1) vorgenommen, danach die beiden Teile in Makro2
per Hand zusammengefasst. Die Formel in R8 wurde dann mit Makro2 geschrieben.
 R
6aa= 2 | bb= 3 | cc= 4 | dd= 5 | ee= 6 | ff= 7 | gg= 8 | hh= 9 Gesamt = 11
7aa= 2 | bb= 3 | cc= 4 | dd= 5 | ee= 6 | ff= 7 | gg= 8 | hh= 9 Gesamt = 11
8aa= 2 | bb= 3 | cc= 4 | dd= 5 | ee= 6 | ff= 7 | gg= 8 | hh= 9 Gesamt = 11
9 
10aa= 2 | bb= 3 | cc= 4 | dd= 5 | ee
11= 6 | ff= 7 | gg= 8 | hh= 9 Gesamt = 11

Formeln der Tabelle
ZelleFormel
R6=TEXT(P1;"")&"= "&TEXT(Q1;"##")&" | "&TEXT(P2;"")&"= "&TEXT(R1;"##")&" | "&TEXT(P3;"") &"= "&TEXT(S1;"##")&" | "&TEXT(P4;"")&"= "&TEXT(T1;"##")&" | "& TEXT(P5;"")&"= "&TEXT(U1;"##") &" | "&TEXT(P6;"")&"= "&TEXT(V1;"##")&" | "&TEXT(P7;"")&"= "&TEXT(W1;"##")&" | "&TEXT(P8;"") &"= "&TEXT(X1;"##")&" Gesamt = "&TEXT(Z1;"##")
R7=P1&"= "&TEXT(Q1;"##")&" | "&P2&"= "&TEXT(R1;"##")&" | "&P3&"= "&TEXT(S1;"##")&" | "&P4&"= "&TEXT(T1;"##")&" | "&P5&"= "&TEXT(U1;"##") &" | "&P6&"= "&TEXT(V1;"##")&" | "&P7&"= "&TEXT(W1;"##")&" | "&P8&"= "&TEXT(X1;"##")&" Gesamt = "&TEXT(Z1;"##")
R8=P1&"= "&TEXT(Q1;"##")&" | "&P2&"= "&TEXT(R1;"##")&" | "&P3&"= "&TEXT(S1;"##")&" | "&P4&"= "&TEXT(T1;"##")&" | "&P5&"= "&TEXT(U1;"##") &" | "&P6&"= "&TEXT(V1;"##")&" | "&P7&"= "&TEXT(W1;"##")&" | "&P8&"= "&TEXT(X1;"##")&" Gesamt = "&TEXT(Z1;"##")
R10=P1&"= "&TEXT(Q1;"##")&" | "&P2&"= "&TEXT(R1;"##")&" | "&P3&"= "&TEXT(S1;"##")&" | "&P4&"= "&TEXT(T1;"##")&" | "&P5
R11="= "&TEXT(U1;"##") &" | "&P6&"= "&TEXT(V1;"##")&" | "&P7&"= "&TEXT(W1;"##")&" | "&P8&"= "&TEXT(X1;"##")&" Gesamt = "&TEXT(Z1;"##")

Und hier die beiden Makros (per Hand überarbeitet, damit sie hier besser darstellbar sind):

Sub Makro1()
'                                                           1. Teil
Range("R8").FormulaR1C1 = _
"=R[-7]C[-2]&""= ""&TEXT(R[-7]C[-1],""##"")&"" | ""&R[-6]C[-2]&""= ""&" & _
"TEXT(R[-7]C,""##"")&"" | ""&R[-5]C[-2]&""= ""&" & _
"TEXT(R[-7]C[1],""##"")&"" | ""&R[-4]C[-2]&""= ""&" & _
"TEXT(R[-7]C[2],""##"")&"" | ""&R[-3]C[-2]"
'                                                           2. Teil
Range("R8").FormulaR1C1 = _
"=""= ""&TEXT(R[-7]C[3],""##"") &"" | ""&R[-2]C[-2]&""= ""&" & _
"TEXT(R[-7]C[4],""##"")&"" | ""&R[-1]C[-2]&""= ""&" & _
"TEXT(R[-7]C[5],""##"")&"" | ""&RC[-2]&""= ""&" & _
"TEXT(R[-7]C[6],""##"")&"" Gesamt = ""&TEXT(R[-7]C[8],""##"")"
End Sub
Sub Makro2()
'                                                           beide Teile
Range("R8").FormulaR1C1 = _
"=R[-7]C[-2]&""= ""&TEXT(R[-7]C[-1],""##"")&"" | ""&R[-6]C[-2]&""= ""&" & _
"TEXT(R[-7]C,""##"")&"" | ""&R[-5]C[-2]&""= ""&" & _
"TEXT(R[-7]C[1],""##"")&"" | ""&R[-4]C[-2]&""= ""&" & _
"TEXT(R[-7]C[2],""##"")&"" | ""&R[-3]C[-2]" & _
"&""= ""&TEXT(R[-7]C[3],""##"") &"" | ""&R[-2]C[-2]&""= ""&" & _
"TEXT(R[-7]C[4],""##"")&"" | ""&R[-1]C[-2]&""= ""&" & _
"TEXT(R[-7]C[5],""##"")&"" | ""&RC[-2]&""= ""&" & _
"TEXT(R[-7]C[6],""##"")&"" Gesamt = ""&TEXT(R[-7]C[8],""##"")"
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige