Daten 1 in Daten 2
#1
Hallo Leute und Experten!
Gleich zum Thema, ich möchte gerne die werte aus dem Tabellenblatt Spiele von I9-20;M9-20 in das Statblatt mittels VBA übertragen. Wie ist dies möglich. Bitte um einen hinweis! Die werte aus der Spalte M sollten dann in die nächste freie Spalte im Tabellenblatt Startbaltt übertragen werden genauso ist es mit Pumpen und Strafen. Kranz und Alle Neune müssen anders behandelt werden. Aber erste einmal wie geht das in VBA. Stehe wie immer auf dem....


Angehängte Dateien
.xls   Michael_forum1.xls (Größe: 477,5 KB / Downloads: 12)
mfg
Michael
:98:

WIN 10  Office 2019
Top
#2
Hallo Michael,

(13.05.2014, 23:23)michel34497 schrieb: Die werte aus der Spalte M sollten dann in die nächste freie Spalte im Tabellenblatt Startbaltt übertragen werden genauso ist es mit Pumpen und Strafen. Kranz und Alle Neune müssen anders behandelt werden. Aber erste einmal wie geht das in VBA.

Welche freie Spalte ist damit gemeint? Spalte F und folgende oder ab Spalte AK?
Gruß Stefan
Win 10 / Office 2016
Top
#3
Hallo Stefan!

Wie du schon gesschrieben hast meinte ich die Spalte F. Pumpen in Spalte W und Strafen Spalte U


Danke schon mal im vorraus.
mfg
Michael
:98:

WIN 10  Office 2019
Top
#4
Hallo Michael,

teste mal dies

Code:
Sub prcUebernahme()
   Dim lngLetzteZeile As Long, lngC As Long, lngGefuellt As Long
   Dim rngName As Range
  
   With Worksheets("Spiele")
      lngLetzteZeile = .Cells(.Rows.Count, 1).End(xlUp).Row
      For lngC = 9 To lngLetzteZeile
         Set rngName = Worksheets("Startblatt").Columns(2).Find(.Cells(lngC, 1), lookat:=xlWhole, LookIn:=xlValues)
         If Not rngName Is Nothing Then
            lngGefuellt = Application.WorksheetFunction.Count(rngName.Offset(, 4).Resize(, 15))
            If lngGefuellt = 15 Then
               MsgBox "Alle Spalten vom " & rngName.Value & " sind gefuellt!", vbInformation, "Achtung!"
            Else
               rngName.Offset(, 4 + lngGefuellt).Value = .Cells(lngC, 13).Value
               rngName.Offset(, 19).Value = .Cells(lngC, 12).Value
               rngName.Offset(, 21).Value = .Cells(lngC, 9).Value
            End If
         End If
      Next lngC
   End With
   Set rngName = Nothing
End Sub

Dir ist aber schon klar, das die Formeln in der Spalte U und W vom Makro überschrieben werden?Huh
Gruß Stefan
Win 10 / Office 2016
Top
#5
Hallo Stefan!
Vielen Dank für die Hilfe!

Habe eben mal getestet, sah am anfang gut aus. Dann ist mir aber aufgefallen das der Code die werte immer in eine freie Celle schreibt. Dies dürfte er so nicht machen.
Als beispiel: steht im Startblatt hinter einem Namen ab Spalte F schon ein wert so sollte er die nächste Spalte nehmem und dort die werte eintragen. Also werte immer Spalten weis eintragen.

Das die Spalten U und W vom Makro überschrieben werden hab ich nicht dran gedacht :20:.
Diese Spalten werden ja über das Tabellenblatt Daten gefüllt. Besteht die möglichkeit die Pumpen und Strafen dort einzutragen?
Also die Werte aus Spiele in Daten aufzu addieren.


Angehängte Dateien
.xls   Michael_forum1.xls (Größe: 472,5 KB / Downloads: 8)
mfg
Michael
:98:

WIN 10  Office 2019
Top
#6
Hallo Michael,

(15.05.2014, 22:00)michel34497 schrieb: Habe eben mal getestet, sah am anfang gut aus. Dann ist mir aber aufgefallen das der Code die werte immer in eine freie Celle schreibt. Dies dürfte er so nicht machen.
Als beispiel: steht im Startblatt hinter einem Namen ab Spalte F schon ein wert so sollte er die nächste Spalte nehmem und dort die werte eintragen. Also werte immer Spalten weis eintragen.

Und wenn ein Mitspieler mal drei Spiele hintereinander nicht da war, ist eine Lücke drin? Und bei einem Gast der nur ganz selten kommt, was soll da gemacht werden?

(15.05.2014, 22:00)michel34497 schrieb: Das die Spalten U und W vom Makro überschrieben werden hab ich nicht dran gedacht :20:.
Diese Spalten werden ja über das Tabellenblatt Daten gefüllt. Besteht die möglichkeit die Pumpen und Strafen dort einzutragen?
Also die Werte aus Spiele in Daten aufzu addieren.

Im Tabellenblatt Daten stehen keine Namen, wen soll man es dann zu ordnen?
Gruß Stefan
Win 10 / Office 2016
Top
#7
Hallo Stefan!

Deine frage:
Und wenn ein Mitspieler mal drei Spiele hintereinander nicht da war, ist eine Lücke drin? Und bei einem Gast der nur ganz selten kommt, was soll da gemacht werden?

Das Startblatt wird jedesmal an dem Abend wo gespielt ersteinmal geleert. Wir haben leider zwei Spiele wo es sein kann das ein Spieler Nichts eingetragen bekommt. Dann ist bei dem Spieler eine Lücke drin.

Muss leider erstmal Schluss machen die Arbeit ruft.
Melde mich nacher nochmal für mehr details, aber vieleicht hilft ja diese kleine Info schon.
mfg
Michael
:98:

WIN 10  Office 2019
Top
#8
Hallo Michael,

habe es mal umgeschrieben (das mit den Strafen und usw auskommentiert).

Code:
Sub prcUebernahme()
   Dim lngLetzteZeile As Long, lngC As Long
   Dim rngName As Range, rngGefuellt As Range
  
   With Worksheets("Spiele")
      lngLetzteZeile = .Cells(.Rows.Count, 1).End(xlUp).Row
      Set rngGefuellt = Worksheets("Startblatt").Range("F5:T22").Find(What:="*", lookat:=xlWhole, LookIn:=xlValues, _
      searchorder:=xlByColumns, SearchDirection:=xlPrevious)
      For lngC = 9 To lngLetzteZeile
         Set rngName = Worksheets("Startblatt").Columns(2).Find(.Cells(lngC, 1), lookat:=xlWhole, LookIn:=xlValues, searchorder:=xlByRows)
         If Not rngName Is Nothing Then
            If Not rngGefuellt Is Nothing Then
            If rngGefuellt.Column = 20 Then MsgBox "Alle Spalten sind gefüllt!", vbInformation: Exit For
               Worksheets("Startblatt").Cells(rngName.Row, rngGefuellt.Column + 1).Value = .Cells(lngC, 13).Value
'               rngName.Offset(, 19).Value = .Cells(lngC, 12).Value
'               rngName.Offset(, 21).Value = .Cells(lngC, 9).Value
            Else
               Worksheets("Startblatt").Cells(rngName.Row, 6).Value = .Cells(lngC, 13).Value
'               rngName.Offset(, 19).Value = .Cells(lngC, 12).Value
'               rngName.Offset(, 21).Value = .Cells(lngC, 9).Value
            End If
         End If
      Next lngC
   End With
   Set rngName = Nothing
   Set rngGefuellt = Nothing
End Sub

PS: Code zum finden der letzten Spalte ist von hier: Clever-Excel-Forum VBA
Gruß Stefan
Win 10 / Office 2016
Top
#9
Hallo Stefan!
Hast du das mit meiner Tabelle mal getestet?
Ich habe grade getstet und mir ist aufgefallen das nicht alle werte aus Tabellenblatt Spiele der Spalte M in das TabellenBlatt Startblatt ab Spalte F übertragen werden. Ansonsten ist es das was ich haben wollte.
mfg
Michael
:98:

WIN 10  Office 2019
Top
#10
Hallo Michael,

(16.05.2014, 21:41)michel34497 schrieb: Hast du das mit meiner Tabelle mal getestet?
Ich habe grade getstet und mir ist aufgefallen das nicht alle werte aus Tabellenblatt Spiele der Spalte M in das TabellenBlatt Startblatt ab Spalte F übertragen werden. Ansonsten ist es das was ich haben wollte.

klar habe ich das getestet. Werde doch bitte konkreter, welche Werte nicht übertragen werden, bei mir funktioniert alles (außer die Strafen, Pumpen usw. aber das hatte ich ja auskommentiert).
Gruß Stefan
Win 10 / Office 2016
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste