Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1880to1884
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
Formel in VBA umschreiben
23.04.2022 23:41:57
Peter
Hallo zusammen,
ich würde gerne die folgende Formel:

=WENN($B4>=E$3;WENN($A4
in VBA umschreiben.
Ich denke das ganze kann man mit einer For-Schleife lösen. Ich kriege es nur leider nicht hin, da die Schleife gleichzeitig in zwei Richtungen laufen müsste...
LetzteSpalte/Zeile sollte Variabel sein.
Anbei die Bsp. Datei:
https://www.herber.de/bbs/user/152615.xlsx
Vielen Dank für eure Hilfe.
Grüße
Peter

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nimm' Median
24.04.2022 00:58:31
Sulprobil

Iif(Application.Worksheetfunction.Median([A4], [B4], [E4]) = [E4], [C4], "")

AW: Nimm' Median
24.04.2022 09:09:24
Peter
Hi, danke für deine Rückmeldung.
Ich kann es leider nur nicht nachvollziehen wie ich es genau umsetzen soll :(
Scheint ein Array zu sein. Damit kenne ich mich noch nicht aus.
Grüße
Peter
AW: Probiere es doch aus
24.04.2022 10:25:45
Sulprobil
Hallo Peter,
Gib einmal ein:
Dim v As Variant
v = Iif(Application.Worksheetfunction.Median([A4], [B4], [E4]) = [E4], [C4], "")
und schaue Dir danach v an.
Oder drücke im VBA Editor die Tasten STRG + g um in das Direktfenster (Immediate Window) zu kommen und gib dort ein:
? Iif(Application.Worksheetfunction.Median([A4], [B4], [E4]) = [E4], [C4], "")
Ändere Deine Zellen A4, B4, C4, E4 und wiederhole Obiges.
Du kannst auch nach Excel VBA Iif googlen oder nach Excel Median.
Viele Grüße,
Bernd
Anzeige
AW: Probiere es doch aus
24.04.2022 10:54:54
Alf16
Hallo Bernd,
kann man die Formel von Peter auch schon als FormulaLocal-Version mit dem Makrorekorder aufzeichnen? Wenn man sie normal aufzeichnet, wird sie ja so dargestellt:

"=IF(R[3]C2>=R3C[4],IF(R[3]C1
Geht das auch so:

"WENN($B4>=E$3;WENN($A4
Gruß Alf
AW: Probiere es doch aus
24.04.2022 11:09:11
GerdL
Moin
ActiveCell.FormulaLocal = "=WENN($B4>=E$3;WENN($A4 Gruß Gerd
AW: Probiere es doch aus
24.04.2022 11:15:35
Bogdan
Hallo,
kann mir jemand helfen den Code umzuschreiben?
Ursprünglich wurde auf Zeile 26 kopiert. Nun soll ab Zeile 15 kopiert werden. Kann mir jemand den Code anpassen. Die oberen Zeilen Verstehe ich (an den Stellen wo 27/>26 steht). Weiter unten mit 11,12,13 leider nicht mehr ;)
Wäre über Tipps Dankbar!
Option Explicit

Sub Zusammenfassen()
Dim wks As Worksheet, wksT As Worksheet
Dim vRow As Variant
Dim iRowL As Integer, iRowT As Integer, iRow As Integer, iRowA As Integer
On Error GoTo ERRORHANDLER
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Set wksT = Worksheets("Zusammenfassung")
wksT.Rows("27:" & wksT.Rows.Count).ClearContents
For Each wks In ThisWorkbook.Worksheets
If wks.Name Like "KW##" Then
iRowL = wks.Cells(wks.Rows.Count, 1).End(xlUp).Row
If iRowL > 26 Then
iRowT = wksT.Cells(wksT.Rows.Count, 1).End(xlUp).Row + 1
wks.Rows(27 & ":" & iRowL).Copy wksT.Cells(iRowT, 1)
End If
End If
Next wks
wksT.Cells.Validation.Delete
iRowL = wksT.Cells(wksT.Rows.Count, 10).End(xlUp).Row
For iRow = 2 To iRowL
wksT.Cells(iRow, 13).Value = wksT.Cells(iRow, 11).Value + wksT.Cells(iRow, 12).Value
Next iRow
ERRORHANDLER:
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Probiere es doch aus
24.04.2022 12:03:30
Alf16
Hallo Gerd,
ich habe mich evtl. nicht richtig ausgedrückt, aber ich wollte wissen, ob man eine Formel, die man mit dem Makrorekorder aufzeichnet, auch als FormulaLocal-Formel aufzeichnen kann. Normalerweise wird sie ja in der Version "FormulaR1C1" aufgezeichnet.
Gruß Alf
AW: Probiere es doch aus
24.04.2022 12:12:57
ralf_b
da täuschst du dich.
vba zeigt dir zwar die formulaRC1 Variante aber in Formula und Fomulalocal stehen deine gesuchten Formate.
AW: Probiere es doch aus
24.04.2022 16:11:37
Alf16
Hallo Ralf,
hast du schon mal eine Formel in eine Zelle eingetragen, während der Makrorekorder lief? Da wird immer die "FormulaR1C1"-Methode verwendet! Und meine Frage war, ob es irgendeine Möglichkeit gibt, um schon bei der Aufzeichnung die "FormulaLocal"-Methode zu verwenden, die ich ansonsten immer hinterher manuell ändern muss!
Gruß Alf
Anzeige
AW: Probiere es doch aus
24.04.2022 20:43:31
ralf_b
Nein, Ich mach das anders. Ich zeichne das Makro auf. Dann setze ich einen Haltepunkt oder schreibe eine debug.print Range("A1").formulalocal Zeile und lasse den Code nochmal laufen. Dann erhalte ich im Direktfenster (Strg +G) den gesuchten Ausdruck. Gibt sicher coolere Möglichkeiten, aber ich brauche das sehr wenig und deshalb reicht mir das so.
AW: Probiere es doch aus
25.04.2022 09:19:11
Herbert_Grom
Hallo Ralf,
natürlich habe ich das auch immer manuell gemacht, aber meine Frage war ja, ob man das mit dem Makrorekorder schon vorbestimmen kann!
Gruß Alf
und wieder...
25.04.2022 09:29:10
Oberschlumpf
...so ne MUTATION!
Alf = Herbert = Alf = ?
HAST DU DAS WIRKLICH NÖTIG?
Anzeige
AW: und wieder...
25.04.2022 09:35:27
Herbert_Grom
Hallo Thorsten,
manchmal überkommt mich eben der Anonymus und da ist es ganz interessant, neutrale Antworten zu bekommen. Aber nun ist Alf16 ja perdu! Bitte nicht so verkniffen sehen! Danke!
Servus
P.S.: Außerdem bin ich ja lange nicht der Einzige, der davon Gebrauch macht!
AW: und wieder...
25.04.2022 09:37:41
Oberschlumpf
nee, leider biste nich der Einzige - wobei allerdings - wäre es nur ein einziger...dann wäre schon allein dieser Eine genau so überflüssig wie ein Kropf!
man ey, lasst doch einfach diesen Scheiß!
AW: und wieder...
25.04.2022 10:05:59
Herbert_Grom
Ach Thorsten, sieh das doch nicht so verkniffen! Manche haben auch handfeste Gründe für eine "Anonymität", wenn sie nämlich vom Arbeitsplatz aus antworten und dies der Chef möglichst nich mitbekommen soll. Übrigens, wenn ich nicht irre, ist "Oberschlumpf" ja auch nicht dein richtiger Nachname, oder? ;o)=)
Servus
P.S.: Samma wida guad?
Anzeige
AW: und wieder...
25.04.2022 10:22:14
Oberschlumpf
hab ich gemeckert, weil der "Forums-Name" ein Fantasie-Name ist? NEIN! Somit versteh ich deinen Einwand bzgl "Oberschlumpf" nicht
hab ich gemeckert, weil der Nachname nicht angegeben wird? NEIN! Somit versteh ich auch diesen Einwand von dir nicht.
hab ich gemeckert, weil jemand anonym sein will? NEIN! Wieso dann so eine Frage?
Wenn wer anonym sein will, dann reicht es vollkommen aus, mit immer nur einem und demselben "Forums-Name" zu kommunizieren - da ist ein Namenswechsel NULL erforderlich!
mir gehts nur tierisch auf die Nerven, dass immer wieder diese Mutationen hier auftreten - sorry, ich empfinde so was als Kindergarten-Niveau
Und mich nervts genau so - wie du meinst, ich soll's nich so verkniffen sehn....du = deine...ich = meine Meinung!
Anzeige
AW: Probiere es doch aus
24.04.2022 12:18:58
Peter
Also ich komme mit Iif(Application.Worksheetfunction.Median([A4], [B4], [E4]) = [E4], [C4], "") leider nicht weiter.
Ich hoffe ich habe mein Problem auch richtig beschrieben.
Ich habe in der Zelle die folgende Formel: =WENN($B4>=D$3;WENN($A4 Diese kopiere ich dann z.B. dann nach unten und nach rechts solange in den Spalten A und B ein Datum steht und in C eine Anzahl.
Solange Start und Ende Datum mit dem Datum in Zeile 3 übereinstimmen wird die Anzahl "C" eingefügt.
Nun würde ich gerne die Formel in VBA zB mit einer For Schleife lösen (nicht die Formel über VBA in die Zelle schreiben)
Hier noch einmal die Datei.
https://www.herber.de/bbs/user/152615.xlsx
Grüße Peter
Anzeige
AW: Probiere es doch aus
24.04.2022 13:15:43
GerdL
Moin Peter!

Sub Unit()
Dim lz As Long, ls As Long
lz = Cells(3, 3).End(xlDown).Row
ls = Cells(3, 3).End(xlToRight).Column
Range(Cells(4, 4), Cells(lz, ls)).FormulaLocal = "=WENN($B5>=D$3;WENN($A5
Gruß Gerd
AW: Probiere es doch aus
24.04.2022 13:53:45
Peter
Hi Gerd,
danke ist auch eine schöne Variante! Werde ich auch denke ich so nutzen!
Gäbe es auch eine Möglichkeit das Ziel ohne Formel in der Zelle zu erreichen?
Grüße Peter
AW: Eine mögliche Lösung
24.04.2022 15:53:01
Sulprobil
Hallo Peter,
Siehe anliegende Datei (ohne jegliche Gewähr, aber ich verwende einen aktuellen Virenscanner).
https://www.herber.de/bbs/user/152625.xlsm
Das Programm:

Option Explicit
Sub Fill_Daily_Columns()
Dim rColTitles As Range
Dim rRowStartDates As Range
Dim vDay As Variant
Dim vStartDay As Variant
With Application.WorksheetFunction
Set rColTitles = Range([D3], [D3].End(xlToRight))
Set rRowStartDates = Range([A4], [A4].End(xlDown))
For Each vStartDay In rRowStartDates
For Each vDay In rColTitles
Cells(vStartDay.Row, vDay.Column) = _
IIf(vDay = .Median(vDay, _
vStartDay, vStartDay.Offset(0, 1)), _
vStartDay.Offset(0, 2), "")
Next vDay
Next vStartDay
End With
End Sub
Viele Grüße,
Bernd
Anzeige
AW: Eine mögliche Lösung
25.04.2022 09:41:54
Peter
Guten Morgen,
die Lösungsvariante funktioniert perfekt!
Die verschachtelte For-schleife kannte ich noch nicht, aber gut zu wissen, dass es möglich ist.
Vielen Dank!
Grüße
Peter

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige