Pregunta

Tengo una pregunta acerca de un método para romper algo aparte. Consigo esta hoja de cálculo de Excel que me proporciona datos que tengo que hacer un informe. Es bastante simple y directo, sin embargo hay una parte particular de lo que me está dando una cierta pena.

En la hoja de cálculo de Excel hay una columna que enumera "partes implicadas" en una columna. Por lo general, es de unos 12 nombres de las personas separadas por comas, sino que también ha OrgID entre paréntesis detrás de él:

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

y tengo que romper estas en columnas individuales para que puedan ser campos individuales una vez que importarlos en el acceso. Sé cómo "Texto en columnas" en Excel, pero esto se joden cuando jon doe (DIV13, DIV54, etc), tiene más de una división.

No está seguro de cómo hacer esto en el acceso, pero les gustaría saber.

Alguien tiene o bien una fórmula de Excel, o método de acceso para esto, por favor?

¿Fue útil?

Solución

Asumo que va a importar esto en su base de datos. Si no es así, es probable que sea más fácil si lo hace, incluso si es temporal; y hecho de nuevo cada vez que tenga que ejecutar el informe

Lo que vas a llegar a tener tres tablas para representar esta situación

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

theParty con tiene una columna de ID

theOrganisation tendrá su propia columna ID

thePartyOrder tendrá su propia columna de ID, una para theParty, y otro para theOrganisation

Cada vez que desee representar a una parte como traer a un miembro de la Organización y, usted tiene que asegurarse de que el partido existe / se crea; existe la organización / es creado, y la gallina crear una entrada en la tabla thePartyOrg que apunta a ambos.

Debido a que esta información de conexión que acaba de almacenar como texto dentro de una sola columna, que es probablemente una más fácil de leer primero todo en una tabla de ensayo y luego procesarla y columna en VBA

Otros consejos

Aquí hay una solución:

He escrito una función que reemplaza todas las apariciones de una cadena strFind por strReplace, pero sólo si se produce strFind entre paréntesis. Por lo que puede sustituir a todos los "" caracteres por otra cosa (por ejemplo, '*'), a continuación, ejecute el texto de Excel para columnas, vuelva a colocar la '*' 's con '' de nuevo.

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

Así que los pasos son:

1) copiar esta macro en un módulo en el libro de Excel

2) Supongamos que la cadena está en la columna A. En la columna B, configurar la función de reemplazar las comas como este

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

3) Llenar la fórmula hacia abajo la columna

4) Copiar y pegar la columna como valores

5) el texto de Uso de Excel para columnas para analizar la columna usando "" como delimitador

6) Use replace_paren nuevo para reemplazar todas las ocurrencias de "*" por ""

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top