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

Excel-Formel in VBA

Excel-Formel in VBA
09.04.2003 22:31:13
CHristoph
Hallo bestes Excel-Forum,

ich bastel grade daran, ne Formel (Wenn - sonst - dann) per VBA einzugeben. Diese Formel funktioniert auch fehlerfrei, nur ist die Eingabe unendlich langsam (ca. 10000 Zeilen)
Da ich diese und ähnliche Formeln in mehreren Tabellen verwenden will, wäre eine schnellere Eingabe von imensem Vorteil.

Die Formel lautet für Spalte L: "Wenn in Spalte G kein Buchstabe steht, dann nimm den Wert aus Spalte G, sonst wenn in Spalte H ein Buchstabe steht, dann verkette den Wert aus Spalte G und H mit "-" als Trennzeichen, sonst verkette die Werte aus Spalte G und H mit "/" als Trennzeichen"
(siehe untenstehenden Code)

Meine Frage: wie kann ich die Buchstabenreihenfolge (A bis Z) als Variable definieren und wie krieg ich diese Variable in eine ExcelFormel verpackt???

kann mir jemand helfen - ich wäre euch zu ewigen Dank verplichtet.

Gruß
Christoph


Sub Formel_Spalte_L()
'
' Makro: Formel für Spalte L
' Wenn in Spalte G kein Buchstabe steht, dann nimm den Wert aus Spalte G,
' sonst wenn in Spalte H ein Buchstabe steht, dann verkette den Wert aus Spalte G und H mit "-" als Trennzeichen,
' sonst verkette die Werte aus Spalte G und H mit "/" als Trennzeichen.

Dim i As Integer
Dim lR As Integer 'lR: lastRow

Application.ScreenUpdating = False

lR = Cells(Rows.Count, 1).End(xlUp).Row

For i = 4 To lR
Cells(i, 12).Select

ActiveCell.FormulaR1C1 = _
"=IF(NOT(OR(RC[-5]=""A"",RC[-5]=""B"",RC[-5]=""C"",RC[-5]=""D"",RC[-5]=""E"" " & _
",RC[-5]=""F"",RC[-5]=""G"",RC[-5]=""H"",RC[-5]=""I"",RC[-5]=""J"",RC[-5]=""K"" " & _
",RC[-5]=""L"",RC[-5]=""M"",RC[-5]=""N"",RC[-5]=""O"",RC[-5]=""P"",RC[-5]=""Q"" " & _
",RC[-5]=""R"",RC[-5]=""S"",RC[-5]=""T"",RC[-5]=""U"",RC[-5]=""V"",RC[-5]=""W"" " & _
",RC[-5]=""X"",RC[-5]=""Y"",RC[-5]=""Z"")),RC[-5] " & _
",IF(OR(RC[-4]=""A"",RC[-4]=""B"",RC[-4]=""C"",RC[-4]=""D"",RC[-4]=""E"" " & _
",RC[-4]=""F"",RC[-4]=""G"",RC[-4]=""H"",RC[-4]=""I"",RC[-4]=""J"",RC[-4]=""K"" " & _
",RC[-4]=""L"",RC[-4]=""M"",RC[-4]=""N"",RC[-4]=""O"",RC[-4]=""P"",RC[-4]=""Q"" " & _
",RC[-4]=""R"",RC[-4]=""S"",RC[-4]=""T"",RC[-4]=""U"",RC[-4]=""V"",RC[-4]=""W"" " & _
",RC[-4]=""X"",RC[-4]=""Y"",RC[-4]=""Z"") " & _
",CONCATENATE(RC[-5],""-"",RC[-4]),CONCATENATE(RC[-5],""/"",RC[-4])))
Next i

Application.ScreenUpdating = True
End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Excel-Formel in VBA
10.04.2003 06:41:38
Forum
Hallo CHristoph

verzichte auf select in VBA knnst du zu 99% darauf verzichten.

Cells(i, 12).FormulaR1C1 = _
"=IF(NOT(OR(RC[-5]=""A"",RC[-5]=""B"",RC[-5]=""C"",RC[-5]=""D"",RC[-5]=""E"" " & _
",RC[-5]=""F"",RC[-5]=""G"",RC[-5]=""H"",RC[-5]=""I"",RC[-5]=""J"",RC[-5]=""K"" " & _
",RC[-5]=""L"",RC[-5]=""M"",RC[-5]=""N"",RC[-5]=""O"",RC[-5]=""P"",RC[-5]=""Q"" " & _
",RC[-5]=""R"",RC[-5]=""S"",RC[-5]=""T"",RC[-5]=""U"",RC[-5]=""V"",RC[-5]=""W"" " & _
",RC[-5]=""X"",RC[-5]=""Y"",RC[-5]=""Z"")),RC[-5] " & _
",IF(OR(RC[-4]=""A"",RC[-4]=""B"",RC[-4]=""C"",RC[-4]=""D"",RC[-4]=""E"" " & _
",RC[-4]=""F"",RC[-4]=""G"",RC[-4]=""H"",RC[-4]=""I"",RC[-4]=""J"",RC[-4]=""K"" " & _
",RC[-4]=""L"",RC[-4]=""M"",RC[-4]=""N"",RC[-4]=""O"",RC[-4]=""P"",RC[-4]=""Q"" " & _
",RC[-4]=""R"",RC[-4]=""S"",RC[-4]=""T"",RC[-4]=""U"",RC[-4]=""V"",RC[-4]=""W"" " & _
",RC[-4]=""X"",RC[-4]=""Y"",RC[-4]=""Z"") " & _
",CONCATENATE(RC[-5],""-"",RC[-4]),CONCATENATE(RC[-5],""/"",RC[-4])))

schalte die automatische Berechnung noch aus.

Gruß

Anzeige
Danke für den Tip
10.04.2003 09:28:41
Christoph
an die automatische Berechnung hätte ich nie gedacht.

über das "Select" stolper ich noch regelmäßig - insbesondere wenn ich das Makro aufzeichne und dann weiter bearbeite

schönen Dank
Gruß
Christoph

Re: Danke für den Tip
10.04.2003 22:32:36
Klaus-Dieter
Hallo Christoph,

warum per Makro Formeln eintragen? Man kann das doch gleich berechnen lassen. Das ist das Makro:


Option Explicit
Sub verketten()
Dim z As Integer
Dim we As Integer
On Error Resume Next
For z = 1 To Range("G65536").End(xlUp).Row
we = Asc(Left(Cells(z, 8), 1))
Select Case we
Case Is = 0
Cells(z, 12) = Cells(z, 7)
Case Is < 65
Cells(z, 12) = Cells(z, 7) & "/" & Cells(z, 8)
Case Is > 65
Cells(z, 12) = Cells(z, 7) & "-" & Cells(z, 8)
End Select
we = 0
Next z
End Sub

Code eingefügt mit: Excel Code Jeanie
So sieht das Ergebnis aus:

Anzeige

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige