Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
740to744
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
740to744
740to744
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

wenn dann über makro mit formel

wenn dann über makro mit formel
09.03.2006 15:05:28
Stefan
hallo,
ich habe in einer tabelle in spalte h verschiedene zahlen stehen, nun möchte ich über ein makro in spalte L das ergebnis durch eine multiplikation mit der zahl aus spalte h ermitteln, wenn bestimmte kriterien erfüllt sind:
0 bis 165 in h = 32,77 in L
166 bis 499 in h = zahl in h multipliziert mit 197,37/1000 in L
500 bis 1499 in h = zahl in h multipliziert mit 169,17/1000 in L
1500 bis 1999 in h = zahl in h multipliziert mit 82,47/1000 in L
größer 2000 in h = zahl in h multipliziert mit 72,90/1000 in L
habe das mit folgendem text versucht, was aber leider nicht funktioniert:
For Each rng In Range("H2:H" & Range("H65536").End(xlUp).Row)
Select Case rng
Case Else
If rng.Value &gt "0" And rng.Value &lt "165" Then
rng.Offset(0, 4) = "32,77"
ElseIf rng.Value &gt= "165" And rng.Value &lt "499" Then
rng.Offset(0, 4).FormulaR1C1 = "=RC[-4]*197,37/1000"
ElseIf rng.Value &gt= "499" And rng.Value &lt "1499" Then
rng.Offset(0, 4).FormulaR1C1 = "=RC[-4]*169,17/1000"
ElseIf rng.Value &gt= "1499" And rng.Value &lt "1999" Then
rng.Offset(0, 4).FormulaR1C1 = "=RC[-4]*82,47/1000"
ElseIf rng.Value &gt= "1999" Then
rng.Offset(0, 4).FormulaR1C1 = "=RC[-4]*197,37/1000"
End If
End Select
Next 'rng
bin für jeden tipp dankbar.
gruß,
stefan

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

Betreff
Datum
Anwender
Anzeige
AW: wenn dann über makro mit formel
09.03.2006 16:00:49
Reinhard
Hi Stefan,
Option Explicit

Sub tt()
Dim zei As Long
For zei = 2 To Range("H65536").End(xlUp).Row
Select Case Cells(zei, 8)
Case Is < 0
Case Is < 166
Cells(zei, 12) = 32.77
Case Is < 500
Cells(zei, 12).FormulaR1C1 = "=RC[-4]*197,37/1000"
Case Is < 1500
Cells(zei, 12).FormulaR1C1 = "=RC[-4]*169,17/1000"
Case Is < 2000
Cells(zei, 12).FormulaR1C1 = "=RC[-4]*82,47/1000"
Case Else
Cells(zei, 12).FormulaR1C1 = "=RC[-4]*72,90/1000"
Next zei
End Sub

Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Anzeige
AW: wenn dann über makro mit formel
09.03.2006 16:42:23
Stefan
hallo reinhard,
danke für die schnelle antwort, es wird allerdings folgender fehler angezeigt:
fehler beim kompilieren: next ohne for
dann wird next zei als fehler markiert.
hast du eine idee?
danke.
stefan
AW: wenn dann über makro mit formel
09.03.2006 16:52:27
Bertram
Hi Stefan,
das ist die Excel-Verarsche:-)
Vor dem Next zei fehlt ein 'End Select'.
Gruß
Bertram
AW: wenn dann über makro mit formel
09.03.2006 17:03:30
Stefan
hallo,
habe das jetzt ergänzt, bekomme aber immer noch einen fehler angezeigt:
laufzeitfehler 1004: anwendungs- oder objektdefinierter fehler
folgende zeile wird gelb als fehler markiert:
Cells(zei, 12).FormulaR1C1 = "=RC[-4]*169,17/1000"
habt ihr eine idee?
danke.
stefan
Anzeige
AW: wenn dann über makro mit formel
09.03.2006 17:22:01
Bertram
Habe jetzt nicht den ganzen Thread gelesen bzw. geprüft, ob das Ergebnis stimmt, aber so funktioniert der Code:

Sub tt()
Dim zei As Long
For zei = 2 To Range("H65536").End(xlUp).Row
Select Case Cells(zei, 8)
Case Is < 0
Case Is < 166
Cells(zei, 12) = 32.77
Case Is < 500
Cells(zei, 12).Value = Cells(zei, 8) * 197.37 / 1000
Case Is < 1500
Cells(zei, 12).Value = Cells(zei, 8) * 169.17 / 1000
Case Is < 2000
Cells(zei, 12).Value = Cells(zei, 8) * 82.47 / 1000
Case Else
Cells(zei, 12).Value = Cells(zei, 8) * 72.9 / 1000
End Select
Next zei
End Sub

Gruß
Bertram
Anzeige
AW: wenn dann über makro mit formel
09.03.2006 17:48:40
Stefan
hallo,
vielen dank für die hilfe. funktioniert ohne probleme.
gruß,
stefan
AW: wenn dann über makro mit formel
09.03.2006 17:47:18
Reinhard
Hi Stefan,
sorry, hatte nicht getestet, probiere es so:
Option Explicit
Sub tt()
Dim zei As Long
For zei = 2 To Range("H65536").End(xlUp).Row
Select Case Cells(zei, 8)
Case Is < 0
Case Is < 166
Cells(zei, 12) = 32.77
Case Is < 500
Cells(zei, 12).FormulaR1C1 = "=RC[-4]*197.37/1000"
Case Is < 1500
Cells(zei, 12).FormulaR1C1 = "=RC[-4]*169.17/1000"
Case Is < 2000
Cells(zei, 12).FormulaR1C1 = "=RC[-4]*82.47/1000"
Case Else
Cells(zei, 12).FormulaR1C1 = "=RC[-4]*72.90/1000"
End Select
Next zei
End Sub

Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Anzeige

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige