0

何かをバラバラにする方法について質問があります。1つのレポートを作成するために必要なデータを提供するこのExcelスプレッドシートを取得します。とてもシンプルでわかりやすいですが、私にいくつかの悲しみを与えている特定の部分があります。

Excelスプレッドシートには、1つの列に「関係者」をリストする列があります。通常、コンマで区切られた約12人の名前ですが、その後ろの括弧内にorgIDもあります。

joe smith(DIV32)、john doe(DIV12)、roger andrews(DIV14、DIV67、DIV01)など

これらを個別の列に分割して、accessにインポートすると個別のフィールドになるようにする必要があります。Excelで「テキストから列へ」の方法を知っていますが、jon doe(DIV13、DIV54など)に複数の区分がある場合、これは失敗します。

アクセスでこれを行う方法がわからないが、知りたい。

誰もがエクセルの公式、またはこれのためのアクセス方法のいずれかを手に入れましたか?

4

2 に答える 2

1

これをデータベースにインポートしていると思います。そうでない場合は、一時的であっても、そうする方がおそらく簡単です。レポートを実行する必要があるたびにやり直します

この状況を表すために3つのテーブルを持つことになります

  1. theParty(人)
  2. 組織
  3. thePartyOrg

ID列を持つtheParty

theOrganizationには独自のID列があります

thePartyOrderには、独自のID列があります。1つはtheParty用で、もう1つはTheOrganisation用です。

パーティーを組織のメンバーとして代表する場合は常に、パーティーが存在する/作成されていることを確認する必要があります。組織が存在する/作成され、両方を指すPartyOrgテーブルにエントリが作成されます。

この接続情報は単一の列にテキストとして格納されるだけなので、最初にすべてをステージングテーブルに読み込んでから、VBAでその列を解析するのがおそらく最も簡単です。

于 2009-07-21T15:12:24.763 に答える
1

解決策は次のとおりです。

文字列strFindのすべての出現箇所をstrReplaceで置き換える関数を作成しましたが、これは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を使用して、出現するすべての「*」を「、」に置き換えます。

于 2009-07-22T20:18:05.507 に答える