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

in einem Bereich Zelle für Zelle bearbeiten ...

in einem Bereich Zelle für Zelle bearbeiten ...
08.05.2008 16:32:06
Peter
alter Wert übernehmen und neuer Wert zurückschreiben.
Guten Tag
Ich möchte im mit "Daten" benannten Spaltenbereich alle Werte mit einer selbstgebastelten Funktion bearbeiten und das Ergebnis in die gleiche Zeile zurückschreiben.
Kann mir jemand ein Beispiel posten, wie eine solche Schlaufe aufgebaut sein muss?
Vielen Dank , Peter

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

Betreff
Datum
Anwender
Anzeige
Zelle mit eigener Funktion kalkulieren
08.05.2008 16:41:00
NoNet
Hallo Peter,
hier ein kleines Beispiel : Alle Zellen des Bereiches "Daten" werden einzeln mit einer eigenen Funktion neu berechnet (hier : mit 3 multipliziert und dann 100 addiert) :


Sub DatenBearbeiten()
    'Kalkuliert die Werte aus Bereich "Daten" mit einer eigenen Funktion
    'und schreibt die Ergebisse wieder in die Zellen zurück
    Dim rngZelle As Range
    For Each rngZelle In Range("Daten")
        rngZelle.Value = Kalkulation(rngZelle) 'Eigene Funktion wird aufgerufen
    Next
End Sub
Function Kalkulation(rngZelle) 'Die eigene Funktion zur Berechnung der neuen Werte
    Kalkulation = rngZelle.Value * 3 + 100 'Dies ist die Berechnung : Wert * 3 + 100
End Function


PS: Es heisst "Schleife" und nicht "Schlaufe" (*gräusslich* )
Gruß, NoNet

Anzeige
OT: Wir wollen doch weder Schuhe noch Päckchen...
09.05.2008 02:18:00
Luc:-?
...binden, NoNet... ;-)
Eigentlich heißt es nämlich zyklische Verarbeitung bzw kurz Zyklus. So hab ich das mal gelernt. Alles andere ist nur "gräuslicher" Jargon! ;-)
Gruß Luc :-?

AW: in einem Bereich Zelle für Zelle bearbeiten ...
08.05.2008 16:41:58
Andi
Hi,
wenn ich Dich richtig verstanden habe, nach folgendem Prinzip (die

Function musst Du natürlich mit Deiner ersetzen):


Sub t()
Dim c As Range
For Each c In Range("Daten")
c.Value = MeineFunktion(c.Value)
Next c
End Sub



Function MeineFunktion(wert As Integer) As Integer
MeineFunktion = wert * 2
End Function


Schönen Gruß,
Andi

Anzeige
AW: in einem Bereich Zelle für Zelle bearbeiten ..
08.05.2008 16:44:00
Reinhard
Hi peter,

Option Explicit
Sub Makro1()
Dim Zelle As Range
ActiveWorkbook.Names.Add Name:="Daten", RefersToR1C1:="=Tabelle1!R5C1:R10C1"
For Each Zelle In Range("Daten")
Zelle = Doppelt(Zelle.Value)
Next Zelle
End Sub
Function Doppelt(x)
On Error Resume Next
Doppelt = 2 * x
If Err.Number = 0 Then Exit Function
Doppelt = "was faul mit " & x
End Function


Gruß
Reinhard

AW: vielen Dank für die superschnelle Hilfe! owT
08.05.2008 16:51:00
Peter

Alternativ könntest du aber auch die...
09.05.2008 02:29:28
Luc:-?
...Subroutine vermeiden, Peter,
und deine udFkt gleich in die betroffenen Zellen eintragen. Wenn da schon Daten stehen ist es manuell (auch mit Hilfszelle!) kompliziert, stehen da Formeln ist es u.U. leichter (in 3 Phasen mit Ersetzen, habe ich kürzlich hier oder woanders beschrieben). Am Elegantesten ginge es natürlich mit einer Subroutine, die deinen udFkt-Aufruf in 2 Teilen um die Originaldaten/-formeln "herumlegt". So löse ich so etwas nämlich (z.B. bei nachträglich erforderlichem RUNDEN der Originaldaten). Die Originaldaten/-formeln bleiben so erhalten und du könntest die ganze Operation auch wieder rückgängig machen (falls an deiner udFkt was nicht stimmt).
Gruß Luc :-?
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige