求助 Excel 问题

2022-08-21 20:21:27 +08:00
 moioooo
有 3 列数据
文本 A 201001 202203
文本 B 201211 201809
想要按年拆分成多行
结果如下
文本 A 201001 201012
文本 A 201101 201112
文本 A 201201 201212
...
文本 A 202201 202203
文本 B ...

请问 Excel 现有功能,能实现么。或者 VBA ?
1231 次点击
所在节点    程序员
7 条回复
horseInBlack
2022-08-21 20:29:29 +08:00
好像 Excel 本身的排序就支持多个关键词排序,你可以搜索下 Excel 多列排序

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

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

拆分逻辑都不写清楚,这种思维水平还是别上论坛问了,去淘宝付费找人做不好吗
moioooo
2022-08-21 22:37:56 +08:00
@zx4824 #2 已经说明了呀。按年拆分。
所以才出现 201012 这个数据呀。一年的最后一个月不是 12 月么?
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
2022-08-21 23:10:15 +08:00
少打一行:

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

    单元格("D" & 输出行) = ……
    单元格("E" & 输出行) = ……
    单元格("F" & 输出行) = ……
jingben1
2022-08-22 10:05:13 +08:00
这种问题问搜索引擎呀!搜索关键词:excel 分列

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/874386

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX