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

Variablen Zuordnung zu Zelleninhalten

Variablen Zuordnung zu Zelleninhalten
02.01.2017 17:06:26
Raphael
Hallo zusammen,
gleich mal vorab... Ich hatte vor ca 10 Jahren in der Berufschule VB gelernt, dann ein bis zwei Jahre spaßeshalber VBA genutzt. Aber seitdem nicht mehr.
Meine VBA Kenntnisse sind schon ziemlich eingerostet.
Folgendes ist mir bekannt: While, If then, Select Case, For Each
Arrays sind mir grundsätzlich ein Begriff, mehr aber auch nicht.
Nun zu meinem Problem:
Ich möchte für die Arbeit ein Programm schreiben, welches mir für wiederkehrende Tiefbau-Projekte die Mengenermittlung vereinfacht bzw abnimmt.
Ich gebe als Grundlage in meine Streckenerfassung abschnittsweise meine Mengen ein (Tiefbau, Rohre, Kabel etc.). Das Makro soll dann anhand dessen die Tabellenblätter "Material", "Tiefbau", "Montage" und "Aufmaß" erstellen.
Ich habe derzeit insgesamt 34 Variablen, welche ich für meine Mengen benötige. Zusätzlich dazu noch einige "Zählervariablen". Es können aber Auftragsbedingt noch welche dazukommen.
Die Mengenermittlung hat bereits funktioniert, ich habe sämtliche Variablen mit den Summen befüllt.
Die Listen die ich nun befüllen möchte sind vom Auftraggeber vorgegeben. Ich scheitere derzeit daran diese Listen mit meinen Werten der Variablen zu befüllen.
Hier eine aus Datenschutzgründen angepasste Liste
Userbild
Ich stelle mir die Lösung wie folgt vor:
Das Makro soll in der vorgegebenen Materialliste die einzelnen Zeilen durchsuchen. Wenn für ein Bestimmtes Material ein Wert in meiner dazugehörigen Variable vorhanden ist, soll der Wert in die Spalte "Menge" eingetragen werden.
Zwei Probleme:
1.
Die Variablen sind aufgrund Übersichtlichkeit nicht identisch mit den Beschreibungen.
Beispiel:
Variable GfKabelA entspricht Glasfaserkabel 1
Variable GfKabelB entspricht Glasfaserkabel 2
Variable DN100 entspricht DN100 Rohr
Wie kann ich im VBA Code definieren, dass eine Variable einem bestimmten Zelleninhalt entspricht, ohne jede einzelne im Code zuzuordnen?
Es sind insgesamt 43 Zeilen in der Materialliste.
2.
Bei der vorgegebenen Materialliste ist ein separates Tabellenblatt mit optionalem Material, welches nach Bedarf hinzugefügt werden kann. Die Struktur ist die gleiche wie in dem Screenshot oben. Leider kann ich an dieser umständlichen Vorgabe nichts ändern.
Hierfür stelle ich mir folgede Lösung vor (wenn möglich):
Das Makro läuft alle Zeilen durch und trägt die möglichen Werte ein. Wenn dann in meinen Variablen noch Werte "übrig" sind, wird die Liste des optionalen Materials durchsucht und die jeweilige Zeile der Materialliste hinzugefügt.

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Name-Werte-Paare (Dictionary)
03.01.2017 12:36:58
Christian
Hallo Raphael,
wenn ich dich richtig verstanden habe, willst du in einem Blatt die Summen der versch. MatNr. ermitteln und diese Summen in ein anderes Blatt übertragen.
Per Formel geht das doch einfach per SUMMEWENN.
In VBA könntest du jetzt einfach die SUMMEWENN-Formel erzeugen und ggf. anschl. die Ergebnisse in Werte wandeln.
Alternativ: nimm ein "Dictionary". Das ist eine Auflistung von Name-Werte-Paaren.
Bsp:
  • in Tabelle1 stehen in Spalte A die Namen (deine MatNr, oder Beschreibung) und können mehrfach vorkommen, in Spalte B die Werte (deine Mengen)

  • in Tabelle2 stehen die Namen jeweils nur einmal in Spalt A.
  • 
    Option Explicit
    Sub TestIt()
    Dim objDic As Object
    Dim strN As String
    Dim i As Long
    Set objDic = CreateObject("Scripting.Dictionary")
    ' Einlesen der Name-Werte-Paare
    With ThisWorkbook.Sheets("Tabelle1")
    For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
    strN = .Cells(i, 1).Text
    objDic(strN) = objDic(strN) + .Cells(i, 2).Value
    Next
    End With
    ' Summen zuweisen
    With ThisWorkbook.Sheets("Tabelle2")
    For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
    strN = .Cells(i, 1).Text
    If objDic.exists(strN) Then
    .Cells(i, 2) = objDic(strN)
    Else
    .Cells(i, 2) = 0
    End If
    Next
    End With
    Set objDic = Nothing
    End Sub
    
    Also sicher brauchst du dafür nicht 34 Variablen.
    Grüße
    Christian
    Anzeige

    301 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige