Live-Forum - Die aktuellen Beiträge
Datum
Titel
23.04.2024 14:59:21
23.04.2024 14:47:39
23.04.2024 14:23:45
Anzeige
Archiv - Navigation
404to408
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
404to408
404to408
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Übertrag in Zeile statt Spalte + Runden ...

Übertrag in Zeile statt Spalte + Runden ...
Andreas
Hallo auch,
kann mir bitte jemand sagen, was ich an folgendem Code ändern muss,
so dass die Werte wie von mir gewünscht in die Zellen der
Zeile "4" geschrieben werden (siehe "Liste_Ziel")?
Irgendwas stimmt noch nicht, weil bislang werden sie noch in die Spalte "B", also B4, B5, B6 ... geschrieben:

Sub Uebertrag()
Dim Liste_Quelle As Range, Liste_Ziel As Range
Set Liste_Quelle = Range("B3,C3,D3,E3,F3,G3,H3")
Set Liste_Ziel = Range("B4,C4,D4,E4,F4,G4,H4")
For Each cell In Liste_Quelle
If cell.Offset(0, 1).Value > 0 Then
Liste_Ziel.Cells(1, 1).Value = cell.Value  '**
Set Liste_Ziel = Liste_Ziel.Offset(1)
End If
Next
End Sub

** hier möchte ich die Zahl noch gerundet haben und wenn's eine 3-stellige Zahl ist sollen nach der Rundung noch 10 abgezogen werden bei einer 4-stelligen Zahl nach der Rundung 100 usw.
Vielen Dank im Voraus,
Andreas
AW: Übertrag in Zeile statt Spalte + Runden ...
Hans
Hallo Andreas,
die Sache ist komplizierter, als man im ersten Moment denkt ;-)

Sub Uebertrag()
Range("B4:H4").Value = Range("B3:H3").Value
End Sub

gruss hans
AW: Übertrag in Zeile statt Spalte + Runden ...
Andreas
Guten Morgen Hans,
danke zunächst, aber die Sache ich nicht ganz so einfach, wie man erst denkt :o)
Oder sollte ich immer noch auf dem Holzweg sein?
a) Mein Übertragungskriterium ist ja, dass die Zahl nicht negativ ist. Wenn sie es ist, dann soll eine Null überragen werden.
b) Zudem kommt noch, dass in die jeweilige Zielzelle nur ein abgerundeter Wert geschrieben werden soll, so dass in der jeweiligen Ursprungszelle noch ein Wert erhalten bleibt. Der Sachverhalt im Excelblatt ist so, dass der Wert, der in die Zielzelle geschrieben wird vom Wert in der Ursprungszelle abgezogen wird.
c) Zudem soll nur ein so hoher Wert in die jeweilige Zielzelle geschrieben werden, dass in der Ursprungszelle ein Mindestbetrag erhalten bleibt.
Mein jetziger Stand ist:

Sub Uebertrag()
Dim Liste_Quelle As Range, Liste_Ziel As Range
Set Liste_Quelle = Range("B3,C3,D3,E3,F3,G3,H3")
Set Liste_Ziel = Range("B7,C7,D7,E7,F7,G7,H7")
Set Mindestbetrag = Range("A1")
For Each cell In Liste_Quelle
If cell.Offset(0).Value <= Mindestbetrag.Value Then
Liste_Ziel.Cells(0).Value = 0
Else
Liste_Ziel.Cells(0).Value = _
Application.WorksheetFunction.Round(cell.Value - Mindestbetrag.Value - 5, -1)
End If
Set Liste_Ziel = Liste_Ziel.Offset(1)
Next
End Sub

Guten Gruß,
Andreas
Anzeige
AW: Übertrag in Zeile statt Spalte + Runden ...
Hans
Hallo Andreas,
da habe ich bezüglich der Begrenzung auf positive Zahlen in der Tat nicht richtig hingelesen. Dies und die neue Anforderung berücksichtigt, hieße das:

Sub Uebertragen()
Dim rng As Range
For Each rng In Range("B3:H3")
If rng.Value > 0 Then
rng.Offset(1, 0).Value = _
WorksheetFunction.Round( _
rng.Value - Range("A1").Value - 5, -1)
Else
rng.Offset(1, 0).Value = 0
End If
Next rng
End Sub

gruss hans
AW: Übertrag in Zeile statt Spalte + Runden ...
Andreas
Hallo Hans,
vielen Dank und - soeben ausprobiert - es funktioniert!
Aufgrund des von Dir gewählten Codes werden die Zahlen ja in die Zeile unter der Quellzeile geschrieben [rng.Offset(1, 0)]. Jetzt
habe ich mir einen abgebrochen, den Code noch so zu ändern, dass die Zahlen in einen Bereich geschrieben werden, für den ich vorher
einen Namen festegelegt habe [z.B. "Zielzellen"]. Klappt aber irgendwie noch nicht. Kannst Du mir bitte noch mal eine Abhilfe
nennen?
Guten sonnigen Gruß,
Andreas
Anzeige
AW: Übertrag in Zeile statt Spalte + Runden ...
Hans
Halo Andreas,
mit variablen Bereichen sieht das so aus:

Sub Uebertragen()
Dim rngSource As Range, rngTarget As Range, rngAct As Range
Dim iCell As Integer
Set rngSource = Range("B3:H3")
Set rngTarget = Range("B4:H4")
For iCell = 1 To rngSource.Cells.Count
If rngSource(iCell).Value > 0 Then
rngTarget(iCell).Value = _
WorksheetFunction.Round( _
rngSource(iCell).Value - Range("A1").Value - 5, -1)
Else
rngTarget(iCell).Value = 0
End If
Next iCell
End Sub

gruss hans
AW: Übertrag in Zeile statt Spalte + Runden ...
03.04.2004 18:08:29
Andreas
Vielen Dank Hans,
hat vorherragend geklappt!
Schönes WE Dir noch,
Andreas
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige