zoukankan      html  css  js  c++  java
  • Excel 自动分列实现一则

    当一列中存放 1:n 数据,并使用特定符号分隔时,可使用“数据”-“分列”工具,将一个单元格内容依次分列。

    例如:学生信息列表中,每个学生占据一行;学生的所选课程为表中一列,对于某学生选择的多个课程,各课程名使用特定符号分隔。

    要简化分列操作,可采用VBA编写指令宏实现。

    如下图所示,A列保存由分隔符分隔的数据,C1处指定分隔符,设置按钮,D列保存分列之后的数据:

    按钮宏代码如下:

     1 Sub 弄()
     2     Dim SrcRi As Integer '定义用于遍历源数据的行索引
     3     Dim TarRi As Integer '定义用于递增目标数据行的索引
     4     SrcRi = 1 '初始化从1开始索引
     5     TarRi = 1 '初始化从1开始索引
     6     Dim MarkEnd As Boolean '定义用于外层循环结束的标记
     7     MarkEnd = False '初始化标记为false
     8     Dim Splitor As Variant '定义分隔符
     9     Splitor = Cells(1, 3).Value '从单元格获取分隔符
    10     While Not MarkEnd '进入外层循环,遍历源数据列
    11         If IsEmpty(Cells(SrcRi, 1)) Then '判断当前遍历的源单元格是否为空
    12             MarkEnd = True '为空则标记结束
    13         Else
    14             Dim Arr As Variant '定义保存分隔后字符串的数组
    15             Arr = Split(Cells(SrcRi, 1), Splitor) '从当前遍历的源单元格分隔出字符串
    16             For i = LBound(Arr) To UBound(Arr) Step 1 '进入内层循环,向目标列写入
    17                 Cells(TarRi, 4).Value = Arr(i) '向目标单元格写入一个分隔后的字符串
    18                 TarRi = TarRi + 1 '目标行索引加1
    19             Next
    20         End If
    21         SrcRi = SrcRi + 1 '源行索引加1
    22         'MsgBox SrcRi '调试用
    23     Wend
    24 End Sub
  • 相关阅读:
    生于忧患,死于安乐
    【网络流24题】骑士共存问题
    【网络流24题】最长不下降子序列问题
    【网络流24题】太空计划问题
    SG函数
    【网络流24题】餐巾计划问题
    【APIO2019】奇怪装置
    【HEOI2016/TJOI2016】游戏
    【SDOI2015】星际战争
    【CQOI2009】跳舞
  • 原文地址:https://www.cnblogs.com/heroius/p/14146313.html
Copyright © 2011-2022 走看看