Anzeige
Archiv - Navigation
604to608
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
604to608
604to608
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Formeln per Code in die Zellen

Formeln per Code in die Zellen
27.04.2005 07:00:30
Erich
Hallo EXCEL-Freunde,
ich bin auf der Suche nach verschiedenen Formeln, die ich per Code in die Zellen
eintrage. Per Macro-Recorder habe ich bereits die grundsätzlichen Code-Lösungen.
Das Problem ist jetzt, dass ich die Formeln so gestalten möchte, dass diese
richtig bleiben, wenn zunächst die Formeln in Werte umgewandelt werden und dann
die Formeln per code wieder neu eingetragen werden müssen (erforderlich wegen Größe
der Datei).
Dazu hatte ich aus dem Forum den Tipp, für Spalten Namen zu verwenden und eine
Formel wurde bereits neu erstellt. Jetzt komme ich aber bei den weiteren Formeln
nicht weiter. Nachstehend meine Testversion mit Kennzeichnung der einzelnen Spalten
sowie Gegenüberstellung meiner misslungenen Ansätze (1. Formel jeweils) mit den
richtigen Formeln (Macrorecorder); lediglich die Formel für Spalte 18 funktioniert:
Sub testen2()
Sheets("Grunddaten").Select
' Spalten werden bezeichnet mit:
' A = Kunde
' B = Konto
' D = Preis
' F = Mitarbeiter
'Spalte 18: Kombi Mitarbeiter + Kunde
Cells(6, 18).Formula = _
"=" & Cells(6, Range("Mitarbeiter").Column).Address(0, 0) & "&" & Cells(6, 1).Address(0, 0)
' Cells(6, 18).FormulaR1C1 = "=RC[-12]&RC[-17]"
'Spalte 19: Kunde doppelt
' Fehlermeldung: Erwartet Anweisungsende bei Kunde ?
Cells(6, 19).Formula = _
"= IF((MATCH(Range("Kunde").Column).Adress(0)=ROW),""Original"",""Doppelt"")"
Cells(6, 19).FormulaR1C1 = _
"=IF(MATCH(RC[-18],C[-18],0)=ROW(),""Original"",""Doppelt"")"
'Spalte 20: Kundenanzahl
'Fehlermeldung: Erwartet Anweisungsende bei Kunde ?
Cells(6, 20).Formula = "=COUNTIF(Cells(6,Range("Kunde").Column).Adress(0,0)"
Cells(6, 20).FormulaR1C1 = "=COUNTIF(C[-19],RC[-19])"

'Spalte 21: Anzahl Kunden
'Fehlermeldung: Erwartet Anweisungsende bei Kunde ?
Cells(6, 21).Formula = _
"=IF(COUNTIF(Range("Kunde").Column).Address(0,0))>0,1/COUNTIF(Range("Kunde").Column))"
Cells(6, 21).FormulaR1C1 = _
"=IF(COUNTIF(C[-20],RC[-20])>0,1/COUNTIF(C[-20],RC[-20]))"
Range("A1").Select
End Sub

Besten Dank für eine Hilfe!
mfg
Erich
EXCEL-Shareware und Freeware: http://www.toolex.de
EXCEL und Lottogewinne machen glücklich: http://48678.rapidforum.com

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formeln per Code in die Zellen
28.04.2005 08:30:23
bst
Hallo Erich,
Du mußt alle Anführungszeichen innerhalb der Formel verdoppeln.
Laß Dir dabei doch vom Excel 'helfen':
- schreibe die Formel manuell im Excel in eine Zelle
- geh ins VBA Direktfenster und gib diese dort aus via: ?[A1].Formula und Return
Wenn Du darin jetzt noch die Anführungszeichen verdoppelst kannst Du das Ergenbis
via Cut&Paste direkt ins VBA einbauen. Nimm hierzu einfach sowas:
?Replace( [b8].Formula,"""","""""")
oder nimm gleich eine Funcktion dafür.
Sub FormulaForVBA() Debug.Print Replace(ActiveCell.Formula, """", """""") End

Sub
Oder lasse es gleich ins VBA schreiben ;-)

Sub FormulaForVBA()
Dim myVBA As String
myVBA = "r.Formula = """ & Replace(ActiveCell.Formula, """", """""") & """"
Application.VBE.CodePanes(1).CodeModule.AddFromString myVBA
End Sub

cu, Bernd
Anzeige
einen Schritt weiter
28.04.2005 21:48:12
Erich
Hallo Bernd,
besten Dank - bin einen Schritt weiter. Benötige noch folgende Lösung. Der "Spaltenname"
(z.B. Kunde für die Spalte A) wird nicht akzeptiert, wenn eine Zelle direkt ausgewählt
werden soll; wie kann ich nachstehende Formel abändern, dass statt A6 die Adresse "Kunde6"
lautet; derzeit wird die VBA-Formel zwar in die Zelle eingetragen - allerdings kommt als
Ergebnis #Name:
Cells(6, 19).Formula = "=IF(MATCH(Kunde6,Kunde:Kunde,0)=ROW(),""Original"",""Doppelt"")"
Spalte A hat den Namen: Kunde
Alle bisher probierten Versionen wie "Kunde6"; "Kunde" & 6 usw. haben nicht geholfen.
Besten Dank nochmal!
mfg
Erich
EXCEL-Shareware und Freeware: http://www.toolex.de
EXCEL und Lottogewinne machen glücklich: http://48678.rapidforum.com
Anzeige
AW: einen Schritt weiter
28.04.2005 23:02:27
bst
Abend Erich,
das geht IMHO schon im Excel nicht, oder hast Du das dort irgendwie hinbekommen ?
Wie - genau bitte - hast Du denn den Namen Kunde definiert ?
Schau mal unter Einfügen-Namen-Definieren nach.
Oder geh ins VBA-Direktfenster und gib das aus: ?Range("Kunde").Address
Wenn Du beim Definieren des Namens die ganze Spalte A markiert hast, gibt's hier vermutlich ein "=Tabelle1!$A:$A" (Excel) bzw. "$A:$A" (VBA).
Dann geht zwar was wie "Kunde" aber keinesfalls was wie "Kunde6".
Wozu soll das "Kunde6" denn überhaupt gut sein ? Sehe da erstmal keinen Vorteil darin.
Gruß, Bernd
Anzeige
AW: einen Schritt weiter
29.04.2005 08:45:55
Erich
Hallo Bernd,
danke für die Info. Im Direktfenster kommt: $A:$A
Das Kunde6 soll in der Formel A6 (Spalte A, Zeile 6) ersetzen:
'=WENN(VERGLEICH(A6;A:A;0)=ZEILE();"Original";"Doppelt")
'=IF(MATCH(A6,Kunde:Kunde,0)=ROW(),"Original","Doppelt")
Aber den Trick für A6 schaffe ich nicht. Der Vorteil ist eben, wenn ich die VBA-Formel
verwende und später Spalten einfüge, dann bleibt Kunde auch Kunde; während die Spalte
A zur Spalte B wird und meine Formeln stimmen schon nicht mehr.
Besten Dank nochmal!
mfg
Erich
EXCEL-Shareware und Freeware: http://www.toolex.de
EXCEL und Lottogewinne machen glücklich: http://48678.rapidforum.com
Anzeige
AW: einen Schritt weiter
29.04.2005 09:31:58
bst
Morgen Erich,
was Du Dir davon versprichst war mir klar ;-)
Allerdings nicht warum und wozu Du via Namen A6 zusammenbauen willst.
Gib dieser Zelle doch einfach einen weiteren Namen 'Kunde6' und gut.
Oder soll diese Formel in viele Zeilen kopiert werden ?
Dann nimm vielleicht eher etwas in diese Richtung:
=ADRESSE(6;SPALTE(Kunde))
d.h. zusammengebaut sowas:
=WENN(VERGLEICH(INDIREKT(ADRESSE(6;SPALTE(Kunde)));Kunde;0)=ZEILE();"Original";"Doppelt")
HTH, Bernd
VOLLTREFFER
29.04.2005 09:59:58
Erich
Hallo Bernd,
ich glaube das wars; fürs erste hats funktioniert; werde das jetzt weiter testen.
Da ich die Formel kopieren muss, benötige ich die Flexibilität.
Also allerbesten Dank!!
mfg
Erich
EXCEL-Shareware und Freeware: http://www.toolex.de
EXCEL und Lottogewinne machen glücklich: http://48678.rapidforum.com
Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige