Excel:用随机生成的IDreplace名称

我正在尝试匿名电子表格中的数据。

我怎样才能把一个名字变成一个随机生成的6位数的代码?

一个警告是,我的数据集不止一次包含联系人。 我如何处理重复项,并将它们分配为与之前项目相同的string?

帮助赞赏。

最好的祝福

劳埃德

我正在寻找以下内容:

Col A | Col B foo.bar@gmail.com 124556 bar.foo@gmail.com 445643 foo.bar@gmail.com 124556 

这是一个基于macros观的解决scheme。
第一部分用不重复的6位数填充B列。
第二部分解决列A中的重复项

 Sub SecretCoder() Dim col As Collection, i As Long, N As Long, _ j As Long, v As String, codee As String, _ ncodee As Long, wf As WorksheetFunction Set col = New Collection Set wf = Application.WorksheetFunction N = Cells(Rows.Count, "A").End(xlUp).Row i = 1 'First Part On Error Resume Next While col.Count < N DoEvents ncodee = wf.RandBetween(100000, 999999) col.Add ncodee, CStr(ncodee) If Err.Number = 0 Then Cells(i, 2).Value = ncodee i = i + 1 Else Err.Number = 0 End If Wend On Error GoTo 0 'Second Part For i = 2 To N v = Cells(i, 1).Text For j = 1 To i - 1 If v = Cells(j, 1).Value Then Cells(i, 2).Value = Cells(j, 2).Value GoTo donV End If Next j donV: Next i End Sub 

这个技术最初由Excellll在SuperUser上描述。

您可以简单地在新选项卡上复制您的电子邮件地址栏,删除重复项,然后在相邻的栏中input

 =RAND() 

在第三栏中input

 =RANK(B1,$B$1:$B$999)+100000 

RAND生成的随机浮点小数几乎可以忽略不计,任何两个数字都是一样的。 对它们进行sorting会产生整数,您可以添加100000(或任何6位数字)以使代码为6位数。

回到你原来的表格中,你可以简单地使用VLOOKUP对付你的新表格。

 =VLOOKUP(A2,NewSheet!$A$1:$C$999,3,0) 

请注意 ,每次重新计算工作簿时,6位代码都会更改。 但是,您可以通过简单地复制新表格,然后粘贴特殊值来永久修复这些代码。