EXCEL根据某一单元格的值,自动复制插入行。求详细VBA代码?十分感谢

EXCEL根据某一单元格的值,自动复制插入行。再表上颜色颜色,求详细VBA代码,图一是没改过的,图二是改好的效果图,
根据内件名称那一列来复制插入,里面有几个物品就复制几行,
图1

图2是需要的结果,

1、添加内件名称数据辅助列,输入以下公式,然后向下填充公式

=LEN(N2)-LEN(SUBSTITUTE(N2,",",""))+1

2、添加行数对应辅助列,输入以下公式,然后向下填充公式

=SUM(Q$2:Q2)-Q2

3、输入以下公式,然后向右向下填充公式

=IF(ROW(A1)-1<SUM($Q:$Q),LOOKUP(ROW(A1)-1,$R$2:$R$4,B$2:B$4),"")

生成对应内件名称个数的行数内容。

 

详见附图同表举例

追问

能帮忙自己上颜色吗 方便区分
因为数据量太大了,一个个上颜色太慢了

温馨提示:内容为网友见解,仅供参考
第1个回答  2016-05-05
Sub fuzhi()
with activesheet
 For i = .Range("N65536").End(xlUp).Row To 2 Step -1
     n = UBound(Split(.Cells(i, "N"), ","))
     .Rows(i & ":" & i + n - 1).Insert
     .Rows(i + n).Copy .Rows(i & ":" & i + n - 1)
     .Rows(i + 1 & ":" & i + n).Interior.Color = vbGreen
 Next
 end with
End Sub

追问

这个太棒了!能不能把复制的原数据行也上颜色

追答

上什么颜色, 颜色必须要不一样吧, 一样 就没意义了

Sub fuzhi()
With ActiveSheet
 For i = .Range("N65536").End(xlUp).Row To 2 Step -1
     n = UBound(Split(.Cells(i, "N"), ","))
     .Rows(i & ":" & i + n - 1).Insert
     .Rows(i + n).Copy .Rows(i & ":" & i + n - 1)
     .Rows(i + 1 & ":" & i + n).Interior.Color = vbGreen
     .Rows(i).Interior.Color = vbYellow
 Next
 End With
End Sub

追问

是这样的 我的数据有的是内件名称有多个的时候才需要复制,如果里面是单个的名称就不需要复制也不需要颜色,所以需要跟复制的原数据行颜色一样。便于区分.这是我们实际排列效果.

追答

你是说 单个名称不 需要处理是么

只需要告诉 我要做什么就好了,不需要写这么多


代码如下

Sub fuzhi()
With ActiveSheet
 For i = .Range("N65536").End(xlUp).Row To 2 Step -1
     n = UBound(Split(.Cells(i, "N"), ","))
    If n > 0 Then
     .Rows(i & ":" & i + n - 1).Insert
     .Rows(i + n).Copy .Rows(i & ":" & i + n - 1)
     .Rows(i & ":" & i + n).Interior.Color = vbGreen
    End If
 Next
 End With
End Sub

追问

可以了,成功了 谢谢您朋友,

本回答被提问者采纳

EXCEL根据某一单元格的值,自动复制插入行。求详细VBA代码?十分感谢
1、添加内件名称数据辅助列,输入以下公式,然后向下填充公式 =LEN(N2)-LEN(SUBSTITUTE(N2,",",""))+1 2、添加行数对应辅助列,输入以下公式,然后向下填充公式 =SUM(Q$2:Q2)-Q2 3、输入以下公式,然后向右向下填充公式 =IF(ROW(A1)-1<SUM($Q:$Q),LOOKUP(ROW(A1)-1,$R$2:$R$4,B$2...

EXCEL根据某一一行的值,自动复制插入行,VBA代码怎么写
fuzhi()with activesheet For i = .Range("N65536").End(xlUp).Row To 2 Step -1 n = UBound(Split(.Cells(i, "N"), ",")) .Rows(i & ":" & i + n - 1).Insert .Rows(i + n).Copy .Rows(i & ":" & i + n - 1) .Rows(i + 1 & ":" & i +...

求根据条件点击指定单元格,在其它单元格显示或删除数据的VBA代码...
Private Sub Worksheet_SelectionChange(ByVal Target As Range)If Target.Row = 5 And Target.Column = 2 Then If i Mod 2 = 1 Then i = i + 1 If Range("h3").Value = 1 Then Range("h5").Value = Target.Value ElseIf Range("h3").Value = 2 Then Range("i5").Value = Tar...

excel中如何根据指定数字,紧随其后插入行数?
写VBA代码来完成,步骤如下:打开工作表,按ALT+F11组合键调出VBE,在右边的代码窗口输入如下代码:Sub InsertLine()Dim i As Integer, j As IntegerFor i = 2 To 1000For j = 1 To Cells(i, 4)Rows(i + 1).InsertNext jNext iEnd Sub 确保光标处于代码中,按F5键运行,完成!如有疑问...

Excel 按指定列数值自动插入行
根据关键字,跨表引用,可以用vlookup函数来实现。表一示例数据:如上图,在做工资表时,需要有基础资料表,列示姓名、职务、底薪等基础信息。假如在表二中,用姓名作为关键字,可以如下图所示:B2公式为:=VLOOKUP($A$2,Sheet1!$A$2:$D$8,COLUMN(B:B),0)C2公式为:=VLOOKUP($A$2,Sheet1!

想在excel里用VBA,点击按钮复制一行数据到另外一行,可是不知道该怎么写...
ThenSheet3.Cells(i, 1).Value = Sheet2.Cells(1, 1).ValueSheet3.Cells(i, 2).Value = Now()GoTo lastlineElsei = i + 1End IfLooplastline:MsgBox "done!"End Sub效果是:sheet1里面有combobox1, 用户选某值,sheet2的第一行变成用户选的值,sheet3的第一非空行追加记录用户值。

Excel 按指定列数值自动插入行
如下宏代码可实现你的目的,但中间不能有空单元格,否则中止,也不可以有非数据单元格,否则报错中断。Sub Macro1()Dim i As Integer lk = False Range("E1").Select Do If ActiveCell.FormulaR1C1 = "" Then lk = True ElseIf ActiveCell.Value > 0 Then ActiveCell.Offset(1, 0).Select ...

EXCEL宏如何根据值自动复制行数
软件版本:Office2007 方法如下:1.根据E1内数字,复制从A1开始的E1行到SHeet2中:2.Alt+F11,输入代码如下:3.F5制定代码,返回Sheet2中,得到结果如下:

excel怎么把符合条件的一行自动复制
1、以C列为辅助列,在C2单元格输入以下公式,然后向下填充公式 =SUM(B$2:B2)-B2 2、输入以下公式,然后向下填充公式,得到规定次数的所有名称 =IF(ROW(A1)-1>=SUM(B:B),"",LOOKUP(ROW(A1)-1,C:C,A:A))3、F列的课时列,可以根据需要,全部输入1,或者F2输入=VLOOKUP(E2,A:B,2,0)...

excel表格中,如果一个单元格为空,就复制同列上一行的数据,用VBA怎么写...
录制一个宏,稍微修改后,如下。Sub 宏1() Range("A2:C10").SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"End Sub

相似回答