Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1868to1872
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

Zahlen kopieren mit Versatz

Zahlen kopieren mit Versatz
30.01.2022 21:50:28
Julian
Hallo Excel Forum,
folgender Wunsch:
In Tabelle2 Spalte O befindet sich wechselnde Anzahl von Zeilen (also jedes mal unbestimmt) mit negativen und positiven Zahlen, die je nach Unterscheidung in Tabelle 1 kopiert werden sollen:
Auch in Tabelle1 soll die erste Zahl unter der Used.Range der Spalte eingefügt werden
- Negative Zahlen in Spalte E
- Positive Zahlen in Spalte F
- Die Formel in G (Einnahmen-Ausgaben) soll weiter funktionieren oder auch per VBA kommen.
WICHTIG: Beim kopieren der Zahlen darf in jeder Zeile nur die eine kopierte Zahl stehen und die nächste in der Zeile drunter.
Bsp.: https://www.herber.de/bbs/user/150775.xlsx
Danke für eure Hilfe
Gruß
Julian

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Einfache WENN-Formel
30.01.2022 23:50:47
lupo1
E2: =WENN(0&gtTabelle2!O2:O13;Tabelle2!O2:O13;)
F2: =WENN(0&ltTabelle2!O2:O13;Tabelle2!O2:O13;)
als dynamische Formeln ab xl2021. Älteres XL: E2:E13: und F2:F13: mit {} (Formelarray). BenDefFmt 0;-0;
AW: Einfache WENN-Formel
31.01.2022 00:14:00
Julian
Danke Lupo,
Danke dir
Technisch gesehen klappt das. Aber würde sowas auch VBA Code klappen? Und ohne die Nullen dazwischen und die Fehlermeldung: "Die Formel schließt nicht alle angrenzenden Zellen ein"?
AW: selbst WENN() brauchts hier nicht ...
31.01.2022 08:41:37
neopa
Hallo Julian,
... und die Anzeige der 0 kannst Du doch einfach mit benutzerdefinierten Zahlenformat 0,00;-0,00; unterdrücken.
In E2: =(0&gtTabelle2!O2)*Tabelle2!O2 und in F2: =(Tabelle2!O2&gt0)*Tabelle2!O2 und Formeln weit genug nach unten kopieren.
Und ganz ohne Formeln oder VBA würde ich hierfür PowerQuery einsetzen, welche mit ein paar Mausklicks schnell erzeugt ist und sich automatisch der Anzahl der Quelldaten im Ergebnis auch in Deiner XL-Version anpasst.
Gruß Werner
.. , - ...
Anzeige
PQ behindert einen da nur
01.02.2022 09:32:32
lupo1
- entweder Strg-L (bei der die Formeln sich selbst kopieren)
- oder dynamische Formeln, die die Einträge in der Ausgangsspalte zählen
AW: PQ behindert einen da nur
02.02.2022 01:10:42
Julian
Hallo zusammen,
vielen Dank für eure Rückmeldung. Habe dies verarbeitet und habe dazu noch ein paar Fragen:
1. Wie fügt Ihr hier im Forum die Prozeduren ein, ohne diese als Text einzufügen? Sodass diese in einem separaten Kasten sind?
2. Folgende Prozedur habe ich geschrieben, bzw. teils aus dem Forum mir zusammen gesucht. Aber es sind noch Fehler enthalten. HILFE

Sub UebertragungDaten()
Dim letzteZeile As Integer
Dim iRow As Integer
Dim iRowA As Integer
iRow = Cells(Rows.Count, 1).End(xlUp).Row
letzteZeile = Tabelle8.UsedRange.Rows.Count
Tabelle8.Range("T2:T" & letzteZeile).Copy   ' Verwendungszweck wird übertragen, save!
With Tabelle7
With .Range("B" & .UsedRange.Rows.Count + 1)
.PasteSpecial Paste:=xlPasteValues
End With
End With
 ' Fehler: Wird nicht als Datum angezeit, obwohl Zellen als Datum Formatiert?!?!
Tabelle8.Range("B2:B" & letzteZeile).Copy Destination:=Tabelle7.Range("A" & iRow + 1) ' Datum wird übertragen, aktuell kann nur durch Sub "TextInDatum" umformatiert werden
With Tabelle7   ' Wert Ausgabe wird übertragen --> muss noch als Wert eingefügt werden. Damit beim Wert stehen bleibt beim Import der nächsten Daten
With .Range("E" & iRow + 1).Formula = _
"=(0>SparkasseImport!O2)*SparkasseImport!O2"
.Range("E" & iRow + 1)
.NumberFormat = "0.00;-0.00;"
.PasteSpecial Paste:=xlPasteValues   
End With
End With
With Tabelle7   ' Wert Einnahme wird übertragen --> muss noch als Wert eingefügt werden. Damit beim Wert stehen bleibt beim Import der nächsten Daten
.Range("F" & iRow + 1).Formula = _
"=(SparkasseImport!O2>0)*SparkasseImport!O2"
.Range("F" & iRow + 1).NumberFormat = "0.00;-0.00;"
.PasteSpecial = xlPasteValues   
End With
Tabelle7.Range("E" & iRow).FillDown 

' Fehler: Woran liegt es, dass die Formel nicht runter gezogen wird?

End Sub
Sub TextInDatum()

' Unpraktisch! Extra Formel zum umformatieren, geht das nicht leichter?

Dim vntDaten As Variant
Dim lngZeile As Long
Dim lngSpalte As Long
Dim strFehler As String
Dim rngBereiche As Range
Dim rngFehler As Range
Dim rng As Range
Dim iRow As Integer
iRow = Cells(Rows.Count, 1).End(xlUp).Row
Tabelle7.Range("A2:A" & iRow).Select
vntDaten = Selection
For lngSpalte = 1 To UBound(vntDaten, 2)
For lngZeile = 1 To UBound(vntDaten, 1)
If IsDate(vntDaten(lngZeile, lngSpalte)) Then
vntDaten(lngZeile, lngSpalte) = DateValue(vntDaten(lngZeile, lngSpalte))
If rngBereiche Is Nothing Then
Set rngBereiche = Cells(Selection.Row, Selection.Column) _
.Offset(lngZeile - 1, lngSpalte - 1)
Else
Set rngBereiche = Union(rngBereiche, Cells(Selection.Row, Selection.Column) _
.Offset(lngZeile - 1, lngSpalte - 1))
End If
Else
If rngFehler Is Nothing Then
Set rngFehler = Cells(Selection.Row, Selection.Column) _
.Offset(lngZeile - 1, lngSpalte - 1)
Else
Set rngFehler = Union(rngFehler, Cells(Selection.Row, Selection.Column) _
.Offset(lngZeile - 1, lngSpalte - 1))
End If
strFehler = "Die markierten Zellen enthalten keine Datumsangaben " _
& " und wurden daher nicht verändert." & vbCrLf & vbCrLf & _
"Es können auch mehrere getrennte Zellen markiert sein. Verwenden Sie " _
& "die Tabulatortaste, um von einer Zelle zur nächsten zu gelangen, ohne " _
& "die Markierung aufzuheben."
End If
Next 'lngZeile
Next 'lngSpalte
If strFehler = "" Then
With Selection
.NumberFormat = "dd.MM.yyyy"
.Value = vntDaten
End With
Else
For Each rng In rngBereiche.Areas
rng.NumberFormat = "dd.MM.yyyy"
Next 'rng
Selection = vntDaten
rngFehler.Select
MsgBox strFehler, vbExclamation
End If
Set rng = Nothing
Set rngFehler = Nothing
Set rngBereiche = Nothing
End Sub

Anzeige
Fehlerhafte Prozedur
02.02.2022 01:15:31
Julian
Ah, ich glaube Frage 1 habe ich mir gerade selbst beantwortet. Über "Zitat"
Jetzt noch die offenen Fragen in der Prozedur:
- Formatierung Datum
- PasteSpecial
- am wichtigsten Formel runter ziehen klappt nicht.
mit .Filldown klappte eine andere Prozedur auch.
mit .Autofill gibt er mir immer einen Fehler aus.
AW: Fehlerhafte Prozedur
02.02.2022 07:19:33
Luschi
Hallo Julian,
ein Blick in die Vba-Hilfe (F1-Taste drücken) zu Range.PasteSpecial-Methode hätte Dir unter dem Link zu 'XlPasteType' gezeigt, daß es 12 verschiedene Parameterwerte dazu gibt. Für Dich interessant ist dabei aber nur
.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
bzw.
.PasteSpecial Paste:=12
statt
.PasteSpecial Paste:=xlPasteValues
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Fehlerhafte Prozedur /Filldown
03.02.2022 00:19:48
Julian
Nabend,
Vielen Dank, xlPasteValuesAndNumberFormats hat geklappt.
Kann mir jmd. noch sagen, warum das runterziehen der Formel nicht klappt?
Das Blatt ist als Tabelle formatiert, aber es klappt auch nicht, wenn ich das in den normalen Zellenbereich kopiere.
Was mache ich falsch?
Tabelle7.Range("E" & iRow + 1).FillDown
Excel löscht den Inhalt der Zelle, anstatt runter zu ziehen...

Sub UebertragungDaten()
Dim iRow As Integer
iRow = Cells(Rows.Count, 1).End(xlUp).Row
With Tabelle7.Range("E" & iRow + 1)
.Formula = "=(0>SparkasseImport!O2)*SparkasseImport!O2"
.NumberFormat = "0.00;-0.00;"
End With
With Tabelle7.Range("F" & iRow + 1)
.Formula = "=(SparkasseImport!O2>0)*SparkasseImport!O2"
.NumberFormat = "0.00;-0.00;"
End With
Tabelle7.Range("E" & iRow + 1).FillDown ' Fehler: Woran liegt es, dass die Formel nicht runter gezogen wird?
With Tabelle7.Range("E" & iRow + 1)
.Copy
.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End With
With Tabelle7.Range("F" & iRow + 1)
.Copy
.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End With
Application.CutCopyMode = False
End Sub

Anzeige
AW: Fehlerhafte Prozedur /Filldown
03.02.2022 07:56:19
Luschi
Hallo Julian,
auch hier hilft ein Blick in die Vba-Hilfe:

In diesem Beispiel wird der Bereich A1:A10 der Sheet1 basierend auf dem
Inhalt der Zelle A1 ausgefüllt.
Worksheets("Sheet1").Range("A1:A10").FillDown
Gruß von Luschi
aus klein-Paris
AW: Fehlerhafte Prozedur /Filldown
03.02.2022 09:54:42
GerdL
Hallo Julian,
bezogen auf deine eingangs eingestellte Beispieldatei mit spaltenversetzter Ausgabe.

Sub Unit()
Dim X As Long
X = Tabelle2.Cells(Rows.Count, "O").End(xlUp).Row
Tabelle1.Cells(2, "I").Resize(X - 1).Formula = "=IF(Tabelle2!$O20,Tabelle2!O2,"""")"
Tabelle1.Cells(2, "K").Resize(X - 1).FormulaR1C1 = "=SUM(RC[-2]:RC[-1])"
End Sub

Anzeige
AW: Fehlerhafte Prozedur /Filldown
05.02.2022 00:44:27
Julian
Hallo Luschi, Hallo GerdL
GerdL: das war die Lösung! Perfekt Danke!
Luschi: Mit der VBA-Hilfe im Netz kam ich nicht weiter. Da ich keine feste Zeilenlänge sowohl in der Quelle als auch im Ziel hatte. Daher brauchte ich was flexibles.
Dafür das ich so gar keine Erfahrung mit VBA habe (das ist mein absolut erstes Projekt) denke ich, habe ich schon gut was verstanden und umsetzen können.
Nun funktioniert mein vollautomatisiertes Haushaltsbuch.
Danke nochmals für die Hilfe.
Gruß Julian

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige