Excel怎样加密多表查找数据列表

2025-11-20 06:05:57

1、在EXCEL中实现输入名字即可查询该员工12个月工资明细,并且因为薪资保密,员工本人打开只能查询到员工本人的12个月明细,而不能看到其他的,怎样处理? (百度知道问题)

Excel怎样加密多表查找数据列表

Excel怎样加密多表查找数据列表

Excel怎样加密多表查找数据列表

Excel怎样加密多表查找数据列表

2、解题思路:

方法一函数公式处理:

1、名字查询该员工每月工资明细,用函数VLOOKUP可以做到。

2、薪资保密,员工本人打开只能查询到员工本人的12个月明细,用名字查询是不能保密,要加入每个员工本人密码(已设定,只告知该本人),然后把12个月工资工作表和密码表隐藏,设置工作表簿保护(加密),查询表设置工作表保护(加密,不显示公式和不能修改)

3、方法二VBA处理:

用工作表事件Change和内置函数VLOOKUP。

1、例文件中增加一表命名mm,填写姓名(所有员工)和密码。

在C1填写公式:

=IF(ISNA(VLOOKUP(查询表!$B$1,mm!$A$2:$B$1001,1,FALSE)),1,IF(VLOOKUP(查询表!$B$1,mm!$A$2:$B$1001,2,FALSE)=查询表!$B$2,2,3))

Excel怎样加密多表查找数据列表

2、在表“查询表”中,A2输入:密码

下面5行单元格输入公式:

B5:=IF(OR($B$1="",$B$2=""),"",CHOOSE(mm!$C$1,"无此员工",IF(ISNA(VLOOKUP($B$1,'2020-1'!$B$4:$Z$1003,1,FALSE)),"",$B$1),"密码不正确"))

C5:=IF(AND(mm!$C$1=2,$B5<>""),VLOOKUP($B$1,'2020-1'!$B$4:$Z$1003,2,FALSE),"")

D5:=IF(AND(mm!$C$1=2,$B5<>""),VLOOKUP($B$1,'2020-1'!$B$4:$Z$1003,3,FALSE),"")

E5:=IF(AND(mm!$C$1=2,$B5<>""),VLOOKUP($B$1,'2020-1'!$B$4:$Z$1003,4,FALSE),"")

F5:=IF(AND(mm!$C$1=2,$B5<>""),VLOOKUP($B$1,'2020-1'!$B$4:$Z$1003,5,FALSE),"")

G5:=IF(AND(mm!$C$1=2,$B5<>""),VLOOKUP($B$1,'2020-1'!$B$4:$Z$1003,6,FALSE),"")

H5:=IF(AND(mm!$C$1=2,$B5<>""),VLOOKUP($B$1,'2020-1'!$B$4:$Z$1003,7,FALSE),"")

I5:=IF(AND(mm!$C$1=2,$B5<>""),VLOOKUP($B$1,'2020-1'!$B$4:$Z$1003,8,FALSE),"")

J5:=IF(AND(mm!$C$1=2,$B5<>""),VLOOKUP($B$1,'2020-1'!$B$4:$Z$1003,9,FALSE),"")

K5:=IF(AND(mm!$C$1=2,$B5<>""),VLOOKUP($B$1,'2020-1'!$B$4:$Z$1003,10,FALSE),"")

L5:=IF(AND(mm!$C$1=2,$B5<>""),VLOOKUP($B$1,'2020-1'!$B$4:$Z$1003,11,FALSE),"")

M5:=IF(AND(mm!$C$1=2,$B5<>""),VLOOKUP($B$1,'2020-1'!$B$4:$Z$1003,12,FALSE),"")

N5:=IF(AND(mm!$C$1=2,$B5<>""),VLOOKUP($B$1,'2020-1'!$B$4:$Z$1003,13,FALSE),"")

O5:=IF(AND(mm!$C$1=2,$B5<>""),VLOOKUP($B$1,'2020-1'!$B$4:$Z$1003,14,FALSE),"")

P5:=IF(AND(mm!$C$1=2,$B5<>""),VLOOKUP($B$1,'2020-1'!$B$4:$Z$1003,15,FALSE),"")

Q5:=IF(AND(mm!$C$1=2,$B5<>""),VLOOKUP($B$1,'2020-1'!$B$4:$Z$1003,16,FALSE),"")

R5:=IF(AND(mm!$C$1=2,$B5<>""),VLOOKUP($B$1,'2020-1'!$B$4:$Z$1003,17,FALSE),"")

S5:=IF(AND(mm!$C$1=2,$B5<>""),VLOOKUP($B$1,'2020-1'!$B$4:$Z$1003,18,FALSE),"")

T5:=IF(AND(mm!$C$1=2,$B5<>""),VLOOKUP($B$1,'2020-1'!$B$4:$Z$1003,19,FALSE),"")

U5:=IF(AND(mm!$C$1=2,$B5<>""),VLOOKUP($B$1,'2020-1'!$B$4:$Z$1003,20,FALSE),"")

V5:=IF(AND(mm!$C$1=2,$B5<>""),VLOOKUP($B$1,'2020-1'!$B$4:$Z$1003,21,FALSE),"")

W5:=IF(AND(mm!$C$1=2,$B5<>""),VLOOKUP($B$1,'2020-1'!$B$4:$Z$1003,22,FALSE),"")

X5:=IF(AND(mm!$C$1=2,$B5<>""),VLOOKUP($B$1,'2020-1'!$B$4:$Z$1003,23,FALSE),"")

Y5:=IF(AND(mm!$C$1=2,$B5<>""),VLOOKUP($B$1,'2020-1'!$B$4:$Z$1003,24,FALSE),"")

6行单元格输入(由行字数限制不能全列出,参考规律处理)如下:

B6:=IF(OR($B$1="",$B$2=""),"",CHOOSE(mm!$C$1,"无此员工",IF(ISNA(VLOOKUP($B$1, '2020-2'!$B$4:$Z$1003,1,FALSE)),"",$B$1),"密码不正确"))

C6:=IF(AND(mm!$C$1=2,$B5<>""),VLOOKUP($B$1, '2020-2'!$B$4:$Z$1003,2,FALSE),"")

Excel怎样加密多表查找数据列表

3、B1、B2单元格设置不“锁定”,公式单元格设置“锁定”和“隐藏”。该工作表设置密码保护(密码:AAA888)。

Excel怎样加密多表查找数据列表

4、除“查询表”外其它表全隐藏,该工作簿设置密码保护(密码:AAA888)(结构打勾,窗口不要打勾)。

Excel怎样加密多表查找数据列表

5、通过以上可以达到保密(不是绝对保密码,知到密码或破解密码或通过公式引用表和VBA可以查看到其它数据),输入查询结果如下:

Excel怎样加密多表查找数据列表

Excel怎样加密多表查找数据列表

1、例文件中增加一表命名mm,填写姓名(所有员工)和密码。

Excel怎样加密多表查找数据列表

2、在表“查询表”中,A2输入:密码,如下图。

Excel怎样加密多表查找数据列表

3、鼠标移到当前工作表标签栏“材料查询”表,右键,弹出快捷菜单,如下图。

Excel怎样加密多表查找数据列表

4、在快捷菜单找到【查看代码】并单击,打开VBA(宏)编辑界面,如下图。

Excel怎样加密多表查找数据列表

5、在左边代码框中复制下面代码到该框中,如下图。

Private Sub Worksheet_Change(ByVal Target As Range)

    '2020-6-5 22:16:23

    Dim xmmm, xm, mm1, mt As Worksheet, r As Long, i As Long, k As Long, m

    If Target.Row = 1 And Target.Column = 2 Then Range("b2").Value = ""

    If Target.Row = 2 And Target.Column = 2 Then

        xm = Range("b1").Value

        xmmm = Target.Value

        On Error Resume Next

        If xm <> "" And xmmm <> "" Then

            mm1 = Application.WorksheetFunction.VLookup(xm, Sheets("mm").Range("$A$2:$B$1001"), 1, False)

            If mm1 = "" Then

                Range("B5:Y16").ClearContents

                Range("B5:B16").Value = "无此员工"

            Else

                mm1 = Application.WorksheetFunction.VLookup(xm, Sheets("mm").Range("$A$2:$B$1001"), 2, False)

                If mm1 <> xmmm Then

                    Range("B5:Y16").ClearContents

                    Range("B5:B16").Value = "密码不正确"

                Else

                    Range("B5:Y16").ClearContents

                    For Each mt In Worksheets

                        If mt.Name <> ActiveSheet.Name Or mt.Name <> "mm" Then

                            r = mt.Range("B" & Rows.Count).End(xlUp).Row

                            k = 0

                            For i = 4 To r

                                If mt.Range("B" & i).Value = xm Then

                                    k = i

                                    Exit For

                                End If

                            Next i

                            If k <> 0 Then

                                m = mt.Range("Z4").Value

                                If m = "1月" Then

                                    mt.Range("B" & k & ":Y" & k).Copy Range("B5")

                                ElseIf m = "2月" Then

                                    mt.Range("B" & k & ":Y" & k).Copy Range("B6")

                                ElseIf m = "3月" Then

                                    mt.Range("B" & k & ":Y" & k).Copy Range("B7")

                                ElseIf m = "4月" Then

                                    mt.Range("B" & k & ":Y" & k).Copy Range("B8")

                                ElseIf m = "5月" Then

                                    mt.Range("B" & k & ":Y" & k).Copy Range("B9")

                                ElseIf m = "6月" Then

                                    mt.Range("B" & k & ":Y" & k).Copy Range("B10")

                                ElseIf m = "7月" Then

                                    mt.Range("B" & k & ":Y" & k).Copy Range("B11")

                                ElseIf m = "8月" Then

                                    mt.Range("B" & k & ":Y" & k).Copy Range("B12")

                                ElseIf m = "9月" Then

                                    mt.Range("B" & k & ":Y" & k).Copy Range("B13")

                                ElseIf m = "10月" Then

                                    mt.Range("B" & k & ":Y" & k).Copy Range("B14")

                                ElseIf m = "11月" Then

                                    mt.Range("B" & k & ":Y" & k).Copy Range("B15")

                                ElseIf m = "12月" Then

                                    mt.Range("B" & k & ":Y" & k).Copy Range("B16")

                                End If

                            End If

                        End If

                    Next mt

                End If

            End If

        End If

    End If

End Sub

Excel怎样加密多表查找数据列表

Excel怎样加密多表查找数据列表

6、以上步骤操作过程如下动画图。

Excel怎样加密多表查找数据列表

7、除“查询表”外其它表全隐藏,该工作簿设置密码保护(密码:AAA888)(结构打勾,窗口不要打勾)。

Excel怎样加密多表查找数据列表

8、VBE窗口代码加密,设置密码:AAA888

Excel怎样加密多表查找数据列表

9、输入查询结果如下:

Excel怎样加密多表查找数据列表

Excel怎样加密多表查找数据列表

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢