0

MCQクイズを含むテキストファイルがあります。現在、Excelにインポートする前に、すべてのクイズの質問を区切り文字(TABSなど)で編集する必要があります。

インポートしたファイルを次の列にフォーマットする自動化された方法が必要です。

QuestionId, ExamType, Year, Subject, Question, Answer1, Answer2, Answer3, Answer4, Answer5, CorrectAnswer, Image 

最初にテキストを手動で編集する必要はありません。

これが私が現在Excelにインポートしているテキストの例です。

1.Government as an art of governing refers to the process of A.ruling people in the society b.establishing political parties C. providing free education D. acquiring social skills, 2. An essential feature of a State is A. availability of mineral resources B. developed infrastructure. C an organized system of laws D. developed markets.

例1と2を上の列に当てはめたいと思います。私はあなたが見ることができるように私がしていることを圧縮しました。生のクイズデータも含めたので、フォーマットを強制しようとしているのは何であるかがわかります。

4

1 に答える 1

0

これを試して:

Excel ドキュメントを開き、Alt+F11を押して VBA エディターを起動し、新しいモジュールを挿入し (まだ存在しない場合)、それを開き、次のコードを貼り付けます (これらはカスタム ユーザー定義関数であり、少し使います)

Function LEFTDELIMIT(ByVal text As String, ByVal delimiter As String)
    Dim position As Integer
    Dim leftText As String
    position = InStr(1, text, delimiter, vbTextCompare) - 1
    leftText = Left(text, position)
    LEFTDELIMIT = leftText
End Function

Function RIGHTDELIMIT(text, delimiter)
    Dim position As Integer
    Dim rightText As String
    position = Len(text) - Len(delimiter) - InStr(1, text, delimiter, vbTextCompare) + 1
    rightText = Right(text, position)
    RIGHTDELIMIT = rightText
End Function

Function NOERROR(text)
    If IsError(text) Then
        NOERROR = ""
    Else
        NOERROR = text
    End If
End Function

この時点で、クイズのテキストはすべて A1 になっていると思います。前に指定したように、そのセルをカンマで区切って、各質問を独自の列に取得します。これらの各質問をそれぞれの行に配置したいので、行 1 をすべて強調表示し、コピーしてから A2 に特別に貼り付け、値を転置するオプションを選択します。各質問には独自の行があります。ここで、それぞれの回答の選択肢に独自の列を与えたいと考えています。以前のカスタム関数を使用して、カスタム区切り文字の左側または右側にあるすべてのテキストを取得できます。

A2 の値が

  • 1. 統治の芸術としての政府とは、A. 社会の人々を支配すること、b. 政党を設立すること、C. 無料の教育を提供すること、D. 社会的スキルを習得することのプロセスを指す

次に、他の列に次のコードを入力します。

  • B2:=LEFTDELIMIT(A2,"A.")
  • C2:=NOERROR(PROPER(TRIM(LEFTDELIMIT(RIGHTDELIMIT(A2,"A."),"B."))))
  • D2:=NOERROR(PROPER(TRIM(LEFTDELIMIT(RIGHTDELIMIT(A2,"B."),"C."))))
  • E2:=NOERROR(PROPER(TRIM(LEFTDELIMIT(RIGHTDELIMIT(A2,"C."),"D."))))
  • F2:=NOERROR(PROPER(TRIM(LEFTDELIMIT(RIGHTDELIMIT(A2,"C."),"D."))))
  • G2:=NOERROR(PROPER(TRIM(LEFTDELIMIT(RIGHTDELIMIT(A2,"D."),"E."))))

これは、受信データがどのようにフォーマットされるかについて、特定の仮定を立てています。これで問題が解決しない場合は、オンライン ファイル共有ホストを介してアップロードおよび配布できる Excel ファイルですべての作業を示してください。

于 2013-03-01T04:53:36.397 に答える