Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1068to1072
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
Sicher schon 100 gefragt :-() WENN mit VBA
21.04.2009 15:12:00
Kai
Hi,
Sorry für meine (blöde) Frage, die sicher schon gestellt wurde, finde aber kein passendes Beispiel:
Ich möchte per VBA in meinem Tabellenblatt "QUELLE" die Spalte "C" durchlaufen bis 1000.
Wenn in einer Zelle der Eintrag "ISO" gefunden wird, dann soll in der Spalte AC in der Gleichen Zeile der Eintrag "abzw." reingeschrieben werden. Wenn nicht, nächste Zeile
das soll so bis 1000 gehen.
Danke für eure Hilfe
DAU Kai

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sicher schon 100 gefragt :-() WENN mit VBA
21.04.2009 15:16:47
Reinhard
Hallo Kai,

Sub tt()
With Worksheets("QUELLE")
Range("AC1:AC1000").FormulaLocal = "=WENN(C1=""ISO"";""abzw"";"""")"
Range("AC1:AC1000").Value = Range("AC1:AC1000").Value
End With
End Sub


Gruß
Reinhard

AW: Sicher schon 100 gefragt :-() WENN mit VBA
21.04.2009 15:32:25
Kai
Hallo Reinhard,
Danke, funzt soweit :-)
Noch ne Bitte: habe falsch gedenkt: kannst Du es bitte so schreiben, das :
Wenn "ISO" dann "abzw"
Wenn "AMT" dann "bez"
sonst weiter
Danke Kai
AW: Sicher schon 100 gefragt :-() WENN mit VBA
21.04.2009 15:38:26
Reinhard
Hallo Kai,

Sub tt()
Dim Formel As String
Formel = "=WENN(C1=""ISO"";""abzw"";WENN(C1=""AMT"";""bez"";""""))"
With Worksheets("QUELLE")
.Range("AC1:AC1000").FormulaLocal = Formel
.Range("AC1:AC1000").Value = .Range("AC1:AC1000").Value
End With
End Sub


Gruß
Reinhard

Anzeige
Das ist aber nur bedingt "WENN mit VBA",...
21.04.2009 16:45:11
Luc:-?
...Reinhard,
denn es wdn ja erst Formeln in die Zellen ge~, die dann mit ihrem Ergebnis überschrieben wdn...
Besser wäre da doch wohl eine If...Then...Else...EndIf-Konstruktion oder ggf ein duales If - die vbFkt IIf(...)!
Gruß Luc :-?
AW: Das ist aber nur bedingt "WENN mit VBA",...
21.04.2009 17:55:30
Reinhard
Hallo Luc,
so wie ich hier Vba gelernt habe so sollen doch Excel-Formeln viel schneller sein als jede Zelle einzeln in einer Vba-Schleife zu überprüfen.
Warum sollen also Vba-Schleifen hier besser sein?
Gruß
Reinhard
Weil sonst 2x in jede Zelle geschrieben wird! orT
21.04.2009 22:37:26
Luc:-?
Gruß Luc :-?
AW: dafür ist es aufwendiger zu programmieren.
22.04.2009 00:26:09
Daniel
wenn ne VBA-Schleife schneller sein soll als Excelformeln, dann muss man mit Arrays arbeiten und nicht mit RANGE und CELLS, was idR etwas mehr Programmieraufwand beutet und sich deswegen oft nicht lohnt, eine einfache Formellösung nochmal mit VBA nachzuprogrammieren.
Gruß, Daniel
Anzeige
Du kannst gern machen, was du willst,...
22.04.2009 02:28:49
Luc:-?
...aber allgemeingültige Pgmierung ist das dann eben nicht... ;-)
Gruß Luc :-?
AW: wobitte ist denn die VBA-Schleife
22.04.2009 02:31:45
Daniel
allgemeingültiger als die Excelformel?
da sehe ich jetzt mal keinen Unterschied.
Gruß, Daniel
...bei Pgmm schon, denn solche Konstrukte...
22.04.2009 03:28:54
Luc:-?
...gibt's in vielen Pgmiersprachen (VB/VBA ist auch eine), Daniel,
xlFmln dagegen eher weniger... ;-)
Gute Nacht!
Luc :-?
AW: Sicher schon 100 gefragt :-() WENN mit VBA
22.04.2009 00:48:09
Dirk
Hallo Kai,
meinst du so:

Private Sub CommandButton1_Click()
Dim I As Integer
For I = 0 To 999
If Cells(I + 1, 3) = "ISO" Then Cells(I + 1, 29) = "abzw"
If Cells(I + 1, 3) = "AMT" Then Cells(I + 1, 29) = "bez"
Next I
End Sub


Hier das Beispiel in einer Arbeitsmappe:
https://www.herber.de/bbs/user/61341.xls
LG
Dirk R.

Anzeige
AW: Sicher schon 100 gefragt :-() WENN mit VBA
22.04.2009 01:35:58
Aton
Hallo

Private Sub CommandButton1_Click()
Dim I As Integer
Application.ScreenUpdating = False ' nochmal mindestens 50% schneller
For I = 1 To 1000
If Cells(I , 3) = "ISO" Then Cells(I , 29) = "abzw"
If Cells(I , 3) = "AMT" Then Cells(I , 29) = "bez"
Next I
Application.ScreenUpdating = True' Bild aktualisierung wieder ein
End Sub


Etwas schneller, besser zu lesen und leichter anzupassen.
Gruß Aton
Ps. Natürlich mit Excel Funktionen gehts noch floter, ist aber erst intresant ab 1 , 2 Milionen zu bearbeitenden Zeilen.
Aber der Comp wartet eh öfter auf uns als wir auf ihn.

Anzeige
AW: Dat is ja auch ne extrem einfache Funktion
22.04.2009 01:58:49
Daniel
komplexer würde es beispielsweise, wenn die Ergebniswerte keine festen Werte wären, sondern per SVERWEIS aus einer anderen Tabelle ermittelt werden müssten.
würdest du dann auch den SVERWEIS nachprogrammieren?
die Formelvariante hat desweiteren den Charme, daß die Formel auch ohne VBA, dh. direkt in Excel entwickeln und testen kann, ohne daß ich dazu das Makro laufen lassen muss oder bei komplexeren Umfängen fundierte Programmierkenntnisse haben muss.
Insofern kommt die Formellösung dem durchschnittlichen Excelanwender, der sich eher mit Excelformeln als mit Programmierung auskennt, entgegen.
Und wenns darüberhinaus auch noch schneller ist...
Gruß, Daniel
Anzeige
OT: Na, lass mal gut sein,...
22.04.2009 03:24:25
Luc:-?
...Daniel,
diese Diskussion bringt wohl nichts... ;-)
Es gibt schon noch ganz andere Probleme und die wirst du ja wohl nicht alle mit Formeleintragungen ins TabBlatt lösen wollen?! Da müsstest du ja gleich mal ein Blatt für Hilfszellen anlegen...
Man kann durchaus gezwungen sein, das Eine oder Andere "nachzupgmieren", obwohl ich das nicht so nennen würde. Matrixformeln und -verarbeitende Fktt müsstest du nämlich wirklich oft ins Blatt eintragen, damit sie fkt. Aber dann könntest du dich ja auch gleich bei Excelformeln bedienen, was sicher ganz im Sinne von WF wäre... ;-)
Statement: Was hier zumeist verlangt und auch geliefert wird, sind in aller Regel Insellösungen. Diese sind idR auch wenig anpassungsfrdl, so dass man hier dann inhaltlich ähnliche Probleme zu hauf findet, weil viele User nicht in der Lage sind, Ähnliches zu erkennen bzw anzupassen. Das universalste Element kommt mit Excel selbst - die Funktion. Man muss dann allerdings wissen wie man Bereiche, Operatoren, Funktionen und ihre Argumente miteinander verbindet (da gibt's auch "Untalente"). Da für so manchen Einsatzzweck Fktt zu fehlen scheinen, muss oft mit Formelungetümen (die nur wenige verstehen) oder/und Hilfszellen gearbeitet wdn. Deshalb schreibe ich überwiegend udFktt (die mitunter auch von Subprozz unterstützt wdn). Die können dann von jedem Nutzer ganz einfach im TabBlatt angewendet wdn, ohne dass er unbedingt über VBA-Kenntnisse verfügen muss. Das halte ich für eine VBA-Verwendung im Sinne der xlErfinder (und evtl auch von WF)... ;-)
Die Verwendung "gewöhnlicher" Subprozz zur Erzeugung von Tabb entspricht dagegen eher der Kreuztabb-Fktionalität (Pivot) von xl und ist natürlich auch legitim, falls das nicht auch genausogut mit einer Pivot geht. Ansonsten sollte es nur noch um spezielle Analysen und Ereignisreaktionen sowie Userformulare gehen. Formeln mit VBA einzutragen sollte hptsächlich bei automatischer Blattgenerierung und als Sicherheitslösung eine Rolle spielen. Subprozz sollten so gestaltet wdn, dass alles was evtl später mal geändert (bzw angepasst) wdn muss, am PgmAnfang als Konstante oder Variable deklariert wird; je länger (und dadurch unübersichtlicher) das Pgm, desto eher! Ereignisprozz sollten eher als "Verteiler", denn als eigenständige Pgmm fungieren! Spart Probleme, wenn dasselbe Ereignis später noch anderweitig ausgewertet wdn soll... ;-)

Hilfszellenorgien halte ich übrigens auch für genausowenig hilfreich und praxistauglich wie Fml-Ungetüme (obwohl ich auch mitunter welche zustande bringe). Während letztere oft unverstanden bleiben, provozieren erstere oft ein Übersichtlichkeitschaos, vor allem, wenn sie außerdem noch ausgeblendet wdn. Unverzichtbar sind sie meist nur bei DB-Fktt, dort erzwingen sie aber auf Grund ihres Eintragungsmodus eine gewisse Ordnung...
Gruß Luc :-?
PS: Das habe ich mir natürlich selbst erarbeitet... ;-)
Anzeige

311 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige