我有一个表,其中包含来自不同域的重复用户。我想在特定的单元格中包含特定用户所属的所有域。
研究并尝试查看如何实现这一目标,我发现TEXTJOIN和IF是可能的选择,但是由于某些原因,它无法按预期运行。该公式不仅显示所有绑定域,而且还显示所有域,并检查其工作原理,好像将返回结果。
我想知道你是否知道我在这里想念什么?
正如您将在屏幕截图中看到的那样,对于admin来说,它显示了整个结果数组;对于operator而言,它什么也不显示。不知道为什么会这样。
按照预期的结果,考虑到所附的屏幕快照,我希望在单元格F2中仅看到帐户管理员所属的域,因此仅为“ aaa”。对于运算符,为“ ccc”。
提前感谢支持。
答案 0 :(得分:0)
答案 1 :(得分:0)
尝试此宏
Option Explicit
Sub Give_data()
Dim Dict As Object
Dim first As Worksheet
Dim Itm, K, i%: i = 2
Set Dict = CreateObject("Scripting.Dictionary")
Set first = Sheets("Sheet1")
first.Range("E2").CurrentRegion.Offset(1).Resize(, 2).ClearContents
Do Until first.Range("A" & i) = vbNullString
K = first.Range("A" & i): Itm = first.Range("B" & i)
If Not Dict.Exists(K) Then
Dict.Add K, Itm
Else
Dict(K) = Dict(K) & ";" & Itm
End If
i = i + 1
Loop
With first.Range("E2").Resize(Dict.Count)
.Value = Application.Transpose(Dict.Keys)
.Offset(, 1).Value = Application.Transpose(Dict.Items)
End With
Dict.RemoveAll: Set Dict = Nothing
first.Columns("E:F").AutoFit
End Sub
答案 2 :(得分:0)
要列出所有要发送给管理员的内容,此宏可以为您提供帮助
Sub My_data()
Dim Dict As Object
Dim first As Worksheet
Dim Itm, K, i%: i = 2
Dim My_String$
Set Dict = CreateObject("Scripting.Dictionary")
Set first = Sheets("Sheet1")
With first
.Range("E2").CurrentRegion.Offset(1).Resize(, 2).ClearContents
.Range("E2") = .Range("A2")
'===============================
Do Until .Range("B" & i) = vbNullString
My_String = My_String & ";" & .Range("B" & i)
i = i + 1
Loop
.Range("F2") = Mid(My_String, 2, Len(My_String) - 1)
'============================
i = 3
Do Until .Range("A" & i) = vbNullString
If .Range("A" & i) = .Range("A2") Then GoTo Next_I
K = .Range("A" & i): Itm = .Range("B" & i)
If Not Dict.Exists(K) Then
Dict.Add K, Itm
Else
Dict(K) = Dict(K) & ";" & Itm
End If
Next_I:
i = i + 1
Loop
With .Range("E3").Resize(Dict.Count)
.Value = Application.Transpose(Dict.Keys)
.Offset(, 1).Value = Application.Transpose(Dict.Items)
End With
End With
Dict.RemoveAll: Set Dict = Nothing
first.Columns("E:F").AutoFit
End Sub