Supportnet / Forum / Tabellenkalkulation
excel makro wert herausziehen neu berechnen und wieder einfügen!
Frage
hi! ich habe eine problem ich möchte aus einem tabellenblatt dem bereich D5 bis AB 384 alle zellen die blau formatiert sind den wert herausziehen mit einem faktor von 0,85 berechnen und wieder an der gleichen position einfügen??? kann nir jemand da helfen?
Antwort 1 von Shaori
den Wert einer Zelle kriegst du mit [Zelle].Value heraus
ob eine Zelle blau markiert ist kriegst du mit dem Befehl [Zelle].Interior.ColorIndex heraus. ColorIndex liefert dann eine Zahl zurück, 0 für nichts, 1 für schwarz, usw. 5 müsste dann blau sein, je nachdem welches blau du meinst ;)
den Bereich kannst du entweder über eine normale Schleife durchlaufen oder per "For Each Zelle in Selection" durchgehen
einfügen des Wertes geht dann wieder über .Value, genauso wie das auslesen
ob eine Zelle blau markiert ist kriegst du mit dem Befehl [Zelle].Interior.ColorIndex heraus. ColorIndex liefert dann eine Zahl zurück, 0 für nichts, 1 für schwarz, usw. 5 müsste dann blau sein, je nachdem welches blau du meinst ;)
den Bereich kannst du entweder über eine normale Schleife durchlaufen oder per "For Each Zelle in Selection" durchgehen
einfügen des Wertes geht dann wieder über .Value, genauso wie das auslesen
Antwort 2 von Shaori
[Zelle] ist natürlich nur ein Platzhalter für die jeweilige Zelle, meist per .Range("A1") usw. abgefragt
Antwort 3 von hawaii6
dankeschön!
verstehe aber leider nur bahnhof bin blond!
könntest du mir bitte ein bsp. darlegen?? wäre super.
verstehe aber leider nur bahnhof bin blond!
könntest du mir bitte ein bsp. darlegen?? wäre super.
Antwort 4 von Saarbauer
Hallo,
versuch es mal mit dem Makro
Sub Makro_85()
´
´ Makro2 Makro_85
´ Makro am 01.11.2006 von Helmut aufgezeichnet
For i = 5 To 384
For j = 4 To 28
If Cells(i, j).Interior.ColorIndex = 41 Then ´Farbe 41 = Blau
Cells(i, j).Value = Cells(i, j).Value * 0.85
End If
Next j
Next i
End Sub
Wobei deine Angabe zur Zellformatierung etwas unklar sind da die Zahl oder der Hintergrund farbig sein können, ich gehe von farbigen Hintergrund aus und dem Balu, dass als Farbe 41 hinterlegt ist.
Gruß
Helmut
versuch es mal mit dem Makro
Sub Makro_85()
´
´ Makro2 Makro_85
´ Makro am 01.11.2006 von Helmut aufgezeichnet
For i = 5 To 384
For j = 4 To 28
If Cells(i, j).Interior.ColorIndex = 41 Then ´Farbe 41 = Blau
Cells(i, j).Value = Cells(i, j).Value * 0.85
End If
Next j
Next i
End Sub
Wobei deine Angabe zur Zellformatierung etwas unklar sind da die Zahl oder der Hintergrund farbig sein können, ich gehe von farbigen Hintergrund aus und dem Balu, dass als Farbe 41 hinterlegt ist.
Gruß
Helmut
Antwort 5 von Shaori
Sub test()
Dim zelle As Range
ActiveWorkbook.Sheets(1).Range("D5:AB384").Select
For Each zelle In Selection
If zelle.Interior.ColorIndex = 5 Then
zelle.Value = zelle.Value * 0.85
End If
Next zelle
End Sub
Das ist das komplette Makro dafür. Die Zahl 1 in der 4. zeile hinter Sheets bezeichnet dein Tabellenblatt. Hast du nur 1 Blatt, dann bleibts bei der 1. ansonsten halt die jeweilige Nummer eintragen an der das tabellenblatt in Excel steht.
ColorIndex = 5 filtert dir die blauen zellen heraus
zelle.Value = zelle.Value * 0.85 multipliziert die Inhalte der blauen Zellen mit 0,85 (Punkt als Komma in Excel!) und fügt das Ergebnis sofort wieder ein
Dim zelle As Range
ActiveWorkbook.Sheets(1).Range("D5:AB384").Select
For Each zelle In Selection
If zelle.Interior.ColorIndex = 5 Then
zelle.Value = zelle.Value * 0.85
End If
Next zelle
End Sub
Das ist das komplette Makro dafür. Die Zahl 1 in der 4. zeile hinter Sheets bezeichnet dein Tabellenblatt. Hast du nur 1 Blatt, dann bleibts bei der 1. ansonsten halt die jeweilige Nummer eintragen an der das tabellenblatt in Excel steht.
ColorIndex = 5 filtert dir die blauen zellen heraus
zelle.Value = zelle.Value * 0.85 multipliziert die Inhalte der blauen Zellen mit 0,85 (Punkt als Komma in Excel!) und fügt das Ergebnis sofort wieder ein
Antwort 6 von hawaii6
hi hab es bei vba in arbeitsmappe eingefügt funkt aber noch nicht die farbe ist blassblau bei excel. muss ich den sheet namen auch beachten? grüsse
Antwort 7 von Saarbauer
Hallo,
erstelle dir ein Makro im dem du eine Zelle in deiner Farbe anlegsu und ersetzt die Farbe 41 in meinem Makro durch deine Farbe, wahrscheinlich 37.
Gruß
Helmut
erstelle dir ein Makro im dem du eine Zelle in deiner Farbe anlegsu und ersetzt die Farbe 41 in meinem Makro durch deine Farbe, wahrscheinlich 37.
Gruß
Helmut
Antwort 8 von Shaori
Sub farbe()
ActiveWorkbook.Sheets(1).Range("B1").Value = _
ActiveWorkbook.Sheets(1).Range("A1").Interior.ColorIndex
End Sub
mach die eine neue Mappe oder erzeuge in derselben ein Feld mit der Farbe. Das feld ist im Beispiel A1. In B1 würde dann der Farbcode stehen. Den musst du dann in dem Makro einfach ersetzen.
zu den Sheets: entweder man schreibt Sheets(<nummer>) und trägt halt die Position des Tabellenblattes ein, oder man gibt den Namen des tabellenblattes in Anführungszeichen ein, also Sheets("Tabelle1"). Nimmt sich nichts, wobei die Variante mit dem Namen sicherer ist wenn sich mehrere Tabellenblätter in der Datei befinden
ActiveWorkbook.Sheets(1).Range("B1").Value = _
ActiveWorkbook.Sheets(1).Range("A1").Interior.ColorIndex
End Sub
mach die eine neue Mappe oder erzeuge in derselben ein Feld mit der Farbe. Das feld ist im Beispiel A1. In B1 würde dann der Farbcode stehen. Den musst du dann in dem Makro einfach ersetzen.
zu den Sheets: entweder man schreibt Sheets(<nummer>) und trägt halt die Position des Tabellenblattes ein, oder man gibt den Namen des tabellenblattes in Anführungszeichen ein, also Sheets("Tabelle1"). Nimmt sich nichts, wobei die Variante mit dem Namen sicherer ist wenn sich mehrere Tabellenblätter in der Datei befinden
Antwort 9 von hawaii6
supppperrr hat gefunzt grosses lob an diese plattform!!!! :)

