Thema Datum  Von Nutzer Rating
Antwort
08.08.2019 15:34:08 Mirko
NotSolved
08.08.2019 16:26:04 Ulrich
NotSolved
08.08.2019 18:32:28 Mirko
NotSolved
08.08.2019 19:36:05 Trägheit
NotSolved
08.08.2019 21:13:25 Ulrich
NotSolved
09.08.2019 08:55:08 Mirko
NotSolved
09.08.2019 11:29:13 Ulrich
NotSolved
09.08.2019 14:28:43 Mirko
NotSolved
10.08.2019 10:46:52 Ulrich
NotSolved
10.08.2019 16:19:58 Mirko
NotSolved
Rot Transfer LookUp-Tabelle
11.08.2019 14:08:30 Trägheit
NotSolved
12.08.2019 20:43:29 Mirko
NotSolved
13.08.2019 12:39:19 Mirko
Solved
13.08.2019 17:26:09 Trägheit
NotSolved
08.08.2019 16:33:43 Ulrich
NotSolved

Ansicht des Beitrags:
Von:
Trägheit
Datum:
11.08.2019 14:08:30
Views:
413
Rating: Antwort:
  Ja
Thema:
Transfer LookUp-Tabelle

>> Ich hatte nun überlegt, ob es besser ist, wenn das Programm mit der Datei `Zellzuweisung` arbeitet, statt alles in den Code zu packen. Dann könnte man doch auch einfacher Änderunge vornehmen, oder?

Könnte man ... und ja.


An der Stelle möchte ich gerne anmerken, dass dein Anliegen inzwischen weit weg von dem ist, wo es einmal lag. Genau davon habe ich - etwas weiter oben im Themenverlauf - gesprochen.

Es gibt Dienstleistungfirmen die du mit so etwas beauftragen kannst und die dir eine professionelle Lösung in wenigen Wochen liefern. (ich habe früher mal in einer gearbeitet)

 

Nun zu deiner Überlegung:

Hier bietet es sich an, eine Hilfsfunktion zu bauen. Der übergibst du die Information über deine Quelldaten (inkl. Reihenfolge) und sie liefert dir dann zusammenhängend die entsprechende Werte.

Du würdest ihr also z.B. für »Meldung I« den Bereich E9:E14,E17 übergeben und erhälst eine zusammenhängendes Datenfeld mit den Werten (in der Reihenfolge wie sie angegeben wurden - man könnte also auch schreiben E17,E11,E9:E10,E12:E14 und die Reihenfolge wäre demenstprechend eine andere).

 

Hier die Hilfsfunktion (kommt in ein Modul):

'////////////////////////////////
'// helper function
'//+----------------------------+
'// params:
'//  Range      [IN]
'//    ... range object
'//  Count      [IN/OUT, optional]
'//    ... amount of values to receive / amount of values read
'////////////////
Public Function GetValues(ByVal Range As Excel.Range, Optional ByRef Count As Long) As Variant
  
  If Range Is Nothing Then Exit Function
  
  Dim rngArea   As Excel.Range
  Dim vntArray  As Variant
  Dim i&, j&, k&
  
  If Count <= 0 Then Count = Range.Cells.Count
  ReDim vntArray(1 To Count, 1 To 1)
  
  i = 1        'cell idx
  j = 1: k = 1 'area idx / area-cell idx
  Do While i <= Count And j <= Range.Areas.Count
    If k > Range.Areas(j).Cells.Count Then
      j = j + 1 'next area
      k = 1     'reset area-cell idx
    Else
      vntArray(i, 1) = Range.Areas(j).Cells(k).Value
      k = k + 1
      i = i + 1
    End If
  Loop
  
  Count = i - 1
  GetValues = vntArray
  Erase vntArray
  
End Function

 

Die LookUp Tabelle könnte so aussehen:

Bezeichner Ziel Quelle
Bereich Reiter_Name Bereich
I D10:D16 Reiter2 E9:E14,E17
II D17:D26 Reiter2 E20:E28,E34
III D27:D41 Reiter2 E37:E46,E52,E55:E57,E59
IV D42:D47 Reiter2 E62:E66,E72

 

Der Aufruf für die Abarbeitung, der oben in der Tabelle gelisteten Bereiche, könnte dann so aussehen:

Sub MyTest()
  
  Dim wksTnsf As Excel.Worksheet
  Dim wksEval As Excel.Worksheet
  Dim rngEval As Excel.Range
  Dim wksSrc  As Excel.Worksheet
  Dim rngSrc  As Excel.Range
   
  Set wksTnsf = Worksheets("TransferLookUp")
  Set wksEval = Worksheets("Auswertung")
  
  'anhand der Transfer-Tabelle die Daten kopieren/übertragen
  For Each rngSrc In wksTnsf.Range("C3:D6").Rows
    
    'Ziel-Bereich ermitteln (steht in der selben Zeile, eine Spalten nach links)
    Set rngEval = rngSrc.Cells(1).Offset(, -1)
    '..und jetzt referenzieren
    Set rngEval = wksEval.Range(rngEval.Value)
    
    'Quellen-Bereich referenzieren
    Set rngSrc = Worksheets(rngSrc.Cells(1).Value).Range(rngSrc.Cells(2).Value)
    
    'Daten kopieren/übertragen
    rngEval.Value = GetValues(rngSrc, rngEval.Cells.Count)
  Next
  
End Sub

Beachte bitte:

Ich habe hier alles in einer Mappe belassen. Sollte aber nicht schwer fallen die Referenzen zu anzupassen.

 

Grüße


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
08.08.2019 15:34:08 Mirko
NotSolved
08.08.2019 16:26:04 Ulrich
NotSolved
08.08.2019 18:32:28 Mirko
NotSolved
08.08.2019 19:36:05 Trägheit
NotSolved
08.08.2019 21:13:25 Ulrich
NotSolved
09.08.2019 08:55:08 Mirko
NotSolved
09.08.2019 11:29:13 Ulrich
NotSolved
09.08.2019 14:28:43 Mirko
NotSolved
10.08.2019 10:46:52 Ulrich
NotSolved
10.08.2019 16:19:58 Mirko
NotSolved
Rot Transfer LookUp-Tabelle
11.08.2019 14:08:30 Trägheit
NotSolved
12.08.2019 20:43:29 Mirko
NotSolved
13.08.2019 12:39:19 Mirko
Solved
13.08.2019 17:26:09 Trägheit
NotSolved
08.08.2019 16:33:43 Ulrich
NotSolved