VBA通过Range对象实现Excel的数据写入

前言

本节会介绍通过VBA中的Range对象,来实现Excel表格中的单元格写入、区域范围写入,当然也可以写入不同类型的数据,如数值、文本、公式,以及实现公式下拉自动填充的功能。


一、单元格输入数据

1.通过Value方法实现输入不同类型的数据

向A1写入姓名(文本),A2写入年龄(数值),A3写入入学时间(日期),A4、A5、A6分别写入语数外成绩(数值),A7写入三科成绩之和(公式),代码如下:

c 复制代码
Sub InputData()

    Range("A1").Value = "小明"
    Range("A2").Value = 16
    Range("A3").Value = "2021-9-1"
    Range("A4").Value = 91.5
    Range("A5").Value = 95
    Range("A6").Value = 86
    Range("A7").Value = "=Sum(A4:A6)"
    
End Sub

2.单元格输入文本内容

向单元格输入文本内容时,需要将其输入的字符串需要用 双引号 引起来

需要注意的是,如果想要输入文本型数字时,例如常见的卡号、工号、身份证号等信息,则需要在数字前加 单引号

示例代码如下:

c 复制代码
    Range("B1").Value = "成绩单"
    Range("B2").Value = "ABCD"
    Range("B3").Value = "今天是:" & Format(Date,"yyyy-mm-dd")
    Range("B4").Value = "'001258"
    Range("B5").Value = "'110110199212220001"

3.单元格输入多行数据

向单元格输入多行数据时,可以使用换行符Char(10),如下示例中,向单元格A1中分三行输入"姓名","性别","年龄"

c 复制代码
	Range("A1").value = "姓名" & Chr(10) & "性别" & Chr(10) & "年龄"

4.单元格输入公式Formula

向单元格输入公式时,既可以使用Range的value 属性,也可以使用其Formula属性,两者执行的结果是一样的。

c 复制代码
    Range("C1").Value = "=Sum(A4:A6)"
    Range("C2").Formula = "=Sum(A4:A6)"

5.实例

题目:已知sheet1中A、B、C三列分别存放的学生语数外科目的成绩,需要在D列进行计算三科成绩的总和,注意:总行数未知

思路:因总行数未知,则需先根据A列获取到sheet1的总行数;其次计算和公式应该从D2开始写入=SUM(A2:C2);因行数较多,故以下代码应通过公式自动填充快速实现求和计算。

完整的代码如下:

c 复制代码
Sub SumScore()

    Dim ws As Worksheet
    Dim wb As Workbook
    Dim lastRow As Long
    
    ' 设置当前工作簿以及工作表
    Set ws = ThisWorkbook.Worksheets("Sheet1")
    Set wb = ThisWorkbook
    
    ' 通过A列获取最大行数
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    ' 写入D2单元格汇总公式
    ws.Range("D2").Value = "=SUM(A2:C2)"
    
    ' 自动下拉填充所有行公式
    ws.Range("D2").AutoFill ws.Range("D2:D" & lastRow)
      
End Sub

二、单元格区域输入数据

1.输入行数据

通过Array函数,可以快速的输入一行数据,例如在第一行A1~D1输入行标题,代码如下:

c 复制代码
Range("A1:D1") = Array("语文成绩", "数学成绩", "外语成绩", "总成绩")

2.输入列标题

同样通过Array 函数快速输入一列数据,可以使用Transpose函数进行转置,代码如下:

c 复制代码
Range("A1:A4") = WorksheetFunction.Transpose(Array("姓名", "性别", "班级", "成绩"))

3.区域输入相同的数据

在A1:E10区域范围内快速输入相同的内容,代码如下:

c 复制代码
	Range("A1:E10").Value = 100

4.示例

题目:已知有两张sheet,需要将Sheet1中的A-E列的数据完全复制到Sheet2中B-F列中,完整的代码如下:

c 复制代码
Sub CopyData()

    Dim ws1 As Worksheet
    Dim ws2 As Worksheet
    Dim wb As Workbook
    Dim lastRow As Long
    
    ' 设置当前工作簿以及工作表
    Set ws1 = ThisWorkbook.Worksheets("Sheet1")
    Set ws2 = ThisWorkbook.Worksheets("Sheet2")
    Set wb = ThisWorkbook
    
    ' 通过A列获取最大行数
    lastRow = ws1.Cells(ws1.Rows.Count, "A").End(xlUp).Row
    
    ' 将sheet1中的A-E列数据复制到Sheet2中的B-F列
    ws2.Range("B1:F" & lastRow).Value = ws1.Range("A1:E" & lastRow).Value
    
End Sub
相关推荐
梦幻通灵11 小时前
Excel工作表的复制实战【实用指南】
excel
ManageEngineITSM14 小时前
功能越来越强,但 IT 使用体验却越来越差
大数据·excel·资产管理·itsm·工单系统
傻啦嘿哟14 小时前
如何使用 Python 操作 Excel 图片:插入、提取与压缩
开发语言·python·excel
石马马户14 小时前
Excel 根据A列标签拆分为多个列数据
excel
骆驼爱记录15 小时前
Word目录:标题加粗页码不加粗技巧
自动化·word·excel·wps·新人首发
城数派16 小时前
1985-2024年各省市县不同土地覆盖类型的土地面积(Excel)
数据库·arcgis·信息可视化·数据分析·excel
开开心心_Every16 小时前
轻松加密文件生成exe,无需原程序解密
运维·服务器·网络·电脑·excel·consul·memcache
fengyehongWorld2 天前
VBA 操作PowerQuery表格和带名字的表格
excel·vba
tangyal2 天前
Linux 核心操作合集(网络配置、XShell远程连接、vim文本编辑与操作、权限管理 实操手册)
excel
softbangong2 天前
815-批量Excel文件合并工具,批量excel文件、工作表合并软件
linux·windows·excel·文件合并·excel合并·数据整理