Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1060to1064
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
Inhaltsverzeichnis

Makro für ersetzten

Makro für ersetzten
18.03.2009 13:30:37
Julia
Hallo,
ich bräuchte ein Makro welches mir im Tabellenblat Datenbasis in Splate K folgendes macht:
K1 bleibt unverändert
Ab K2 bis zur letzten Zeile soll wenn in der jeweiligen Zelle was drinsteht ein ja reingeschrieben werden. Das ursprüngliche kann überschrieben werden.
Dort wo nichts in Spalte K steht soll ein nein eingetragen werden. (K1 bleibt von Änderungen unberührt)
Wie bekomm ich das hin.
Info zur letzten Zeile: weil ja in den Zellen wo nichts stehen soll ein nein eingetragen werden soll heisst das nicht das bis zur aller letzten Zeile von Excel 65536 mal nein stehen soll
Das Makro soll dort aufhören wo in Spalte A nichts steht.
Bsp:
Meine Datenbasis ist bis zu A500 gefüllt, dann soll das Makro in den Zellen K2 bis K500 Inhalt durch "ja" ersetzten und leere Zellen ein "nein" eintragen

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro für ersetzten
18.03.2009 13:38:51
Oberschlumpf
Hi Julia

Sub test()
Dim liZeile As Integer
With Sheets("Datenbasis")
For liZeile = 2 To Cells(Rows.Count, 11).End(xlUp).Row
If .Range("K" & liZeile).Value  "" Then
.Range("K" & liZeile).Value = "ja"
Else
.Range("K" & liZeile).Value = "nein"
End If
Next
End With
End Sub


Hilfts?
Ciao
Thorsten

AW: Makro für ersetzten
18.03.2009 13:45:13
robert
Hi,
hier meine version........stimmt dein level? ;-)
gruß
robert

Sub tt()
Dim Bereich As Range
Dim cls As Range
Set Bereich = Range("K2:K" & Cells(Rows.Count, 11).End(xlUp).Row)
For Each cls In Bereich
If cls = "" Then
cls = "NEIN"
Else
cls = "JA"
End If
Next
End Sub


Anzeige
AW: Makro für ersetzten
19.03.2009 00:33:36
Daniel
Hi
das lässt sich so lösen.

Sub test()
With Range("K2:K" & Cells(Rows.Count, 1).End(xlUp).Row)
.Formula = .Value 'nur erforderlich, falls in Spalte K Formeln stehen
.SpecialCells(xlCellTypeConstants).Value = "Ja"
.SpecialCells(xlCellTypeBlanks).Value = "Nein"
End With
End Sub


Schleifen sind für sowas überflüssig und viel zu langsam.
Gruß, Daniel

AW: Makro für ersetzten
19.03.2009 08:49:23
robert
hi Daniel,
wenn alle zellen gefüllt, kommt hier fehler.
.SpecialCells(xlCellTypeBlanks).Value = "Nein"
ich bin kein vba profi, mache alles mit hausverstand, daher sicher nicht immer korrekt.
und zur geschwindigkeit.. der ist doch wohl kaum messbar-oder?
gruß
robert
Anzeige
AW: Makro für ersetzten
19.03.2009 12:14:14
Daniel
Hi
ja, wenn die SpecialCells keine Zellen findet, gibts ne Fehlermeldung.
das ist dann einer der wenigen Fälle, wo es sinnvoll ist ein On Error Resume Next einzubauen, das bwirkt, daß das Makro bei einem Fehler einfach weiter läuft.
das sollte man aber wirklich nur für die Codebereiche einsetzen, in denen so ein Fehler auch wirklich auftauchen darf und keine Weiteren Folgen hat.
Deswegen sollte man auch immer gleich mit On Error Goto 0 wieder auf den normalen Modus (abbruch bei Fehler) zurückwechseln.
im Ganzen siehts dann so aus:

Sub test()
With Range("K2:K" & Cells(Rows.Count, 1).End(xlUp).Row)
On Error Resume Next
.Formula = .Value 'nur erforderlich, falls in Spalte K Formeln stehen
.SpecialCells(xlCellTypeConstants).Value = "Ja"
.SpecialCells(xlCellTypeBlanks).Value = "Nein"
 On Error Goto 0
End With
End Sub


zur Geschwindigkeit:
das hängt natürlich davon ab, wie gross dein Zellbereich ist , wieviele Zellen geändert werden müssen und wie schnell dein Rechner ist.
bei grossen Datenmengen sind Schleifen, die Zellen direkt abfragen und verändern aber deutlich langsamer als andere Methoden.
Wenns mal um 10.000 Zeilen und mehr geht und der Rechner etwas langsamer ist, erledige ich die von dir gestellte Aufgabe von Hand (über Bearbeiten - Gehe zu - Inhalte) schneller als so ein Schleifenmakro.
Gruß, Daniel

Anzeige
Danke Daniel-OK :-)) owT
19.03.2009 13:29:32
robert

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige