MS Access03-正常化数据从一个Excel电子表格
-
18-09-2019 - |
题
我有一个问题有关的方法打破东西分开。我得到这个的Excel电子表格提供了数据,我需要做一个报告。它很简单和直截了当,但是有一个特定的一部分,它是给我一些悲伤。
在Excel电子表格有一列,用于列出"参与方"在一个柱。这通常是大约12人的名字使用逗号分隔,但也有orgID在括号后面:
乔史密斯(DIV32),john doe(DIV12),罗杰*安德鲁斯(DIV14,DIV67,DIV01),等等
我需要打破这些成单列,这样,他们将各个领域一旦我进他们进入访问。我知道如何"文本,列"在Excel中,但是这一获得搞砸了的时候 jon doe
(DIV13,DIV54,等等),已经超过一个分部。
不知道该如何做到这一点的访问,但很想知道。
任何人有任何一个excel式,或者访问的方法,为此请?
解决方案
我假设你进这个进入数据库。如果不是,它可能是更加容易,如果你这样做,即使是暂时的;和重做的每一个时间你有运行的报告
你是要结束有三个表格表示这种情况
- 会转移到楼(人)
- theOrganisation
- thePartyOrg
会转移到楼与有身份列
theOrganisation将有它自己的身份柱
thePartyOrder将有它自己的身份柱,一个会转移到楼,一个用于theOrganisation
只要你想来表示一缔约方带来的成员和组织,你必须要确保该缔约方存在/为创建;该组织的存在/为创建和母鸡创建一个项目在thePartyOrg表这点在两个。
因为这种连接的信息存储为文本内的一个单列,它可能是一个简单的第一阅读它的所有成临时表格和随后分析,列在VBA
其他提示
这里的一个解决方案:
我写的,它取代了strReplace strFind字符串中出现的所有功能,但只有当strFind括号内发生。所以,你可以替换所有的“”通过其他的东西(例如‘*’)字符,然后运行Excel的文本列,然后更换‘*’的使用‘’一次。
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
因此,步骤是:
1)该宏复制到一个模块中的Excel工作簿
2)假设你的字符串是在A列在B列中,设置功能,以取代这样的逗号。
= replace_paren(A1, “”, “*”)
3)填充公式向下列
4)复制并粘贴列值
5)使用Excel中的文本以列来解析使用列“”作为分隔符
6)再次使用replace_paren由 “”
取代的 “*” 所有出现