当公司里的财务对office并不精通的时候,对,你就得给与支持!office也没有专门研究过,也是一点一点的去找、去试;目前将所用过的office的命令及宏记录下来:


例:

表一
表二
编号
数值一
数值二
数值三
编号
数值一
数值二
数值三

a001

12345
34567
78901
a002
6666
7112
2323
a002
123
5555
6666
a003
3334
5678
9867
a003
7777
812
345
a004
123
4445
66443


1、取左、右边的值

取左=right(b2,2)  "选取B2单元格左边二位数值" =45

取右=left(b2,2)   "选取B2单元格右边二位数值" =12

取值不要后两位=left(b2,len(b2)-2)=123 //其中len(b2)是显示当前字符长度


2、数据合并

将表一、表二列中的单元格相加,在表三中显示;如表一.b2+表二b2=表三.b2

自己的方法:首先使用VLOOKUP将相应单元格数值提取出来,那么问题来了有数值会正确显示,如没有数值则会显示一个错误信息,这们相加得出的结果也会是错误信息,所以要对得出来的值做判断。


表三.B2 = IF(ISNA(VLOOKUP(A2,'表一'!$A$2:$D$4,2,0)),0,VLOOKUP(A2,'表一'!$A$2:$D$4,2,0))+IF(ISNA(VLOOKUP(A2,'表二'!$A$2:$D$5,2,0)),0,VLOOKUP(A2,'表二'!$A$2:$D$4,2,0))

这个方法有点长,但看起来很有清楚,能想明白,一看就是菜鸟写的,下面是高手写的,

表三.B2 = SUMIF(表一!A:A,A2,表一!B:B)+SUMIF(表二!A:A,A2,表二!B:B)

简单明了,表示很好用。。


3、vlookup数据查找

这个函数经常用到,之前有时突然想不起来怎么用,所以记录一下

查找表一的B4=vlookup(a4,a2:d4,2,0)    //查找a4在a2:b4区域中第2列的数值


4、同列相同数据筛选

例:编号列出现多个相同的值,如多个a001、a002,想要只保留一个,其它的筛选出来

辅助列=if(countif(A$1:A1,A1)=1,A1,"")


5、从列a与列b列对比,若a1与b1不同,则b1下移一格再与a2对比,相同则跳过对比下一单元格,并将不同的填充红色数值为0

Sub test()
Dim a, b, c As Integer
a = Range("a65536").End(xlUp).Row
For b = 1 To a
If Cells(b, 1) <> Cells(b, 2) Then
Cells(b, 2).Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    ActiveCell.FormulaR1C1 = "0"
    With Selection.Interior
        .ColorIndex = 3
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
    End With
End If
Next
End Sub

网上找的,很有用,比如两个相同报表对比,想找到两个报表中缺失的几行,使用这个就可以。


6、删除两列中相同数据

Sub RemoveSame()
Dim col1, col2 As String
col1 = "A"
col2 = "B"
Dim row1, row2, i, j As Integer
Dim finded As Boolean
row1 = ActiveSheet.Range(col1 & "65536").End(xlUp).Row
row2 = ActiveSheet.Range(col2 & "65536").End(xlUp).Row
For i = 1 To row1
    finded = False
    If (Range(col1 & i) <> "") Then
    For j = 1 To row2
        If (Range(col1 & i) = Range(col2 & j)) Then
            Range(col2 & j) = ""
            finded = True
        End If
        If (finded) Then
        Range(col1 & i) = ""
        End If
    Next
    End If
Next
End Sub

有时想删除两个报表中相同的数据,可以使用这个宏

 

------2016.02.22更新

等差序列运用

wKiom1bKYsqgaCJVAAAeS87LGMo289.png

D4=IF(MOD(ROW(),4)>=0,INDIRECT("B"&ROW()/4*3),"")

  row()=row(4)=4   mod(4,4)=0(取4/4的余数,也就是0

  INDIRECT("B"&ROW()/4*3) indirect是将计算结果显示;row()/4*3=3  "b"&3=b3