Question

J'ai une question sur une méthode pour casser quelque chose à part. Je reçois cette feuille de calcul Excel qui me fournit des données que je dois faire un rapport. Son avant assez simple et droite, mais il y a une partie particulière de celui-ci qui me donne une certaine douleur.

Dans la feuille de calcul Excel il y a une colonne qui répertorie les « parties concernées » dans une colonne. Il est habituellement d'environ 12 noms des personnes séparées par des virgules, mais a également OrgID entre parenthèses derrière:

smith joe (de DIV32), John Doe (DIV12), Roger Andrews (DIV14, DIV67, DIV01), etc

et je dois briser en colonnes individuelles afin qu'ils seront les champs individuels une fois que je les importer dans l'accès. Je sais comment « texte à colonnes » dans Excel, mais cela se faire défoncer quand jon doe (DIV13, DIV54, etc.), a plus d'une division.

Je ne sais pas comment faire en matière d'accès, mais aimerait savoir.

Quelqu'un at-il soit une formule Excel, ou méthode d'accès pour cette s'il vous plaît?

Était-ce utile?

La solution

Je suppose que vous importez ceci dans votre base de données. Dans le cas contraire, il est probablement plus facile si vous le faites, même si elle est temporaire; et refait à neuf chaque fois que vous devez exécuter le rapport

Vous allez finir par avoir trois tables pour représenter cette situation

  1. theParty (personne)
  2. theOrganisation
  3. thePartyOrg

theParty avec une colonne ont ID

theOrganisation aura son propre colonne ID

thePartyOrder aura son propre colonne d'identité, un pour theParty, et un pour theOrganisation

Chaque fois que vous voulez représenter une partie comme mettre un membre et d'organisation, vous devez vous assurer que le parti existe / est créé; l'Organisation existe / est créé, et la poule créer une entrée dans la table thePartyOrg qui pointe à la fois.

Parce que ces informations de connexion simplement stockées sous forme de texte dans une seule colonne, il est probablement plus facile à lire tout d'abord dans une table de mise en scène, puis Parse cette colonne dans VBA

Autres conseils

Voici une solution:

J'ai écrit une fonction qui remplace toutes les occurrences d'une chaîne strfind par strReplace, mais seulement si strfind entre parenthèses se produit. Ainsi, vous pouvez remplacer tous les « » caractères par quelque chose d'autre (par exemple « * »), puis exécutez le texte Excel à colonnes, puis remplacez le « * » 's avec « » à nouveau.

Function 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

Ainsi, les étapes sont:

1) copier cette macro dans un module dans votre classeur Excel

2) Disons que votre chaîne est dans la colonne A. Dans la colonne B, mis en place la fonction de remplacer les virgules comme celui-ci

= replace_paren (A1, "", "*")

3) Remplir la formule dans la colonne

4) Copier et coller la colonne en tant que valeurs

5) le texte Utilisez Excel pour colonnes pour analyser la colonne à l'aide « » comme séparateur

6) Utiliser de nouveau replace_paren pour remplacer toutes les occurrences de "*" en ""

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top