Zahlen aus einer Textzelle herausholen und zuordnung
#1
Hallo, die Ausgangsdaten sind in Tabelle1

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.


Angehängte Dateien
.xlsx   Beispiel Bemerkung Text.xlsx (Größe: 10,49 KB / Downloads: 14)
Top
#2
Hallo,

ich würde es anders aufbauen.

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"

Beispieldatei:


.xlsx   Arbeiten _listen_und_auswerten.xlsx (Größe: 20,27 KB / Downloads: 8)
Gruß Atilla
Top
#3
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.
Top
#4
Hallo,

wenn die Leerzellen in Tabelle1 gelöscht werden, dann eine sehr starre Lösung:

Gib in Zelle F2 der Tabelle3 folgende Formel ein:

=WENN(ISTZAHL(SUCHEN(F$1;Tabelle1!$F2));RECHTS(Tabelle1!$F2;1);"")

und ziehe soweit nach recht und nach unten wie Daten in spalten und zeilen vorhanden.

Rechtschreibfehler können das Ergebnis jederzeit verfälschen!
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • Marvin26
Top
#5
Das funktioniert soweit - vielen Dank.

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).


Vermutlich nur über ein Makro, richtig?


Angehängte Dateien
.xlsx   Beispiel Bemerkung Text.xlsx (Größe: 13,15 KB / Downloads: 3)
Top
#6
Hallo,

das erste Problem könntest Du so lösen:

=WENN(ISTZAHL(SUCHEN(F$1;Tabelle1!$F2));RECHTS(Tabelle1!$F2;1)*1;0)

Die O kannst Du, wenn sie stört, über Formate "wegformatieren".

Das Andere muss ich mir noch ansehen.
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • Marvin26
Top
#7
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.


Deine Beispielmappe mit eingearbeitetem Code:


.xlsm   Kopie von Beispiel Bemerkung Text.xlsm (Größe: 22,35 KB / Downloads: 3)
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • Marvin26
Top
#8
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?
Top
#9
Hallo,

zu P.S:

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:
  • Marvin26
Top
#10
Also ich hatte in einem vorigen Beitrag eine Lösung gefunden zu Zahlenübertragungen per Formel:
https://www.clever-excel-forum.de/Thread...e-Probleme

Hatte gut funktioniert.

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)?


Angehängte Dateien
.xlsm   Kopie von Beispiel Bemerkung Text.xlsm (Größe: 21,53 KB / Downloads: 2)
Top


Gehe zu:


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