excel vba编程,是在一段表格中插入几行后,插入行后的行整体下移,不破坏原有数据内容,
2014-11-26 12:34
573 查看
Range(Rows(3), Rows(5)).Insert shift:=xlDown
1)在当前单元格处插入一行 ; 可以增加循环语句来实现插入多行 Range("A10").Select Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove 2)在当前选择行处插入与选择行数相同的行数; 可更改行号来实现不同地方的插入。 Rows("10:11").Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 3)将range换成sheet1.cells(x,y) 或range(cells(x1,y1),cells(x2,y2)) 则可用程序来控制插入的位置
EXCEL中VBA或者函数怎么自动插入新数据?
我会用函数,VBA知道一点,请问:如何在图中当C列出现大于4.8和小于0.2的数值后,自动插入下一个ZD9。就是图中K294+920后面出现了-0.363解释一下图中数据的计算方法:第一个 ZD8所在行9和行10的数据手动输入。A列中K294+880和E列3174.967G列3174.97在另一个工作表中排列好了的,可以直接调用。他 后面的C列数值叫前视,C11=$D$10-E11,C12=$D$10-E12,C13=$D$10-E13ZD9后 面C14是根据上图中K294+920后面出现了-0.363(小于0.2),就随机一个0.2到0.5的数。如果上图中K294+920后面出现了 7.652(大于4.8)时,就随机一个4.2到4.8的数。E14=D10-C14 B15也是一个随机数,是根据上图中K294+920后面出现了-0.363(小于0.2),就随机一个4.2到4.8的数。如果上图中 K294+920后面出现了7.652(大于4.8)时,就随机一个0.2到0.5的数。D15=E14+B15这个ZD9就完成了。下边的C16=$D$15-E16,C17=$D$15-E17,C18=$D$15-E18 就是这样,如果下边的C列又出现大于4.8或者小于0.2的数,又插入下个点ZD10,如此循环。如果没有说明白,请联系QQ313616791或者电话18048795658那个7.652是假设的。那么我告诉你到底怎么做:我要这样几个过程, (1.)当C列出现小于0.2或者大于4.8的数值后,插入两行,这个叫转点。 (2)这两行里的数据符合这样的要求, ZD9那个9=上一个ZD8后面的8+1,是下一个转点的意思。 显然在下一个就应该是ZD10,ZD11,ZD12 ,ZD13....... 这样吧,转点ZD就从ZD1开始。
根据你图一数据及要求写了一段代码,看是不是满足要求: 1、运行前请备份原始数据表,切记! 2、为了便于检查,会自动在相关单元格写入公式。 3、代码直接放到图一的“水准测量记录”表的代码页中,如果写在模块中,请自行修改代码。代码运行后会生成图二的样子,只能运行一次,再次运行时必须保证数据格式是图一(原表)的格式。由于有几个数据是随机数,多次测试结果会不同。 4、默认图一E列是已知数据。 Sub 插入数据() Dim i As Long Dim k As Long Dim n As Long n = 8 k = 10 With ActiveSheet For i = 11 To 65536 If .Cells(k, 4).Value - .Cells(i, 5).Value >= 0.2 And .Cells(k, 4).Value - .Cells(i, 5).Value <= 4.8 Then .Range("C" & i) = "=$D$" & k & "-E" & i Else If .Cells(k, 4).Value - .Cells(i, 5).Value >= 4.8 Then .Rows(i).Insert Shift:=xlDown .Range("A" & i) = "ZD" & n + 1 .Range("C" & i) = "=Round(rand() * (4.8 - 4.2) + 4.2, 3)" .Range("E" & i) = "=$D$" & k & "-C" & i .Rows(i + 1).Insert Shift:=xlDown .Range("B" & i + 1) = "=Round(rand() * (0.5 - 0.2) + 0.2, 3)" .Range("D" & i + 1) = "=E" & i & "+B" & i + 1 ElseIf .Cells(k, 4).Value - .Cells(i, 5).Value <= 0.2 Then .Rows(i).Insert Shift:=xlDown .Range("A" & i) = "ZD" & n + 1 .Range("C" & i) = "=Round(rand() * (0.5 - 0.2) + 0.2, 3)" .Range("E" & i) = "=$D$" & k & "-C" & i .Rows(i + 1).Insert Shift:=xlDown .Range("B" & i + 1) = "=Round(rand() * (4.8 - 4.2) + 4.2, 3)" .Range("D" & i + 1) = "=E" & i & "+B" & i + 1 End If k = i + 1 n = n + 1 i = i + 1 End If If .Range("E" & i + 1) = "" Then Exit For Next i End With End Sub
这就好理解了,我重复一遍,你确认一下。当c列中出现小于0.2或者大于4.8的数值后,在该行的上方插入两个空行,并且在A列写入ZD+编号。其他都留空白。 Sub InsertRow() Dim LastRow As Long, i As Long, j As Long Application.CutCopyMode = False LastRow = Cells(Cells.Rows.Count, 3).End(3).Row i = 1 Do If IsNumeric(Cells(i, 3)) And Len(Cells(i, 3)) > 0 Then If Cells(i, 3) < 0.2 Or Cells(i, 3) > 4.8 Then Rows(i & ":" & i + 1).Insert shift:=xlDown j = j + 1 Cells(i, 1) = "ZD" & j i = i + 2 LastRow = Cells(Cells.Rows.Count, 3).End(3).Row End If End If i = i + 1 Loop Until i > LastRow End Sub
相关文章推荐
- 从Excel 电子表格中读取数据并插入到数据库的简单方式
- asp.net将内容导出到Excel,Table表格数据(html)导出EXCEL
- C#调用NPOI组件读取excel表格数据转为datatable写入word表格中并向word中插入图片/文字/书签 获得书签列表
- Excel vba从excel中导出表格数据和图表到新word文档
- 将Excel中内容按条插入Word表格中
- 使用OLEDB将数据插入对应的EXCEL表格中
- C# Window编程随记——第三方读取Excel表格数据的插件(NPOI.dll)
- EXCEL VBA代码,实现点击Sheet1按钮控件保存不连续单元格的数据到Sheet2中,然后清空输入内容
- C#调用NPOI组件读取excel表格数据转为datatable写入word表格中并向word中插入图片/文字/书签 获得书签列表
- JAVA编程插入Excel文件到Word数据区域
- 使用VBA将Excel数据导入到Word的表格中
- java 将EXCEL表格数据转换成XML格式
- java 将EXCEL表格数据转换成XML格式
- 在Asp.Net中,导入Excel表格数据,通常有两种方法
- 用C#编程从数据库中读取图片数据导进Excel文件的方法
- java 将EXCEL表格数据转换成XML格式
- EXCEL VBA编程的一些小结
- 从页面表格导出数据到Excel
- 在ASP.NET中将数据直接输出成Excel内容
- 导入Excel表格数据到SQL Sever数据库