Excel精英培训网

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

for next在在其运转期间改变终值如何实现?for nex无法实现时是否有其他方法?

[复制链接]
发表于 2019-6-6 09:23 | 显示全部楼层 |阅读模式
2学分
如要对excel中A:B列的数据进行核对,A:B列数据可重复。要实现:
1)A:B列按升序排列
2)对每一行数据进行对比,一致时此行标绿色;a列值小于b列时,b列插入单元格,向下移动,此行标红色,;a列值大于b列时,a列插入单元格,向下移动,此行标红色。
Sub pptest()
Dim n As Integer, i As Integer
n = Application.CountA(Range("A:A"))
Worksheets("测试").Activate
Worksheets("测试").Range("A:A").Sort _
Key1:=Worksheets("测试").Cells(1, 1), order1:=xlAscending
Worksheets("测试").Range("B:B").Sort _
Key1:=Worksheets("测试").Cells(1, 2), order1:=xlAscending
For i = 1 To n
If Cells(i, 1) = Cells(i, 2) Then
Else
If Cells(i, 1).Value < Cells(i, 2).Value Then
Cells(i, 2).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbov
n = n + 1
Else
Cells(i, 1).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbov
n = n + 1
End If
End If
Next
End Sub
此部分循环有问题,进行到n最初值为止,不会随运转期间变化进行变动

Sub ppcolor()
Call pptest
Dim m As Integer, s As Integer
m = Application.Max(ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row, ActiveSheet.Range("B" & Rows.Count).End(xlUp).Row)
For s = 1 To m
If Cells(s, 1) = Cells(s, 2) Then
Range(Cells(s, 1), Cells(s, 2)).Interior.Color = RGB(0, 255, 0)
Else
Range(Cells(s, 1), Cells(s, 2)).Interior.Color = RGB(255, 0, 0)
End If
Next
Debug.Print n, m
End Sub

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2019-6-6 09:50 | 显示全部楼层
虽然不赞成这种单元格操作,但是你的要求也可以实现的,只要倒序循环就好了。
for n=最大值 to 最小值 step -1
next

评分

参与人数 1学分 +2 收起 理由
lsyylw + 2 学习

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-7 10:28 , Processed in 0.219087 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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