V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
moioooo
V2EX  ›  程序员

求助 Excel 问题

  •  
  •   moioooo · 2022-08-21 20:21:27 +08:00 · 1377 次点击
    这是一个创建于 812 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有 3 列数据
    文本 A 201001 202203
    文本 B 201211 201809
    想要按年拆分成多行
    结果如下
    文本 A 201001 201012
    文本 A 201101 201112
    文本 A 201201 201212
    ...
    文本 A 202201 202203
    文本 B ...

    请问 Excel 现有功能,能实现么。或者 VBA ?
    7 条回复    2022-08-22 10:05:13 +08:00
    horseInBlack
        1
    horseInBlack  
       2022-08-21 20:29:29 +08:00
    好像 Excel 本身的排序就支持多个关键词排序,你可以搜索下 Excel 多列排序

    程序来实现的话,你用的语言有什么操作 Excel 的类库我不清楚,但是转成 csv 以后应该是比较简单规整的数据,了解数组操作就能做了
    zx4824
        2
    zx4824  
       2022-08-21 22:30:31 +08:00   ❤️ 1
    文本 A 201001 [201012]

    这个 201012 的数据都不在原数据表里,也不说明逻辑

    拆分逻辑都不写清楚,这种思维水平还是别上论坛问了,去淘宝付费找人做不好吗
    moioooo
        3
    moioooo  
    OP
       2022-08-21 22:37:56 +08:00
    @zx4824 #2 已经说明了呀。按年拆分。
    所以才出现 201012 这个数据呀。一年的最后一个月不是 12 月么?
    wxf666
        4
    wxf666  
       2022-08-21 23:09:21 +08:00
    还是用 vba 快些吧*(反正我想不出来有啥公式能搞定)*

    VB 伪代码*(我不熟悉 Excel 的对象)*:

    Dim 输入行 As Integer, 输出行 As Integer, 年 As Long
    Dim 起始年月 As Long, 终止年月 As Long, 起始年 As Integer, 终止年 As Integer

    输入行 = 1
    输出行 = 1

    While Len(单元格("A" & 输入行))
      起始年月 = CLng(单元格("B" & 输入行))
      终止年月 = CLng(单元格("C" & 输入行))
      起始年 = 起始年月 \ 100
      终止年 = 终止年月 \ 100
       For 年 = 起始年 To 终止年
        单元格("A" & 输出行) = 单元格("A" & 输入行)
        单元格("B" & 输出行) = CStr(年 * 100 + IIf(年 > 起始年, 1, 起始年月 Mod 100))
        单元格("C" & 输出行) = CStr(年 * 100 + IIf(年 < 终止年, 12, 终止年月 Mod 100))
        输出行 = 输出行 + 1
       Next
    Wend
    wxf666
        5
    wxf666  
       2022-08-21 23:10:15 +08:00
    少打一行:

    ……
       Next
      输入行 = 输入行 + 1
    Wend
    wxf666
        6
    wxf666  
       2022-08-21 23:13:06 +08:00
    噢,输出列不该也是 A B C ,应该设为 D E F 之类的:

        单元格("D" & 输出行) = ……
        单元格("E" & 输出行) = ……
        单元格("F" & 输出行) = ……
    jingben1
        7
    jingben1  
       2022-08-22 10:05:13 +08:00
    这种问题问搜索引擎呀!搜索关键词:excel 分列
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   985 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 19:16 · PVG 03:16 · LAX 11:16 · JFK 14:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.