我有一个关于破坏某些东西的方法的问题。我得到这个Excel电子表格,它为我提供了做一份报告所需的数据。它非常简单直接,但有一个特别的部分让我感到悲伤。
在Excel电子表格中,有一列在一列中列出了“涉及的各方”。它通常是由逗号分隔的大约12个人的名字,但在它后面的括号中也有orgID:
乔·史密斯(DIV32),约翰·多伊(DIV12),罗杰·安德鲁斯(DIV14,DIV67,DIV01)等我需要将它们分成单独的列,以便在将它们导入访问权限后它们将成为单独的字段。我知道如何在Excel中“文本到列”,但是当jon doe
(DIV13,DIV54等)有多个分区时,这会搞砸。
不确定如何在访问中执行此操作,但很想知道。
任何人都有excel公式或访问方法吗?
答案 0 :(得分:1)
我假设您将其导入数据库。如果不这样做,即使它是暂时的,也可能更容易;每次必须运行报告时重做并重做
您将最终有三个表来表示这种情况
theParty有一个ID列
组织将拥有自己的ID列
thePartyOrder将拥有自己的ID列,一个用于theParty,一个用于组织
每当你想要一个党代表一个党员和组织成员时,你必须确保党的存在/被创造;组织存在/被创建,并且在thePartyOrg表中创建一个指向两者的条目。
因为这个连接信息只是作为文本存储在一个列中,所以最简单的方法是首先将它全部读入一个临时表,然后在VBA中解析该列
答案 1 :(得分:1)
这是一个解决方案:
我编写了一个函数,用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将所有出现的“*”替换为“,”