diese möchte ich in Tabelle 2 rüberführen. In Tabelle3 habe ich das per Hand gemacht, damit man sehen kann wie es aussehen soll.
Das Problem ist, dass es gewisse Daten gibt die nur selten vorkommen und diese dann in die Spalte "Bemerkung" per Texterklärung eingefügt werden - diese möchte ich aber als normale Zahlenwerte in einzelne Spalten haben (siehe Überschriften Tabelle3).
Auch ist ein Problem, dass eine Person an einem Tag mehrere von diesen Vorkommnissen erledigt hat (zum Beispiel Anton und Bernd) und ich nicht weiß wie man diese dann den beiden zuordnen kann, da bei diesen Vorkommnissen in Spalte A kein Name steht. Sprich das was in "F12 und F13" steht soll dem Bernd zugeordnet werden, ohne in Tabelle2 eine extra Zeile zu machen.
Eine Tabelle in der Du Deine Eingaben untereinander machst. In der Beispielmappe die Tabelle "Eingabe" Diese kannst Du dann mithilfe einer Pivottabelle ohne jede Formel auswerten(manuell aktualisieren). Siehe Tabelle "Auswertung"
Damit die Eingaben auch ohne Fehler getätigt werden können, nutze ich die Datengültigkeit. Die Listen der Gültigkeit befinden sich in Tabelle "Listen"
Ich sag mal Danke für die Hilfe, allerdings ist Tabelle1 von meiner Datei so vorgegeben und kann diese auf deine Art nicht umstellen. Auch ist es bei dir so, dass die Zahlenwerte nicht übernommen werden.
Mir ist es wichtig zu wissen, ob man die Zahlenwerte aus der Bemerkungsspalte in eine andere Zelle schreiben kann.
Ein paar Dinge noch, die Zahlenwerte sind jetzt ja als Text definiert, kann ich die Formel umändern, dass er es automatisch zu einer richtigen Zahl macht. =WENN(ISTZAHL(SUCHEN(F$1;Tabelle1!$F2));RECHTS(Tabelle1!$F2;1);"")*1
Das macht es zwar zur Zahl, aber die freizellen haben dann diesen "Fehlerwert", so dass ich damit nicht rechnen kann. (Tabelle2)
In Tabelle4 habe ich jetzt mal deine Formel so eingefügt - wäre es Formeltechnisch möglich die Werte aus F12 und K13 automatisch hochrücken zu lassen. (in F11 und K11 - also dort wo in A ein Name steht)
Also WENN A12 leer, DANN schreibe den Wert eine Zeile nach oben, WENN A11 leer, DANN schreibe Wert eine Zeile nach oben, (bis es auf eine Zelle mit einem Namen trifft).
17.02.2020, 22:17 (Dieser Beitrag wurde zuletzt bearbeitet: 17.02.2020, 23:08 von atilla.)
Hallo,
dann kann alles per Vba erledigt werden.
Folgenden Code hinter die Tabelle, in der die Daten zusammengefasst werden; in der Beispielmappe ist das die Tabelle4:
Code:
Private Sub Worksheet_Activate() Call einlesen End Sub
Sub einlesen()
Dim varDaten Dim arrZiel Dim arrBemerkungen Dim arrDat Dim i As Long, ii As Long, k As Long Dim lngZ As Long Dim vntS
With Sheets("Tabelle1").Range("A2").CurrentRegion 'In Tabelle1 um A1 stehen Die Namen varDaten = .Value lngZ = .Rows.Count End With
arrBemerkungen = Range("F1:K1") 'in der aktivierten Tabelle in Den Zellen: F1:K1 stehen die Bemerkungen Range("F2:K" & lngZ).ClearContents arrZiel = Range("F2:K" & lngZ) 'in der aktivierten Tabelle im Bereich F2:K bis letzte angrenzende Zeile wird geschrieben For i = 2 To lngZ If varDaten(i, 1) <> "" Then arrDat = Split(varDaten(i, 6), ": ") vntS = Application.Match(arrDat(0), arrBemerkungen, 0) If IsNumeric(vntS) Then arrZiel(i - 1, vntS) = CDbl(arrDat(1)) End If Else k = i Do While varDaten(k, 1) = "" ii = i - 1 arrDat = Split(varDaten(k, 6), ": ") vntS = Application.Match(arrDat(0), arrBemerkungen, 0) If IsNumeric(vntS) Then arrZiel(ii - 1, vntS) = CDbl(arrDat(1)) End If k = k + 1 Loop i = k - 1 End If Next i
Range("F2:K" & lngZ) = arrZiel
End Sub
Du brauchst dann nichts mehr machen. Auch keine Formeln eintragen. Alles wird automatisch beim aktivieren der Tabelle4 erledigt.
17.02.2020, 22:43 (Dieser Beitrag wurde zuletzt bearbeitet: 17.02.2020, 22:43 von Marvin26.)
Scheint alles genauso funktionieren wie ich es mir vorgestellt habe. Vielen Dank! :)
P.S. Worauf muss ich achten, wenn ich diesen Code bei meiner richtigen Datei einfüge (welche Zeilen sind zu verändern) - kenn mich bei VBA nicht so richtig aus.
P.P.S. Könnte ich dich per PN benachrichtigen um 2-3 andere Methoden von Datenüberführung, ohne Formeln einzusetzen, zu erfragen?
Im Code siehst Du Bereichsangaben. Schau noch einmal in meinem vorigen Beitrag, dort habe die Stellen nachträglich kommentiert.
zu P.P.S: Wenn alle immer per PN kommuniziert hätten, dann hätte ich Dir die vorige Lösung nicht anbieten können. Mein VBA Wissen ist durch Nachstellen der Fragen und Antworten aus Foren gewachsen.
Außerdem sind hier noch versierterer Helfer unterwegs, die vielleicht eine Lösung anbieten können. Trau Dich und frag bitte hier weiter.
Gruß Atilla
Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:1 Nutzer sagt Danke an atilla für diesen Beitrag 28 • Marvin26
Befürchte nun, dass es in meiner Datei (ich schätze mal ca. 8000 x 60 Einträge) sehr viel Rechenleistung in Anspruch nimmt, alles per Formel zu berechnen.
Eventuell ist es per VBA einfacher/schneller.
Zu meiner Datei: Tabelle1 Ausgangsdaten; Tabelle4 Ziel. a) Wie bekomme ich Einträge A2:E15 in Tabelle4? Wahrscheinlich am einfachsten mit =Tabelle1!A2 und entsprechend kopieren; Auch mit VBA einfacher möglich?
b) Wie bekomme ich Einträge F2:F15 in Tabelle4? Lösung gefunden
c) Wie bekomme ich Einträge G2:I15 in Tabelle4 mit entsprechender Umformung der Zahlenwerte. Per Formel soweit möglich (siehe meinen Link). Per VBA auch möglich?
Warum ist es nicht mehr möglich, dass ich in Tabelle1 etwas kopiere und in Tabelle4 einfüge (in Tabelle4 in "Einfügen" grau, so dass ich es nicht anklicken kann)?