excel vba 的读取列,写入列,循环和if 的一些操作
最近在研究 Excel 中的 VBA ,也就是Excel 的宏,需要将第一个页面的值,等列排入第二个Sheet页中
就像第一个页面中
排列成
这个样子
首先需要缕缕自己的思路
我们需要获取到第一个Sheet 也的值
Set Destination = Worksheets("Sheet1")
获取到以后,要如何去找到每一列的值并赋值给另外一个Sheet 呢?
当然是,循环 + 写入了
Dim a As Integer Dim b As Integer Dim js As Integer Set Destination = Worksheets("Sheet1") Set Destination2 = Worksheets("Sheet2") '行数 a = Destination.UsedRange.Rows.Count '列数 b = Destination.UsedRange.Columns.Count '循环行 For i = 1 To a '循环列 For j = 1 To b '计算行所在位置 js = (i * 2) '不同列不同的数据处理 If (j = 2) Then Destination2.Cells(js, j + 1) = Destination.Cells(i, j) ElseIf (j = 3) Then Destination2.Cells(js - 1, j) = Destination.Cells(i, j) Else Destination2.Cells(js - 1, j) = Destination.Cells(i, j) Destination2.Cells(js, j) = Destination.Cells(i, j) Destination2.Cells(js - 1, j + 1) = Destination.Cells(i, j) Destination2.Cells(js, j + 1) = Destination.Cells(i, j) End If Next Next
这其中Dim 就是拿来定义变量
用你获取到的Sheet 页数据.Cells 就是来取你某一个XY对应的数据,也可以直接进行赋值
For 的语法就是 For 变量 = 初始值 To 结束值
Next
If 的语法就简单了
IF(条件) then 你的代码 else 没有否则条件可以不写 End If
然后执行以下,我们看看
是不是 so easy?
为了以防万一,可以在最为层加入 If Not IsError
他的用法和if 大同小异,If Not IsError(你认为可能会报错的行) Then 如果没有报错的话 else 报错了的话 On Error Resume Next
那如果我们想让单元格稍微美观一点,加个表格怎么办呢?
With ActiveSheet.UsedRange.Resize(x, b - 1).Borders .LineStyle = xlContinuous .Weight = xlThin End With
简简单单一个 with 循环搞定
最后来个友情的弹出框
result = MsgBox("转换完成", 0, "提示")
至于弹出框还有什么样式,https://www.yiibai.com/vba/vba_message_box.html 阔以看看这里哟
当然里面以及空行删除啊,或者自行填充啊,这个就是你的逻辑代码需要处理的事情了
理论上知识点,差不多就这些吧
共同学习