0

私は何を持っていますか:

  • .csv ファイル
  • 複数の列を持つ
  • 最初の列のキーワードのリスト

やりたいこと:

  • 「A」と呼ぶ新しい最初の列を追加します(他の列を右側に移動します)
  • (現在) 2 番目の列の各単語を読んでください。これを「B」と呼びます
  • 列BIの各単語について、列Aに詳細な単語を書きたい

エラボレーション機能は私が担当します。

この .csv 編集を手伝ってもらえますか?

4

3 に答える 3

1

キーワードの最初の行があります。

"B,C,D,E"

"A"しかし、たとえば、最初に挿入したい

"A,B,C,D,E"

行全体を読み取り、コンマ (,) で分割できます。次に、新しいキーワードを無効にするインデックスの特殊なケースを使用して、ループで文字列を再構築します。

Dim keywords As String
Dim newKeywords As String
Dim arr() As String
Dim keywordToInsert As String
Dim i As Integer

keywords = "B,C,D,E"
keywordToInsert = "A"

arr = Split(keywords, ",")

For i = 0 To UBound(arr) Step 1
    If i = 0 Then
        newKeywords = keywordToInsert
    End If
    newKeywords = newKeywords & "," & arr(i)
Next i

これにより、キーワードが表示されます。このループを使用すると、追加の各行を読み取り、このように最初の列を操作する独自のループを作成できるはずです。

于 2013-03-14T18:44:43.390 に答える
0

または、生のcsvファイルをデータテーブルにアップロードし、フォームのデータグリッドで視覚化してから、データテーブルに列を直接追加することもできます。

于 2013-03-15T22:09:23.683 に答える
0

これは、CSV ファイルの列を知っていることを前提としています。

Private Sub RewriteFile(ByRef the_sFileName As String)

    Dim sFileNameTemp   As String
    Dim iFileNoInput    As Integer
    Dim iFileNoOutput   As Integer
    Dim iField1         As Integer
    Dim sField2         As String
    Dim datField3       As Date

    ' Temporary file name.
    sFileNameTemp = the_sFileName & ".tmp"

    iFileNoInput = FreeFile
    Open the_sFileName For Input As #iFileNoInput

    iFileNoOutput = FreeFile
    Open sFileNameTemp For Output As #iFileNoOutput

    Do Until EOF(iFileNoInput)
        ' Read in each field of each line into a separate variable, then write to temporary file together with new field. (If you don't know a field's type, use Variants)
        Input #iFileNoInput, iField1, sField2, datField3
        Write #iFileNoOutput, Elaborate(iField1, sField2), iField1, sField2, datField3
    Loop

    Close #iFileNoOutput
    Close #iFileNoInput

    ' Delete the original file, and replace with new file.
    Kill the_sFileName
    Name sFileNameTemp As the_sFileName

End Sub
于 2013-03-15T11:23:37.747 に答える