2014-09-18 6 views
0

내 스프레드 시트에서 데이터 익명화를 시도하고 있습니다.Excel : 임의로 생성 된 ID로 이름 바꾸기

어떻게 이름을 가져 와서 무작위로 생성 된 6 자리 코드로 바꿀 수 있습니까?

하나의 경고는 내 데이터 집합에 연락처가 두 번 이상 포함되어 있다는 것입니다. 이전 항목과 동일한 문자열이 할당 된 상태에서 중복 된 항목을 처리하려면 어떻게해야합니까?

감사합니다.

안부

로이드

나는 다음을 찾고은 :

Col A    | Col B 
[email protected] 124556 
[email protected] 445643 
[email protected] 124556 
+0

: http://stackoverflow.com/questions/15201297/md5-hash-function-in-excel-without-using -vba – Elisha

+1

6 자리 코드가 일정해야합니까? 즉, 중복 검사를하는 난수이면 충분합니까? – Bathsheba

답변

1

다음은 매크로 기반 솔루션입니다.
첫 번째 부분은 열 B을 6 자리가 아닌 값으로 채 웁니다.
두 번째 부분은 열 에서 중복을 해결 A I이 여기에 도움이 될 것 같아요

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 
+0

이 답변을 사용하기로 결심하고 완벽하게 작동합니다. 감사합니다. –

0

이 기술은 원래 여기 by Excellll on SuperUser 설명했다.

당신은 단순히 입력, 세 번째 열에서

=RAND() 

를 입력 한 다음 인접한 열에서 중복을 제거, 새 탭에서 귀하의 이메일 주소 컬럼의 사본을 취할 수

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

무시할 수있는 기회가 임의의 부동 소수점 소수점의 RAND에 의해 생산, 두 숫자가 동일합니다. 순위를 매기면 100,000 (또는 임의의 6 자리 숫자)을 추가하여 코드 6 자리를 만들 수있는 정수가 생성됩니다.

원래 테이블에 돌아와서 새로운 테이블에 간단하게 VLOOKUP을 추가 할 수 있습니다.

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

6 자리 코드를 사용하면 통합 문서를 다시 계산할 때마다 변경됩니다. 그러나 새 테이블을 복사 한 다음 특별 코드를 붙여 넣어 코드를 영구적으로 수정하면됩니다.

관련 문제