求教各位大神,急,在线等!谢谢

qq_35767248 2016-08-02 10:06:45
条件是
如果Ax不等于A(x-1) 那么在Ax和A(x-1)之间插入一行,并将Ax所在的整列复制到插入的那一行中,且新插入的那行的Cx(C必定为数字)*0.5
如果Ax不等于A(x+1)那么在Ax和A(x+1)之间插入一行,并将Ax所在的整列复制到插入的那一行中,且新插入的那行的Cx(C必定为数字)*1.5
比如
如果A2不等于A1,那么在1列和2列之间插入一行,并将2列的内容复制到新插入的那一行中,且新插入那行的C2*0.5(因为新插入了一行,所以原先的A2变成了A3,插入那行变成了A2)
不知道有没有说清楚我的意思。。。对VBA是小白形态,希望各位大神能帮助一下!!
谢谢!!!
下面是用图片示例,代码跑之前和跑之后的对比,真心求教!
...全文
921 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
舉杯邀明月 2016-08-04
  • 打赏
  • 举报
回复
照着楼主的数据来。
原始数据:

执行一次代码后:


代码:
Option Explicit

Private Sub Main()
Dim vText As String
Dim vCurr As Long
Dim vSave As Long
Dim pi&, pn As Long

vSave = -1&
pi = 2 ' 数据“从第2行开始”
Do
vText = Sheet1.Cells(pi, 1).Text
If (vText = "") Then Exit Do
vCurr = Val(vText)
If (vSave Xor vCurr) Then
pn = pi
pi = 1& + pi
Sheet1.Rows(pn).Insert Shift:=xlDown
Sheet1.Range("A" & pi & ":H" & pi).Copy Sheet1.Range("A" & pn)
Sheet1.Cells(pn, 3).Value = 0.5 * Sheet1.Cells(pi, 3).Value
End If
vSave = Val(Sheet1.Cells(pi + 1&, 1).Text)
If (vSave Xor vCurr) Then
pn = 1& + pi
Sheet1.Rows(pn).Insert Shift:=xlDown
Sheet1.Range("A" & pi & ":H" & pi).Copy Sheet1.Range("A" & pn)
Sheet1.Cells(pn, 3).Value = 1.5 * Sheet1.Cells(pi, 3).Value
pi = 1& + pn
Else
pi = 1& + pi
End If
vSave = vCurr
Loop
End Sub

也许实际的数据类型,跟你的“例子”并不一致。
自己参考,改一下。
qq_35767248 2016-08-02
  • 打赏
  • 举报
回复




这是跑之前和跑之后的参考图,感谢各位大神

在线等代码
一如既往哈 2016-08-02
  • 打赏
  • 举报
回复
没看明白咋意思.........

2,464

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧