ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1637|回复: 2

[已解决] 如何按照预定的答案为试题排序?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-1-5 21:39 | 显示全部楼层 |阅读模式
本帖最后由 zhanglei1371 于 2017-1-6 07:28 编辑

1.我想实现自动按照设定的答案序列来设定题目选项,如下,原来的答案不规则,我想统一变成ABCDE的答案顺序,同时要求选项也自动做出调整,该怎么做?

如第6题用代码修改后成为:C
则AC选项也进行交换


2.如果多选题想变成AB、ABC、ABCD的答案形式,选项也自动变,该怎么做?

6.下列哪项不是简单扩散的特点(A)
A.无部位特异性 B.从高浓度到低浓度 C.不需载体
D.需要耗能 E.无竞争性抑制
7.新药III期临床实验需要的人数通常不少于(D)
A.20 B.100 C.200 D.250 E.300
8.下列不属于药物II相反应类型的有(E)
A.乙酰化 B.氧化 C.甲基化
D.硫酸结合 E.葡萄糖醛酸结合
9.下列哪个药物常用作滴鼻剂用于充血性鼻塞(C)
A.异丙肾上腺素 B.间羟胺 C.羟甲唑林
D.阿托品 E.毛果芸香碱


16.可能引发系统性红斑狼疮的降压药物为(CE)
A.硝酸甘油 B.普萘洛尔 C.肼屈嗪
D.卡维地洛 E.硝苯地平
17.强心苷类药物最严重的不良反应为(BCE)
A.黄视绿视 B.胃肠道不良反应 C.心律失常
D.耳鸣 E.骨髓抑制
18.金鸡纳反应为下列哪个药物的不良反应(ACDE)
A.利多卡因 B.普鲁卡因胺 C.胺碘酮
D.普罗帕酮 E.奎尼丁

测试文档.rar

6.02 KB, 下载次数: 20

结果文档.rar

5.97 KB, 下载次数: 11

TA的精华主题

TA的得分主题

发表于 2017-1-6 01:43 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. Sub shishi()
  2.     Dim mt, mh, mk, oRng As Range, rg As Range, n&, m&, str$, d, rng As Range
  3.     Set d = CreateObject("Scripting.Dictionary")
  4.     y = 4
  5.     With CreateObject("vbscript.regexp")
  6.         .Global = True: .IgnoreCase = False: .MultiLine = True
  7.         .Pattern = "^\d+.[^\r]+\(([A-E])\)\r(?:(?!^\d+.[^\r]+\((?:[A-E])\)\r).)+"
  8.         For Each mt In .Execute(ActiveDocument.Content)
  9.             y = y + 1
  10.             m = mt.FirstIndex: n = mt.Length
  11.             Set oRng = ActiveDocument.Range(m, m + n)
  12.             str = mt.submatches(0)
  13.             .Pattern = "([A-E].)((?:(?![A-E].).)+)"
  14.             For Each mh In .Execute(oRng.Text)
  15.                 m = mh.FirstIndex: n = mh.Length
  16.                 Set rg = ActiveDocument.Range(oRng.Start + m, oRng.Start + m + n)
  17.                 Set d(Left(rg.Text, 1)) = rg
  18.             Next
  19.             t = d.items
  20.             Select Case y Mod 5
  21.             Case 0
  22.                 If str <> "A" Then
  23.                     .Pattern = "\(\s*[A-E]\s*\)"
  24.                     For Each mk In .Execute(oRng.Text)
  25.                         m = mk.FirstIndex: n = mk.Length
  26.                         Set rng = ActiveDocument.Range(oRng.Start + m, oRng.Start + m + n)
  27.                         With rng
  28.                             .MoveStart 1, 1: .MoveEnd 1, -1: .Text = "A"
  29.                         End With
  30.                     Next
  31.                     With d(str)
  32.                         .MoveStart 1, 2: .MoveEnd 1, -1: s1 = .Text
  33.                     End With
  34.                     With t(0)
  35.                         .MoveStart 1, 2: .MoveEnd 1, -1: s2 = .Text
  36.                         .Text = s1
  37.                     End With
  38.                     d(str).Text = s2
  39.                 End If
  40.             Case 1
  41.                 If str <> "B" Then
  42.                     .Pattern = "\(\s*[A-E]\s*\)"
  43.                     For Each mk In .Execute(oRng.Text)
  44.                         m = mk.FirstIndex: n = mk.Length
  45.                         Set rng = ActiveDocument.Range(oRng.Start + m, oRng.Start + m + n)
  46.                         With rng
  47.                             .MoveStart 1, 1: .MoveEnd 1, -1: .Text = "B"
  48.                         End With
  49.                     Next
  50.                     With d(str)
  51.                         .MoveStart 1, 2: .MoveEnd 1, -1: s1 = .Text
  52.                     End With
  53.                     With t(1)
  54.                         .MoveStart 1, 2: .MoveEnd 1, -1: s2 = .Text
  55.                         .Text = s1
  56.                     End With
  57.                     d(str).Text = s2
  58.                 End If
  59.             Case 2
  60.                 If str <> "C" Then
  61.                     .Pattern = "\(\s*[A-E]\s*\)"
  62.                     For Each mk In .Execute(oRng.Text)
  63.                         m = mk.FirstIndex: n = mk.Length
  64.                         Set rng = ActiveDocument.Range(oRng.Start + m, oRng.Start + m + n)
  65.                         With rng
  66.                             .MoveStart 1, 1: .MoveEnd 1, -1: .Text = "C"
  67.                         End With
  68.                     Next
  69.                     With d(str)
  70.                         .MoveStart 1, 2: .MoveEnd 1, -1: s1 = .Text
  71.                     End With
  72.                     With t(2)
  73.                         .MoveStart 1, 2: .MoveEnd 1, -1: s2 = .Text
  74.                         .Text = s1
  75.                     End With
  76.                     d(str).Text = s2
  77.                 End If
  78.             Case 3
  79.                 If str <> "D" Then
  80.                     .Pattern = "\(\s*[A-E]\s*\)"
  81.                     For Each mk In .Execute(oRng.Text)
  82.                         m = mk.FirstIndex: n = mk.Length
  83.                         Set rng = ActiveDocument.Range(oRng.Start + m, oRng.Start + m + n)
  84.                         With rng
  85.                             .MoveStart 1, 1: .MoveEnd 1, -1: .Text = "D"
  86.                         End With
  87.                     Next
  88.                     With d(str)
  89.                         .MoveStart 1, 2: .MoveEnd 1, -1: s1 = .Text
  90.                     End With
  91.                     With t(3)
  92.                         .MoveStart 1, 2: .MoveEnd 1, -1: s2 = .Text
  93.                         .Text = s1
  94.                     End With
  95.                     d(str).Text = s2
  96.                 End If
  97.             Case 4
  98.                 If str <> "E" Then
  99.                     .Pattern = "\(\s*[A-E]\s*\)"
  100.                     For Each mk In .Execute(oRng.Text)
  101.                         m = mk.FirstIndex: n = mk.Length
  102.                         Set rng = ActiveDocument.Range(oRng.Start + m, oRng.Start + m + n)
  103.                         With rng
  104.                             .MoveStart 1, 1: .MoveEnd 1, -1: .Text = "E"
  105.                         End With
  106.                     Next
  107.                     With d(str)
  108.                         .MoveStart 1, 2: .MoveEnd 1, -1: s1 = .Text
  109.                     End With
  110.                     With t(4)
  111.                         .MoveStart 1, 2: .MoveEnd 1, -1: s2 = .Text
  112.                         .Text = s1
  113.                     End With
  114.                     d(str).Text = s2
  115.                 End If
  116.             End Select
  117.             d.RemoveAll
  118.         Next
  119.     End With
  120. End Sub
复制代码

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2020-2-7 07:15 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-19 04:38 , Processed in 0.030410 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表