Domanda

Ho una domanda su un metodo per rompere qualcosa a parte. Ottengo questo foglio di calcolo Excel che mi fornisce i dati che ho bisogno di fare un rapporto. La sua avanti abbastanza semplice e diretto, tuttavia v'è una particolare parte di essa che mi sta dando un po 'di dolore.

Nel foglio di calcolo Excel c'è una colonna che elenca "le parti coinvolte" in una colonna. Di solito è di circa 12 nomi di persone separati da virgole, ma ha anche OrgID tra parentesi dietro di esso:

Joe Smith (DIV32), John Doe (DIV12), Roger Andrews (DIV14, DIV67, DIV01), etc

e ho bisogno di rompere questi in singole colonne in modo che essi saranno in singoli campi una volta li ho importare in accesso. Io so come "Testo in colonne" in Excel, ma questo ottenere avvitato quando jon doe (DIV13, DIV54, ecc), ha più di una divisione.

Non è sicuro come fare questo nell'accesso ma ci piacerebbe sapere.

Chiunque ha sia una formula di Excel, o un metodo di accesso per questo favore?

È stato utile?

Soluzione

Presumo si sta importando questo nella vostra base di dati. In caso contrario, è probabilmente più facile se lo fai, anche se è temporanea; e rifatta ogni volta che si deve eseguire il report

Si sta andando a finire con l'avere tre tabelle per rappresentare questa situazione

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

theParty con ha una colonna ID

theOrganisation avrà di essa la propria colonna ID

thePartyOrder avrà di essa la propria colonna ID, uno per theParty, e uno per theOrganisation

Ogni volta che si vuole rappresentare una parte come portare un membro di e organizzazione, è necessario assicurarsi che il partito esiste / è stato creato; l'Organizzazione esiste / è creato, e la gallina creare una voce nella tabella thePartyOrg che punta a entrambi.

Poiché queste informazioni di connessione appena memorizzato come testo all'interno di una singola colonna, è probabilmente una più facile da leggere prima il tutto in una tabella di gestione temporanea e quindi analizzare quella colonna in VBA

Altri suggerimenti

Ecco una soluzione:

ho scritto una funzione che sostituisce tutte le occorrenze di una stringa strFind da strReplace, ma solo se si verifica strFind tra parentesi. Così è possibile sostituire tutti i "" personaggi da qualcos'altro (ad esempio '*'), quindi eseguire il testo di Excel alle colonne, quindi sostituire il '*' 's con '' di nuovo.

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

Quindi i passaggi sono:

1) copiare questo macro in un modulo nella cartella di lavoro di Excel

2) Diciamo che la stringa è nella colonna R. Nella colonna B, impostare la funzione di sostituire le virgole come questo

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

3) riempire la formula nella colonna

4) Copia e incolla la colonna come valori

5) il testo di Utilizzare Excel per le colonne per analizzare la colonna utilizzando "" come delimitatore

6) Utilizzare replace_paren nuovo per sostituire tutte le occorrenze di "*" da ""

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top