Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2850|回复: 6

[已解决]如果根据数量列,生成一个带有序号的序列

[复制链接]
发表于 2014-4-10 18:35 | 显示全部楼层 |阅读模式
源数据如图一

图一

图一


生成如图二的效果:

图二

图二

公式我知道怎么生成,但不知道用VBA的话,应该怎么写代码? 生成序列.zip (1.6 KB, 下载次数: 8)
发表于 2014-4-10 18:47 | 显示全部楼层
本帖最后由 hwc2ycy 于 2014-4-10 18:51 编辑

这个类似的题貌似已经做过几次了。

奇怪了,好多人都是问这个,而且有几次感觉是作业来着。
回复

使用道具 举报

发表于 2014-4-10 18:51 | 显示全部楼层    本楼为最佳答案   
  1. Sub teset()
  2.     Dim arr
  3.     Dim result(1 To 1000, 1 To 1)
  4.     Dim i%, j%, k%
  5.     arr = Range("a1").CurrentRegion.Value
  6.     For i = 2 To UBound(arr)
  7.         For j = 1 To arr(i, 2)
  8.             k = k + 1
  9.             result(k, 1) = "'" & arr(i, 1) & "-" & j

  10.         Next
  11.     Next
  12.     Range("f1").Resize(k).Value = result
  13. End Sub
复制代码
回复

使用道具 举报

发表于 2014-4-10 18:52 | 显示全部楼层
公式贴下吧,也了解下。
回复

使用道具 举报

发表于 2014-4-10 18:54 | 显示全部楼层
数组定的是1000,实际用的时候根据需要改变吧。
回复

使用道具 举报

 楼主| 发表于 2014-4-10 19:16 | 显示全部楼层
hwc2ycy 发表于 2014-4-10 18:52
公式贴下吧,也了解下。
  1. =LOOKUP(ROW(A1)-1,SUBTOTAL(9,OFFSET($B$1,,,{1;2;3;4;5;6})),$A$2:$A$6)&LOOKUP(ROW(A1)-1,SUBTOTAL(9,OFFSET($B$1,,,{1;2;3;4;5;6})))-ROW(A1)
复制代码
写得比较长,没去考虑如何精简

评分

参与人数 1 +10 收起 理由
lisachen + 10

查看全部评分

回复

使用道具 举报

发表于 2014-4-10 19:51 | 显示全部楼层
学习学习
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-3-28 21:02 , Processed in 0.537143 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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