habe folgendes problem, hoffe ihr könnt mir wieder helfen:
in einem tabellenblatt1 sollen die Zellinhalte der Spalte „D“ mit den Zellinhalten vom anderen tabellenblatt2 Spalte „B“ verglichen werden, wenn die zellinhalte gleich sind dann sollen zellinhalte tabellenblatt1 spalte „J“ mit den Zellinhalten tabellenblatt2 spalte „E“ multipliziert werden. und die ausgabe erfolgt dann im tabellenblatt3 Range(„B20“)
zellinhalte im tabellenblatt1 beginnen ab der zeile 5 und im tabellenblatt2 ab der zeile 2.
wenn ihr fragen zu meiner aufgabe habt, beantworte ich die gerne.
habe schon ein code geschrieben, aber mit dem klappt irgendwie nicht…
Sub programm()
Dim Zeile As Long
Dim Zeile1 As Long
Dim Zeile2 As Long
Dim Zeile3 As Long
Zeile = 2
Zeile1 = 2
Zeile2 = 5
Do Until (Sheets(„tabellenblatt2“).Cells(Zeile + 1, 1) = „“)
If (Sheets(„tabellenblatt2“).Cells(Zeile1 + 1, 2).Value = Sheets(„tabellenblatt1“).Cells(Zeile2 + 1, 4).Value) Then
Sheets(„tabellenblatt3“).Cells(20, 2) = Sheets(„tabellenblatt2“).Cells(Zeile2 + 1, 5).Value * Sheets(„tabellenblatt1“).Cells(Zeile3 + 1, 10).Value
End If
weiter hast Du natürlich ein Theater bei der Row und der Columnenangabe mit den Parametern Zeile1-3, denn nur die zeile selbst wird mit Zeile=Zeile aufadiert, der rest bleibt ja statisch und Konstant. Versuche dochden Parameter Zeile1.3 zu ersetzen mit Zeile+XX
Ich sehe so auf den ersten Blick nur dass Du nur Deine Zählervariable Zeile inkrementierst. Die anderen (Zeile1 und Zeile2) beilen aber immer auf dem selben Stand!
Könnte das schon die Lösung sein?
Habs nur kurz überflogen?
habe lange getüftelt aber dennoch einen Lösungsvorschlag.
Sub vergleich()
Dim i As Integer
i = 2
Do Until (Sheets(2).Cells(i, 2) = „“)
If ((Sheets(1).Cells(i + 3, 4).Value) = (Sheets(2).Cells(i, 2).Value)) Then
Sheets(3).Cells(20, 2) = Sheets(2).Cells(i, 5).Value * Sheets(1).Cells(i + 3, 10).Value
End If
i = i + 1
Loop
End Sub
(ich hoffe die Zeilen bleiben in der Internetansich erhalten und werden nicht wie in diesem Fenster willkürlich umgebrochen)
ich verstehe die Aufgabe nicht ganz. In deinem Programm wird nur Zeile hochgezählt, nicht aber zeile1 und zeile2. Ist das so richtig? Und das Ergebnis soll nur in der Zelle b20 stehen? Welches Ergebnis? Multiplikation nur einer Zeile oder die Summe aus der Multiplikation aller Zeilen?
das ergebnis soll in B20 als summe aller werte in der spalte angezeigt werden.
und kleine ergenzung statt der * soll man
Sheets(„tabellenblatt3“).Cells(20, 2) = Sheets(„tabellenblatt2“).Cells(Zeile2 + 1, 5).Value / Sheets(„tabellenblatt1“).Cells(Zeile3 + 1, 10).Value nehmen. danke im Voraus für deine Hilfe!
Dim zeile, zeile1, zeile2 As Integer
Dim ergebnis As Double
Dim Blatt1, Blatt2, Blatt3 As Object
Sub Programm()
zeile = 3
zeile1 = 3
zeile2 = 6
Set Blatt1 = Sheets(„Tabellenblatt1“)
Set Blatt2 = Sheets(„Tabellenblatt2“)
Set Blatt3 = Sheets(„Tabellenblatt3“)
Do Until Blatt2.Cells(zeile, 1) = „“
If Blatt2.Cells(zeile1, 2).Value = Blatt1.Cells(zeile2, 4).Value Then
ergebnis = ergebnis + Blatt2.Cells(zeile, 5).Value / Blatt1.Cells(zeile2, 10).Value
End If
Dim zeile, zeile1, zeile2 As Integer
Dim ergebnis, teiler As Double
Dim Blatt1, Blatt2, Blatt3 As Object
Sub Programm()
zeile = 3
zeile1 = 3
zeile2 = 6
Set Blatt1 = Sheets(„Tabellenblatt1“)
Set Blatt2 = Sheets(„Tabellenblatt2“)
Set Blatt3 = Sheets(„Tabellenblatt3“)
Do Until Blatt2.Cells(zeile, 1) = „“
teiler = Val(Blatt1.Cells(zeile2, 10).Value)
If teiler = 0 Then teiler = 1
If Blatt2.Cells(zeile1, 2).Value = Blatt1.Cells(zeile2, 4).Value Then
ergebnis = ergebnis + Blatt2.Cells(zeile, 5).Value / teiler
End If
Deinen Korrekturvorschlag kann ich nicht nachvollziehen. „Ergebnis“ zählt Zeile für Zeile die Gesamtsumme zusammen, falls die Bedingung stimmt. Warum sollte man dieser Gesamtsumme noch 1 hinzuzählen?