Excel 如何从单元格中字符串的中间提取文本
所以我将一个日志从服务器导出到一个.csv文件。我将其转换为.xlsm文件以获取内容。我想提取从给定单元格登录的用户名。我要从中提取的所有单元格都具有以下格式:Excel 如何从单元格中字符串的中间提取文本,excel,vba,Excel,Vba,所以我将一个日志从服务器导出到一个.csv文件。我将其转换为.xlsm文件以获取内容。我想提取从给定单元格登录的用户名。我要从中提取的所有单元格都具有以下格式: An account was successfully logged on. Subject: Security ID: NULL SID Account Name: - Account Domain: - Logon ID: 0x0 Logon Type
An account was successfully logged on.
Subject:
Security ID: NULL SID
Account Name: -
Account Domain: -
Logon ID: 0x0
Logon Type: 3
New Logon:
Security ID: ZZZ\username
Account Name: username
-----------------------------
我想从这个单元格中提取用户名,并将其放入相邻的单元格中,以创建所有登录者的透视表
如何仅提取用户名?试试以下方法:
Option Explicit
Public Sub getUserName()
Const COL As Long = 1
Const AN As String = "Account Name:"
Dim ur As Range, v As Variant, i As Long, x As String
Set ur = ActiveSheet.UsedRange
v = ur.Columns(COL).Resize(ur.Row + ur.Rows.Count - 1, 2)
For i = 1 To ActiveSheet.UsedRange.Rows.Count
x = Right(v(i, 1), Len(v(i, 1)) - (InStrRev(v(i, 1), AN) - 1))
x = Trim(Mid(x, Len(AN) + 1))
v(i, 2) = Left(x, InStr(x, vbLf) - 1)
Next
ur.Columns(COL).Resize(ur.Row + ur.Rows.Count - 1, 2) = v
End Sub
当前设置为从A列提取到B列问题是所有用户名的长度不同…使用InStr()获取边界字段的位置,然后您应该知道mid()调用的长度,然后执行
mid([cell],5,len([cell])
或者你可以一直作弊并使用任何数字,比如100。如果真的只有一个,那么尝试使用第二个结果。split
by\并使用第二个结果。这个用户名在固定的行数(比如9、18、27或t)后重复吗?它是写哪一列的?例如C或D等。你能将文件的快照上载到一些加载站点(比如D)吗rop箱。