MS Access 03 - Normalisieren von Daten aus einer Excel-Tabelle
-
18-09-2019 - |
Frage
Ich habe eine Frage zu einem Verfahren auseinander etwas zu brechen. Ich erhalte diese Excel-Tabelle, die mich mit Daten zur Verfügung stellt, die ich brauche einen Bericht zu tun. Es ist ziemlich einfach und geradlinig, aber es gibt einen bestimmten Teil davon, der mir etwas Kummer gibt.
In der Excel-Tabelle gibt es eine Spalte, die „Beteiligten“ in einer Spalte aufgeführt sind. Es ist in der Regel etwa 12 Personen der Namen durch Kommata getrennt, sondern auch in Klammern dahinter OrgID hat:
Joe Smith (DIV32), John Doe (DIV12), roger andrews (DIV14, DIV67, DIV01), etc
und ich brauche diese in einzelne Spalten zu brechen, so dass sie einzelne Felder sein werden, wenn ich sie in dem Zugang zu importieren. Ich weiß, wie in Excel „Text in Spalten“, aber das oben geschraubt werden, wenn jon doe
(DIV13, DIV54, etc.), mehr als eine Teilung hat.
Nicht sicher, wie dies in Zugang zu tun, sondern würde wissen, gerne.
Wer hat entweder eine Excel-Formel, oder Zugriffsmethode für diese bitte?
Lösung
Ich nehme an, Sie diese in Ihre Datenbank importieren. Wenn nicht, ist es wahrscheinlich einfacher, wenn Sie das tun, auch wenn es vorübergehend; und erneuert jedes Mal, Sie haben den Bericht auszuführen
Sie werden drei Tabellen am Ende mit dieser Situation stellen
- theParty (Person)
- theOrganisation
- thePartyOrg
theParty mit hat eine ID-Spalte
theOrganisation wird über eine eigene ID-Spalte
thePartyOrder wird über eine eigene ID-Spalte, einen für theParty und ein für theOrganisation
Wenn Sie eine Partei darstellen wollen als Mitglied und Organisation bringen, müssen Sie die Partei stellen Sie sicher, existiert / erstellt wird; die Organisation existiert / erzeugt wird, und Henne einen Eintrag in der thePartyOrg Tabelle zu erstellen, die an beiden Punkten.
Da diese Verbindungsinformationen nur als Text in einer einzigen Spalte gespeichert ist, ist es wahrscheinlich ein am einfachsten zu lesen es zuerst alle in eine Staging-Tabelle und dann diese Spalte in VBA analysiert
Andere Tipps
Hier ist eine Lösung:
Ich habe eine Funktion geschrieben, die alle Vorkommen eines Strings durch strReplace strfind ersetzt, aber nur, wenn strfind tritt in Klammern. So können Sie etwas alle „“ Zeichen von anderen (zum Beispiel ‚*‘), dann führen Sie Excel Text in Spalten, dann ersetzen Sie das ‚*‘ 's mit ‚‘ wieder.
ersetzenFunction replace_paren(strSource As String, strFind As String, strReplace As String) As String
' Within strString, replaces any occurrence of strFind with strReplace *IF* strFind occurs within parentheses '
Dim intOpenParenIndex As Integer
Dim intCloseParenIndex As Integer
Do
intOpenParenIndex = InStr(intCloseParenIndex + 1, strSource, "(")
intCloseParenIndex = InStr(intOpenParenIndex + 1, strSource, ")")
If intOpenParenIndex = 0 Then
Exit Do
End If
Mid(strSource, intOpenParenIndex, intCloseParenIndex - intOpenParenIndex) = Replace(Mid(strSource, intOpenParenIndex, intCloseParenIndex - intOpenParenIndex), strFind, strReplace)
Loop
replace_paren = strSource
End Function
So sind die Schritte:
1) Kopie dieses Makro in ein Modul in Ihrer Excel-Arbeitsmappe
2) Lassen Sie uns sagen, dass Ihre Zeichenfolge in Spalte B in Spalte A ist, die Funktion eingerichtet, um die Kommas wie diese zu ersetzen
= replace_paren (A1, "", "*")
Füllen Sie3) die Spalte die Formel nach unten
4) Kopieren Sie die Spalte als Werte
5) Verwendung von Excel Text in Spalten die Spalte „“ als Trennzeichen
zu analysieren6) Verwenden Sie replace_paren wieder alle Vorkommen von "*" durch ersetzen ""