我没有这方面的经验。我有包含MCQ quizes的文本文件。目前我必须在将它们导入excel之前使用分隔符(例如TABS)编辑所有测验问题。我需要一种自动方式来格式化导入的文件在这些列中,QuestionId ExamType,Year,Subject,Question,Answer1,Answer2,Answer3,Answer4,Answer5,CorrectAnswer,Image,无需先手动编辑文本。这是继我正在导入excel的文本示例。 “1.政府作为一种管理艺术,是指在社会中统治人民的过程b。建立政党C.提供免费教育D.获得社会技能,2。国家的一个基本特征是A.矿产资源B.发达的基础设施.C一个有组织的法律体系D.发达的市场。我想将示例1和2放在上面的列中。好吧我已经拉上了我曾经的东西 这样做,你可以看看我 还包括原始测验数据 你可以知道我是什么 试着强制格式化链接。谢谢大家 你的支持。
答案 0 :(得分:0)
试试这个:
打开excel文档并点击 Alt + F11 打开VBA编辑器,插入一个新模块(如果还没有),打开它up,并粘贴在下面的代码中(它们是我们将稍微使用的自定义用户定义函数)
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
我猜这一点你的quize的所有文字都在A1中。按照前面的说明继续用逗号分隔该单元格,以便将每个问题放在自己的列中。由于我们希望每个问题占据自己的行,突出显示第1行的所有内容并复制,然后将特殊粘贴到A2中,并选择转置值的选项。现在每个问题都有自己的行。现在我们想要做的就是给每个答案选择自己的专栏。我们可以使用之前的自定义函数,允许您将所有文本放在自定义分隔符的左侧或右侧。
如果A2的值是
然后我们将使用以下代码填写其他列:
=LEFTDELIMIT(A2,"A.")
=NOERROR(PROPER(TRIM(LEFTDELIMIT(RIGHTDELIMIT(A2,"A."),"B."))))
=NOERROR(PROPER(TRIM(LEFTDELIMIT(RIGHTDELIMIT(A2,"B."),"C."))))
=NOERROR(PROPER(TRIM(LEFTDELIMIT(RIGHTDELIMIT(A2,"C."),"D."))))
=NOERROR(PROPER(TRIM(LEFTDELIMIT(RIGHTDELIMIT(A2,"C."),"D."))))
=NOERROR(PROPER(TRIM(LEFTDELIMIT(RIGHTDELIMIT(A2,"D."),"E."))))
这是关于如何格式化传入数据的某些假设。如果这不起作用,请显示所有人在excel文件中工作,您可以通过任何在线文件共享主机上传和分发,以更好地了解可能绊倒您的特定错误