帮忙看看这个excel的功能用vba怎么实现!紧急!

如图,每行就是一个商品,要在每个商品行下面新插入6行,A列必须跟商品行号码的一样,C列分别就是商品行里的各个尺码,由于这个尺码不一定是6个,也有可能是别的数量,别的数目,所以希望能通过读取商品所在行的C列数据来自动循环实现。麻烦给出具体可行代码,谢谢!
图片显示的是我要实现的最终效果.
我要实现的是:
每个商品行下面新插入行,行数由C列里数值个数决定。
同一个商品,A列的商品号码的一样,C列分别对应各个尺码。
执行完一个商品自动跳到下一个商品开始新的插入,直到没有商品。

代码如下:

Sub aa()
Dim i, j As Integer
Dim s As String
For i = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
s = WorksheetFunction.Substitute(Cells(i, 3), "-", "")
k = Len(Cells(i, 3)) - Len(s)
For j = k + 1 To 1 Step -1
Rows(i + 1).Select
Selection.Insert shift:=xlDown
Cells(i + 1, 1) = Cells(i, 1)
Cells(i + 1, 3) = Left(Cells(i, 3), 1) + 2 * (j - 1)
Next j
Next i
End Sub

打开VBE编辑器,粘贴以上代码,运行后即可达到要求。追问

哥们你太狠了!
但是这个只完成了插入行和A列的数据填充,C列还是空白一片。

追答

我又改了一下,增加了代码行,你再试一下看看。

追问

成功了!哥们太狠了!谢谢!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-08-11
程序功能是正常的,产生有的数据没能达到你的要求,是因为你采用了随机函数,产生了数据后,是会重新刷新的,而刷新的数据你又没重新进行判断,从而导致了你现在的结果.

还有一个错误,你清除单元格格式的命令也不对

程序可修改如下:

Sub repl()
Dim dat
Cells.Select
Selection.ClearFormats
For rwIndex = 1 To 100
For colIndex = 1 To 10
With Worksheets("Sheet1").Cells(rwIndex, colIndex)
Randomize
dat = Int(Rnd() * 1000 + 1)
.Value = dat
If dat > 900 Then
.Value = "rel_" & Int(.Value)
.Font.Color = RGB(45, 145, 154)
else
.font.color=rgb(255,0,0)
End If
End With
Next colIndex
Next rwIndex
End Sub

你试过我这个小程序没有?应该能达到你的要求的,

我这个小程序,可以选出大于900的,然后用不同颜色表示出来,不会漏选的
追问

图片显示的是我要的效果,不是我用代码实现的。
我试了,你这个代码不好用啊。

第2个回答  2011-08-12
上班没太多空,大概讲一下思路:
在表格的最后插入一列,通过公式:
=LEN(C2)-LEN(SUBSTITUTE(C2,"-",""))+1
获得C列尺码的个数。
然后通过循环(一个循环是整个工作表的行数,另一个是尺码的个数)添加空行,并添加A、C两列的值。
如果搞不定的话,晚上回家帮你写一下代码。

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网