Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于用户名excel的过滤器_Excel_Vba_Filter_Autofilter - Fatal编程技术网

基于用户名excel的过滤器

基于用户名excel的过滤器,excel,vba,filter,autofilter,Excel,Vba,Filter,Autofilter,Hi不确定这是否可以通过excel中的vba或任何方式实现。我想做一个自动过滤的用户名。我有一个不同用户将使用的文件,它不是共享的,因此一次只有一个人可以使用它。excel是否可以识别用户名并将X列筛选为该用户名。显示与该用户相关的行 ie Column X John Doe John Smith Jane SMith 如果john Smith打开文件,它将自动筛选以仅显示john Smith的行,如果用户名不在列X中,则显示全部 这不是安全意识,所以如果有人未过滤,这不是问题,只是一个很好的

Hi不确定这是否可以通过excel中的vba或任何方式实现。我想做一个自动过滤的用户名。我有一个不同用户将使用的文件,它不是共享的,因此一次只有一个人可以使用它。excel是否可以识别用户名并将X列筛选为该用户名。显示与该用户相关的行

ie Column X
John Doe
John Smith
Jane SMith
如果john Smith打开文件,它将自动筛选以仅显示john Smith的行,如果用户名不在列X中,则显示全部

这不是安全意识,所以如果有人未过滤,这不是问题,只是一个很好的选择

我知道excel可以调用用户名,因为我有一些代码可以发送文件并保存在文件中,文件名包括用户名,使用

Environ("Username"
任何帮助都将不胜感激,因为我甚至不知道从哪里开始


谢谢

假设您在表1中有以下虚拟数据:

我们要筛选名称,第3列

实现这一点的示例代码如下:

Sub NameFilter()
    Dim name As String
    name = Environ("Username") 'e.g. "Mary"

    ThisWorkbook.Sheets("Sheet1").Range("A1:C6").AutoFilter 3, "=" & name
End Sub
您可以将其置于
工作簿\u Open
函数中,以便在打开工作簿时触发:

我们可以使它更加健壮和灵活,同时考虑到如果名称不存在,您需要保留未过滤的内容。有关详细信息,请参见下面我的评论:

Sub NameFilter()
    ' Get the username for filtering
    Dim name As String
    name = Environ("Username")
    ' Define the filter range
    Dim Rng As Range
    Set Rng = ThisWorkbook.Sheets("Sheet1").Range("A1:C6")
    ' Define the column for filtering
    Dim FiltColumn As Long
    FiltColumn = 3
    ' Clear filters by default
    Rng.AutoFilter FiltColumn
    ' Check if the name exists
    NameExists = Application.Match(name, Rng.Columns(FiltColumn))
    ' Filter if the name does exist
    If Not IsError(NameExists) Then
        Rng.AutoFilter FiltColumn, "=" & name
    End If
End Sub

是的,通过
Workbook\u Open
事件,您可以根据用户名进行自动筛选。谢谢您,先生,这非常有效,非常感谢!