文章目录

  • 需求背景
  • PowerQuery实现
    • Step 1 将表加载到PowerQuery
    • Step 2 在PowerQuery添加自定义列
    • Step 3 点击箭头,扩展到新行,完成
  • VBA实现
    • 实现逻辑
    • VBA代码
  • 附录

需求背景

公司会经常筹办一些内促赛,目的是激励销售去创造更多流水.抽奖是常用的以小博大的手段,例如下面方案

在2020年双十一期间,即11月1日-11日24点,销售每成交1单,即获得一份抽奖券.在双十一结束之后,也就是11月12日,将进行iPhone12的抽奖活动,届时,抽奖券的数量将会决定销售的中奖概率

例如公司有3个销售小红,小明,小张.他们期间成交的单数及抽奖概率如下表

姓名 成单数 中奖概率
小红 50 50%
小明 30 30%
小张 20 20%

我们在做模型的时候,一般是从数据库取数,会形成一张汇总表

部门 组别 姓名 员工工号 成单数 抽奖券数
销售部 一组 小红 1 50 50
销售部 二组 小明 2 30 30
销售部 三组 小张 3 20 20

但是在抽奖的时候,我们得每一张抽奖券生成一条记录数.因为抽奖系统比较bug,只能按照行数进行抽奖,所以我们要生成员工姓名*成单数这么多行数的记录,也就是100行数据.下面用两种方法在不脱离Excel环境的情况下实现

PowerQuery实现

Step 1 将表加载到PowerQuery

点击数据表,然后依次点击数据–>从表格,将数据加载到PowerQuery

Step 2 在PowerQuery添加自定义列

依次点击添加列–>自定义列,在自定义列公式输入下面内容然后确定

={1..[抽奖券数]}


结果会增加一列

Step 3 点击箭头,扩展到新行,完成

点击字段名右边的双向箭头,选择扩展到新行

然后结果就出来啦

点击主页–>关闭并上载就可以显示到Excel工作表中了

VBA实现

实现逻辑

VBA的实现逻辑是这样的

VBA代码

实现代码如下,为了方便扩展,便将代码极可能的变量化

Sub repeatRow()Dim ArrDim i%, j%, k%, wRow%Dim Sht As Worksheet,OriSht as WorksheetDim t!Const ORINAME$ = "数据源"       '数据源所在表名Const SHTNAME$ = "抽奖名单"     '要生成抽奖名单的表名Const LASTCOL As Byte = 10     '抽奖券数所在的列数,可以使用`=COLUMN()`查看列号,也可以更改R1C1样式查看Const STARTROW As Byte = 2      '第一行数据所在的行号,从标题开始.所以也是标题所在行号t = Timer    '计时器set OriSht = Sheets(ORINAME)'将数据源写入内存With OriShtArr = .Range(.Cells(STARTROW, 1), .Cells(.Cells(.Rows.Count, 1).End(3).Row, LASTCOL))End With'预处理:如果出现同名文件会报错,所以要先删除Application.DisplayAlerts = 0For Each Sht In WorksheetsIf Sht.Name = SHTNAME ThenSht.DeleteExit ForEnd IfNextApplication.DisplayAlerts = 1'新建表,并将表名修改为指定名称Set Sht = Worksheets.Add(after:=OriSht)Sht.Name = SHTNAMEWith Sht'第一行写标题wRow = 1For j = LBound(Arr, 2) To UBound(Arr, 2).Cells(wRow, j).Value = Arr(wRow, j)Next'第二行开始写内容wRow = 2For i = LBound(Arr) + 1 To UBound(Arr)If Arr(i, 1) <> "汇总" Then         '判断第一列是否是汇总两字,来判断是否有汇总行For k = 1 To Arr(i, LASTCOL)For j = LBound(Arr, 2) To UBound(Arr, 2).Cells(wRow, j).Value = Arr(i, j)NextwRow = wRow + 1NextEnd IfNextEnd WithMsgBox "耗时:" & Format(Timer - t, "0.0s"), vbInformation, SHTNAME & "生成完成"
End Sub

附录

不知道如何运行VBA代码?参照下面这篇文章

如何运行一个宏

如何在Excel中根据数量生成抽奖名单相关推荐

  1. matlab 三维y轴平面图,#如何在excel中绘制三维坐标系?#excel怎么画图平面坐标图...

    用excel绘制曲线图时如何进行坐标轴转换 点"插入"->"图表"->"XY图","子图表类型"选择&quo ...

  2. excel 重复方差分析_如何在Excel中运行方差方差分析的两种方法

    excel 重复方差分析 Recently, we looked at how to Perform a One-Way Analysis of Variance in Excel. In today ...

  3. 青蛙换位置excel_吃青蛙:如何在Excel中创建每日交付的sprint消耗图

    青蛙换位置excel In the first article I wrote on how to create a SCRUM-based, sprint burn down in Excel, H ...

  4. 用计算机公式计算优良,『excel怎样合并单元格』如何在EXCEL中如何用公式计算全年级各班各科平均分、优秀率、合格率的方法...

    EXCEL中算优秀率用什么函数,例子 举例: 数据表-- A B C 姓名 001 张三 92 002 李四 80 003 赵丰 85 004 王二 95 005 钱宽 75 006 郑东 55 参考 ...

  5. Microsoft Excel 教程:如何在 Excel 中使用 COUNTIF 函数?

    欢迎观看 Microsoft Excel 教程,小编带大家学习 Microsoft Excel 的使用技巧,了解如何在 Excel 中使用 COUNTIF 函数. COUNTIF 是一个统计函数,用于 ...

  6. 符号在excel中的引用_如何在Excel中添加项目符号

    &符号在excel中的引用 There's no built-in feature for bullets in Excel, like there is in a Word document ...

  7. 选下拉框的的值对应上传相应的图片_如何在excel中实现,选择下拉菜单某一项,该表格中就出现选项对应的数据?(excel表格制作选择数据)...

    怎样从多个excel表格中提取数据,做数据分析图呢 1. 数据的.录入.表格的设置,效果如示. 2.如图所示,选进行分析的图据范围 3.如图所示,点击菜单栏目上的"插入",选择&q ...

  8. 选下拉框的的值对应上传相应的图片_excel表格下拉菜单调用对应数据,如何在excel中实现,选择下拉菜单某一项,该表格中就出现选项对应的数据?...

    如何在excel中实现,选择下拉菜单某一项,该表格中就出现选项对应的数据? 选中这几列 打开菜单"数据"-"筛选"-"自动筛选"就是了. 另 ...

  9. excel计算个数的函数公式中,求满足条件的个数,汇总满足条件的个数,或Excel中分类统计数量----根据汉字描述写公式

    excel中如何计算个数,使用这个方法,给出汉字描述,自动生成Excel统计公式.支持Excel中分类统计数量 地址:http://www.excelfb.com/ 点击:Excel自动写公式工具(根 ...

最新文章

  1. 一周的微信公众平台接口开发总结
  2. android程序包括哪几种文件,apk是什么文件
  3. python图表之pygal入门篇
  4. Stroke filter: 一种用于OCR预处理的文字滤波器
  5. 公共界面_小区公共区域广告收益究竟归谁?
  6. VTK:IO之ReadPlainTextTriangles
  7. tomcat源码 Connector
  8. windows运行linux脚本命令大全,查看和运行 Windows PowerShell 脚本
  9. curl -L get.rvm.io | bash -s stable报错:连接不上服务器
  10. 关于list遍历时sychronizedList方法和synchronized同步块的线程安全问题思考
  11. 回顾一年的工作历程_ppt模板开门红年会颁奖典礼PPT模板,回顾总结过去一年的各项工作...
  12. CSRF漏洞原理/防御
  13. leetcode力扣17.电话号码的字母组合
  14. 译稿:软件工程师不可不知的10个概念
  15. 拓端tecdat|R语言网络和网络流的可视化实践:通勤者流动网络
  16. element表格里面放图片_使用 VUE 把你的数据导出成 Excel 表格
  17. win10系统如何安装SQL2008?
  18. android 新浪微博平台开发之 ——授权登录
  19. 星期五五–大数据,Doppio和假Linus Torvalds
  20. 编译程序和解释程序的区别

热门文章

  1. IDEA 2022 Translation 翻译文档失败: 未知错误
  2. 用Nginx禁止国外IP访问我的网站...
  3. 对手机号与身份证号加密显示
  4. win8的服务器未响应怎么回事,win8系统windows资源管理器未响应怎么办
  5. The type java.lang.Object cannot be resolved It is indirectly referenced ... .
  6. 数据结构与算法-查找和排序
  7. Ubuntu18.04/16.04+ Tensorflow1.8 +anaconda安装总结
  8. PCB的地与机壳连接方法
  9. 【opencv】(12) 光流估计,行人轨迹跟踪,附python完整代码
  10. springboot+旅游网站 毕业设计-附源码211713