Wegschreiben von Zahlen

Bild

Betrifft: Wegschreiben von Zahlen
von: Andre K.
Geschrieben am: 14.05.2015 22:41:47

Hallo,
ich habe in meiner Excel Datei gerade ein Problem und weiß nicht weiter.
Es geht um zwei Tabellenblätter.
In Blatt 1 habe ich einen Begriff (z.B. Umsatz Kd. xy) und daneben 12 Werte für die jeweiligen Monate (Jan - Dez).
So weit so gut.
In dem zweiten Blatt steht dieser Kunde auch in einer von vielen Zeilen. Die Werte die aber im zweiten Blatt dahinter stehen (Jan-Dez) berechnen sich aktuell. So daß ich nicht einfach einen S-Verweis auf Blatt eins machen kann, weil der Kd. per Dropdown erst ausgewählt wird also dynamisch ist.
Mein Ziel ist wie folgt.
Der Anwender soll im Ersten Blatt neue Werte eintragen (immer in der gleichen Zeile, der Kd. wird per Liste ausgewählt und steht immer im gleichen Feld). Danach soll das Makro beim Start die eingetragenen Werte nehmen, den Kd. im zweiten Blatte quasi wie beim S-Verweis suchen und die Daten dort eintragen und farbig (am besten hellgrün) markieren.
Für Eure Hilfe wäre ich sehr dankbar, ich habe jetzt schon einige Zeit dran gesessen, bekomme es aber mit meinen bisherigen Kenntnissen nicht hin :-(

Bild

Betrifft: AW: Wegschreiben von Zahlen
von: Peter Müller
Geschrieben am: 15.05.2015 09:15:29
Hallo,
wäre hilfreich, wenn du eine Beispieldatei hochladen würdest.

Bild

Betrifft: AW: Wegschreiben von Zahlen
von: Christian
Geschrieben am: 15.05.2015 09:54:14
Hallo,
ich habe es eben mal mit einem S-verweis und Dropdown getestet.
Sofern ich deine Wünsche richtig gedeutet habe, müsste es problemlos funktioneren.
https://www.herber.de/bbs/user/97657.xlsx
Was du mit aktuell berechnen meinst, weis ich nicht genau, aber du kannst hinter den S-Verweis ja noch weitere Eingaben zur Berechnung vornehmen.
Ich hoffe das hilft weiter :)

Bild

Betrifft: AW: Wegschreiben von Zahlen
von: Andre K
Geschrieben am: 16.05.2015 18:36:09
Vielen Dank schon mal für Eure bisherigen antworten.
Die Beispieldatei von Christian ist im Grunde richtig und spiegelt die aktuelle Datei wieder.
Nur passiert folgendes auf dem Blatt 2:
ich überschreibe die Werte in Tabelle 2 mit 12 neuen Zahlen bei einem Kunde den ich mir auswähle. Danach starte ich ein Makro und er schreibt diese 12 Zahlen in Tabelle 1 hinter den richtigen Kunden und markiert anschließend die geänderte Zahl in hellgrün. D.h. das Makro muß den Kunden in Tabelle 1 finden und dann die Werte in Tabelle 1 überschreiben..


Bild

Betrifft: AW: Wegschreiben von Zahlen
von: Andre K.
Geschrieben am: 17.05.2015 19:36:34
ist noch ein Makrospezialist online? :-)

Bild

Betrifft: AW: Wegschreiben von Zahlen
von: Mullit
Geschrieben am: 17.05.2015 22:46:44
Hallo Andre,
vielleicht könnte sowas gehen, hab' mich jetzt an Deinem ersten Beitrag orientiert und die Daten werden von Tabelle1 nach Tabelle2 geschrieben...

' ********************************************************************** 
' Modul: Tabelle1 Typ: Klassenmodul des Tabellenblattes 
' ********************************************************************** 

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Cells(2, 1).Resize(1, 13)) Is Nothing Then
    If Target.Address = "$A$2" Then _
      Call prcInsertNewVal(oprblnColor:=True) _
    Else: Call prcInsertNewVal
  End If
End Sub

Private Sub prcInsertNewVal(Optional ByRef oprblnColor As Boolean)
  Const COLOR_VALUE As Long = 5296274
  Const TAB_SIZE As Long = 3
  Const START_ROW As Long = 11
  Dim avntReturn As Variant
  Dim vntElem As Variant
  With Tabelle2
        avntReturn = Evaluate("=IF(Tabelle2!" & .Cells(START_ROW, 1).Resize(TAB_SIZE, 1).Address & _
        "=Tabelle1!" & Cells(2, 1).Address & ",ROW(Tabelle2!" & _
        .Cells(START_ROW, 1).Resize(3, 1).Address & "),"""")")
        For Each vntElem In avntReturn
            If vntElem <> vbNullString Then
              If oprblnColor Then _
               .Cells(START_ROW, 2).Resize(TAB_SIZE, 12).Interior.Pattern = xlPatternNone
              With .Cells(vntElem, 2).Resize(1, 12)
                   .Value = Cells(2, 2).Resize(1, 12).Value
                   If oprblnColor Then _
                     .Interior.Color = COLOR_VALUE
              End With
              Exit For
            End If
        Next
  End With
End Sub


VBA/HTML - CodeConverter für Office-Foren
AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
Projektbetreuung durch mumpel



Code erstellt und getestet in Office 12

Hab's zum Gegenchecken noch in die Datei eingefügt:
https://www.herber.de/bbs/user/97688.xlsm
Gruß, Mullit

Bild

Betrifft: AW: Wegschreiben von Zahlen
von: Andre K.
Geschrieben am: 18.05.2015 22:01:49
Hallo Mullit,
das ist Klasse, das ist toll!!!
Ich bin sprachlos :-)
Vielen Dank und ganz viele Grüße!!

Bild

Betrifft: AW: Wegschreiben von Zahlen
von: Mullit
Geschrieben am: 18.05.2015 21:21:05
Hallo Andre,
...geht mit der .Find-Methode doch besser...

' ********************************************************************** 
' Modul: Tabelle1 Typ: Klassenmodul des Tabellenblattes 
' ********************************************************************** 

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Cells(2, 1).Resize(1, 13)) Is Nothing Then
    If Target.Address = "$A$2" Then _
      Call prcInsertNewVal(oprblnColor:=True) _
    Else: Call prcInsertNewVal
  End If
End Sub

Private Sub prcInsertNewVal(Optional ByRef oprblnColor As Boolean)
  Const COLOR_VALUE As Long = 5296274
  Const TAB_SIZE As Long = 3
  Const START_ROW As Long = 11
  Dim objRange As Range
  With Tabelle2
      Set objRange = .Cells(START_ROW, 1).Resize(TAB_SIZE, 1).Find( _
         What:=Cells(2, 1).Value, LookIn:=xlValues, LookAt:=xlWhole)
      If Not objRange Is Nothing Then
        If oprblnColor Then _
         .Cells(START_ROW, 2).Resize(TAB_SIZE, 12).Interior.Pattern = xlPatternNone
        With .Cells(objRange.Row, 2).Resize(1, 12)
             .Value = Cells(2, 2).Resize(1, 12).Value
             If oprblnColor Then _
               .Interior.Color = COLOR_VALUE
        End With
        Set objRange = Nothing
      Else
         Debug.Print "NoElementFound"
      End If
  End With
End Sub


VBA/HTML - CodeConverter für Office-Foren
AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
Projektbetreuung durch mumpel



Code erstellt und getestet in Office 12

Gruß, Mullit

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Wegschreiben von Zahlen"