vba 两个表 信息合体一个表格

时间:2022-12-19 09:34:30
1 把Excel某一区域的内容读入到数组中:

Dim strArray() As Variant

Dim wk_data As Variant

Set wk_data = Sheets("Sheet1")

strArray = wk_data.Range("A1:CV100").Value

 

2 把数组的内容写入到Excel中

wk_data.Range("A1").Resize(UBound(strArray, 1), UBound(strArray, 2)).Value = strArray

  vba的强大在于 规范  文件名wookbooks- 1工作表名sheets ,2工作表名sheets ,3工作表名sheets ,n工作表名sheets 

                                                   1字段名 21字段名 3字段名 n字段名

                                                  最大行 最大列

                                                 循环  +遍历  +判断+分割

                                                 操作  复制  粘贴  改变属性

1.1.1 方法1:
ActiveSheet.UsedRange.Rows.Count
ActiveSheet.UsedRange.Columns.Count
缺点:有时可能会比实际数大一些,原因是如果你把最后几行(列)数据清除后(非整行或整列删除),用这个命令仍返回未清除前的值。就是说现在虽然是空的,但是你曾经用过也算你的。
1.1.2 方法2:
ActiveSheet.Range("A65535").End(xlUp).Row
ActiveSheet.Range("IV1").End(xlToLeft).Column
可以简写为:
ActiveSheet.[A65536].End(xlUp).Row
ActiveSheet.[IV1].End(xlToLeft).Column
缺点:只能计算出一列(行)的最后一个单元格所在的行(列)数。本例是只返回A列最后一个单元格所占的行数。
1.1.3 方法3:
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column
缺点:在工作表进行对删除或清除操作时也会变得比实际情况大。
1.1.4 方法4:
ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
缺点:在工作表进行对删除或清除操作时也会变得比实际情况大。
1.1.5 方法5:
Application.CountA(ActiveSheet.Range("A:A"))
Application.CountA(ActiveSheet.Range("1:1"))
只能统计一列(行)的实际使用情况,得到的不一定是最后一行(列)的位置。方法2的数值比此方法大时,说明在A列的数据间有空白未填写的单元格。
1.1.6 方法6:
ActiveSheet.Cells.Find(What:="*",After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
ActiveSheet.Cells.Find(What:="*",After:=[A1], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
效果同方法2
1.1.7 方法7:
MaxRow =Application.Evaluate("=MAX((A1:A1048576<>"""")*ROW(1:1048576))")
1.1.8 方法8:
Me.Cells(1048576,1).End(xlUp).Row’Excel2007
Me.Cells(1048576,1).End(xlUp).Row’Excel2003
这一代码返回工作表中最后一个包含非空内容的单元格所在的行号,而不管这一单元格与Me.Cells(1,1)之间是否有包含空白内容的单元格。而且这一方法将跳过或者说忽略被隐藏的单元格,比如,数据表有连续的50行,如果第48到50行隐藏了,则这一程序只返回47。
1.1.9 方法9:
Sheets("sheet1").Cells(Rows.Count,1).End(3).Row
r = .Cells(.Rows.Count,1).End(xlUp).Row
1.1.10 方法10:
利用 Worksheet.Rows属性
Private Sub DisplayRowCount()
MsgBox("This worksheetcontains " & _ Me.Rows.Count.ToString() & " rows.")
End Sub
以上方法中比较常用的是方法1和方法2。
评分

  

相同的元素

function  FilterData(a,b)
        {   //循环判断数组a里的元素在b里面有没有,有的话就放入新建立的数组中
            var result = new Array();
            var c=b.toString();
            for(var i=0;i<a.length;i++)
            {
              if(c.indexOf(a[i].toString())>-1)
              {
              result.push(a[i]);
              }      
            }
            return result;
        }

 

不同的元素 a一定是比b数组长,然后找出a中和b不同的。即a去掉b以后的

function  FilterData(a,b)
        {   //循环判断数组a里的元素在b里面有没有,有的话就放入新建立的数组中
            var result = new Array();
            var c=b.toString();
            for(var i=0;i<a.length;i++)
            {
              if(c.indexOf(a[i].toString())==-1)
              {
              result.push(a[i]);
              }      
            }
            return result;
        }