ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1879|回复: 7

[求助]关于邮件合并的问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2007-1-23 19:35 | 显示全部楼层 |阅读模式
我现在有一个EXCEL数据表,另有一个WORD的表格,请问我应该怎么做才能实现如附件中WORD文件的效果,谢谢 0nI2dW9t.rar (11.04 KB, 下载次数: 11)

TA的精华主题

TA的得分主题

发表于 2007-1-23 20:35 | 显示全部楼层

以下作为参考:

1.在Excel中,专业人数处理成20的倍数,不足的用空行来代替。可向Excel组咨询相关VBA。其实我相信你的学校专业数量不多,最多十来个吧,在data.xls中做成20的倍数,插空行不是什么难事吧?

2.以页码数作为考场序数

3.每考场的“专业”名称正常邮件合并,考场学生姓名域除每页除第一个外,用«Next Record»«xm».......

[此贴子已经被作者于2007-1-23 20:42:16编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-1-23 21:00 | 显示全部楼层
专业确实只有十来个,但是既然自动化了,就自动化到底吧,这个VBA代码我得去EXCEL版再问问,多谢楼上
[此贴子已经被作者于2007-1-23 21:12:03编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-1-23 21:54 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
要是哪位大虾知道这个VBA的写法,方便的话也请贴上来,万分感谢

TA的精华主题

TA的得分主题

发表于 2007-1-24 19:26 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

勉强做了出来,看看是否可行。注:数据源为“合并源”工作表,因对excel的公式与函数不很了解,加了不少辅助列。不会用vba。

e8rsqd7s.rar (36.44 KB, 下载次数: 9)
[此贴子已经被作者于2007-1-24 19:27:40编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-1-24 20:31 | 显示全部楼层

效果是达到了,不过实现的过程我还是得好好研究一下,先谢谢楼上

如果哪位朋友有更VBA实现插空行的方法,也非常欢迎您能贴上来,谢谢

TA的精华主题

TA的得分主题

发表于 2007-1-24 21:12 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2007-1-24 21:31 | 显示全部楼层

Excel的VBA如下:

Option Explicit

Sub 插入空行()
    Dim arr '数组
    Dim bend As Long
    bend = Range("b:b").Rows.Count '取b列的总行数
    bend = Range("b" & bend).End(xlUp).Row '取b列有数的最后一行
    arr = Range("a2:b" & bend) '数组赋值
    Dim j As Long, nextA As String
    Dim i As Long, k As Long
    Dim no As Long, e As Long
    ReDim newarr(1 To UBound(arr) * 20, 1 To 2)
    i = 1: k = 0
   
    nextA = Range("b2")
    For j = 1 To UBound(arr)
        If arr(j, 2) = nextA Then
           k = k + 1
        Else
            no = k Mod 20
            If no <> 0 Then
                For e = 1 To 20 - no
                    newarr(i, 2) = ""
                    newarr(i, 1) = ""
                    i = i + 1
                Next
                k = 1
            Else
                k = 0
            End If
        End If
           newarr(i, 1) = arr(j, 1)
           newarr(i, 2) = arr(j, 2)
        i = i + 1
        nextA = arr(j, 2)
    Next
    Range("c2:d" & UBound(newarr)) = newarr
    '为方便放到C列。你可以放在原来的A2的位置,即:
    'Range("a2:b" & UBound(newarr)) = newarr
End Sub

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

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-17 11:33 , Processed in 0.043339 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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