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

Zeilen nur übertragen wenn,...

Zeilen nur übertragen wenn,...
Bowl

Sub Abteilung1_Aktualisieren ()
Dim i, x, v, y, c As Integer, sh As Worksheet
i = 10
For Each sh In ThisWorkbook.Worksheets
If IsNumeric(sh.Name) Then
If sh.Cells(13, 17) = 0 Then
GoTo MARKE1
Else:
Worksheets("A_Saegen").Unprotect
Worksheets("A_Saegen").Cells(i, 2) = sh.Name
Worksheets("A_Saegen").Cells(i, 3) = sh.Range("B4")
For x = 3 To 15
If Sheets(sh.Name).Cells(13, x).Value  "" And Sheets(sh.Name).Cells(9, x). _
Value >= Sheets(sh.Name).Cells(2, 17).Value Then
y = Sheets(sh.Name).Cells(13, x).Value
v = Sheets(sh.Name).Cells(9, x).Value
For c = 4 To 13
If Sheets("A_saegen").Cells(9, c).Value = v Then
Sheets("A_saegen").Cells(i, c).Value = y
End If
Next c
End If
Next x
Worksheets("A_saegen").Protect
End If
i = i + 1
End If
MARKE1:
Next sh
End Sub
Folgendes Problem:
Ich hab mehrere Tabellenblätter X1,... die nach und nach angelegt werden.
In Zeile 9 stehen Werte für Kalenderwochen, die Werte in Zeile 13 sollen dann in das Blatt von Abteilung A übertragen werden und den entsprechenden Kalenderwochen auch in Zeile 9 (hier aber durch Formel Kalenderwoche()...) eingetragen werden.
Als erstes wird der Name/wert aus zelle B3 in blatt x in die spalte B in blatt 1 übertragen, in spalte c der wert aus C3 von blatt x. die Übertragung soll logischerweise nur dann geschehen, wenn die abteilung in irgendeiner woche mit dem Projekt zu tun hat (also in irgendeiner zelle in zeile 13 blatt x werte stehen; dazu werden die werde zusammengezählt und in Q13 Blatt X stehen die Summen --> Übertragung wenn Summe > 0
Soweit funktioniert das ganze Perfekt:
Jetzt habe ich folgendes Problem:
Falls Werte ausschliesslich in der Vergangenen KW stehen ist eine Übertragung ja sinnlos; Werte werden auch nicht übertragen, allerdings sind die zellen in B und C noch immer gefüllt.
Wie schaff ich es, vor der Übertragung zu kontrollieren ob überhaupt Werte in den Spalten mit kommenden KW stehen?
Versuche das ganze durch den teil
And Sheets(sh.Name).Cells(9, x).Value >= Sheets(sh.Name).Cells(2, 17).Value

also wenn der wert (KW in Spalte 9 größer oder gleich dem wert in (2,17) ist (hier steht immer die aktuelle KW folgt die übertragung...
Versuch des ganze jetzt so, aber so klappt noch weniger
Sub Akutalisieren_Saegen()
Sheets("A_Saegen").Unprotect
Sheets("A_Saegen").Range("A10:P68").ClearContents
Dim i, x, v, y, c As Integer, sh As Worksheet
i = 10
For Each sh In ThisWorkbook.Worksheets
If IsNumeric(sh.Name) Then
If sh.Cells(13, 17) = 0 Then
GoTo MARKE1
Else:
For x = 3 To 15
If Sheets(sh.Name).Cells(13, x).Value = "" Or Sheets(sh.Name).Cells(9, x). _
Value >= Sheets(sh.Name).Cells(2, 17).Value Then
GoTo MARKE2
Else:
Worksheets("A_Saegen").Unprotect
Worksheets("A_Saegen").Cells(i, 2) = sh.Name
Worksheets("A_Saegen").Cells(i, 3) = sh.Range("B4")
y = Sheets(sh.Name).Cells(13, x).Value
v = Sheets(sh.Name).Cells(9, x).Value
For c = 4 To 13
If Sheets("A_saegen").Cells(9, c).Value = v Then
Sheets("A_saegen").Cells(i, c).Value = y
End If
Next c
End If
Next x
MARKE2:
Worksheets("A_saegen").Protect
End If
i = i + 1
End If
MARKE1:
Next sh
End Sub

Irgendjemand nen Tipp, wäre sehr dankbar :)

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Korrektur:
29.07.2009 09:50:15
Bowl
In der 2. Variante muss wohl heissen:
If Sheets(sh.Name).Cells(13, x).Value = "" Or Sheets(sh.Name).Cells(9, x).Value 

o.T.
29.07.2009 09:50:47
Bowl
.
AW: o.T.
29.07.2009 09:51:22
Bowl
.
Problem gelöst!
29.07.2009 09:58:34
Bowl
Warn nur kleine Umstellunge, sry eben wollt des "Frage noch offen"-Häkchen nich wie ich wollte
Falls jemand interessieren sollte:
Sub Aktualisieren_Saegen()
Sheets("A_Saegen").Unprotect
Sheets("A_Saegen").Range("A10:P68").ClearContents
Dim i, x, v, y, c As Integer, sh As Worksheet
i = 10
For Each sh In ThisWorkbook.Worksheets
If IsNumeric(sh.Name) Then
If sh.Cells(13, 17) = 0 Then
GoTo MARKE1
Else:
For x = 3 To 15
If Sheets(sh.Name).Cells(13, x).Value = "" Or Sheets(sh.Name).Cells(9, x). _
Value 

Anzeige
AW: Problem gelöst!
29.07.2009 10:38:35
Luschi
Hallo Bowl,
ich habe mal Deinen Vba-Code so umgebaut, daß die 'häßlichen Sprungmarken' entfallen können.
Sub Aktualisieren_Saegen()
Sheets("A_Saegen").Unprotect
Sheets("A_Saegen").Range("A10:P68").ClearContents
Dim i, x, v, y, c As Integer, sh As Worksheet
i = 10
For Each sh In ThisWorkbook.Worksheets
If IsNumeric(sh.Name) Then
If sh.Cells(13, 17)  0 Then
For x = 3 To 15
If Not (Sheets(sh.Name).Cells(13, x).Value = "" Or Sheets(sh.Name).Cells(9, x). _
Value 
Gruß von Luschi
aus klein-Paris
Ok Danke,...
30.07.2009 08:28:23
Bowl
...wohl doch etwas schöner als meine "Notlösung"
Grüße
Anzeige
Du bist doch nicht zum ersten mal hier...
29.07.2009 10:00:15
Bertram
Hallo Schüssel,
...aber das hast du wohl immer noch nicht gelernt:
Userbild
Gruß
Bertram
Wenn gelöst, dann eben wieder zu:-) oT
29.07.2009 10:01:38
Bertram
AW: Zeilen nur übertragen wenn,...
03.08.2009 10:29:16
Bowl
Guten Morgen zusammen,
ein kleines Problem tut sich dann doch auf:
es kann sein, dass in einer Zeile (in dem Blatt aus dem kopiert wird), in mehreren Spalten Werte stehen.
Mit dieser Lösung hier ist allerdings das Problem, dass für jeden Wert in so einer Zeile bspw. in dem Blatt A_Saegen eine neue Zeile steht; dies würde zwar auch gehen, allerdings ists deutlich schöner wenn auch in dem Blatt A_Saegen alle zusammengehörenden Werte in der einen Zeile stehen; find hier aber nicht so recht die passende Lösung :/
Irgendjemand ne Idee?
Vielen Dank im Vorraus
Grüße
Bowl
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige