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 回答