답변:
소문자 알파벳 (az)에서 임의의 길이 (1-8 자) 문자열을 생성한다고 가정합니다.
=LEFT( CHAR(RAND()*26+97) & CHAR(RAND()*26+97) &
CHAR(RAND()*26+97) & CHAR(RAND()*26+97) &
CHAR(RAND()*26+97) & CHAR(RAND()*26+97) &
CHAR(RAND()*26+97) & CHAR(RAND()*26+97),
RAND()*8+1)
각각 CHAR(...)
1 개의 무작위 소문자 알파벳을 생성합니다.
대문자 알파벳 (AZ) 대신 소문자를 사용하려면 대체 할 수 CHAR(RAND()*26+97)
와 함께 CHAR(RAND()*26+65)
. AZ의 ASCII 코드는 65-90이고 az의 ASCII 코드는 97-122입니다.
공식을 간단히 나타 내기 위해 Analysis Toolpak 을 사용 RANDBETWEEN()
하여 를 대체 할 수 있습니다 .RAND()*xx+yy
특정 문자에서 임의 길이 (1-8 자) 문자열을 생성한다고 가정하십시오.
A1 셀에 원하는 문자를 입력 할 수 있습니다 ( 예 :
abcdefghijklmnopqrstuvwxyz1234567890!@#$%^&*()
그때,
=LEFT( MID($A$1,RAND()*LEN($A$1)+1,1) & MID($A$1,RAND()*LEN($A$1)+1,1) &
MID($A$1,RAND()*LEN($A$1)+1,1) & MID($A$1,RAND()*LEN($A$1)+1,1) &
MID($A$1,RAND()*LEN($A$1)+1,1) & MID($A$1,RAND()*LEN($A$1)+1,1) &
MID($A$1,RAND()*LEN($A$1)+1,1) & MID($A$1,RAND()*LEN($A$1)+1,1),
RAND()*8+1)
각각 MID(...)
은 A1에서 1 개의 임의의 문자를 얻습니다.
흠. VBA를 사용하면 기능을 수행하는 것이 매우 쉽습니다. 수식을 사용하면 조금 더 복잡합니다.
=CHAR(RANDBETWEEN(97,122))
분명히 당신에게 하나의 편지를 제공합니다. 열 A를 열 A에 넣으십시오.=A1
B1 셀을 넣으십시오 .=B1&A2
B2에서, 그리고 B2를 입력 : B10를. (CONCATENATE는 성가신 범위를 허용하지 않습니다.)=OFFSET(B1,RANDBETWEEN(0,9),0)
.배열 수식이나 다른 방법으로 더 쉬운 방법이있을 수 있습니다.
단일 문자의 공식으로 이것을 사용할 수 있습니다
=CHAR(RANDBETWEEN(97,122))
원하는 rand 범위를 선택하려면 ACSII-Table을 살펴보십시오.
그러나 임의 길이는 임의 길이가 아니라 무작위 문자로 구성하기가 까다 롭습니다. 그렇지 않으면 REPT 함수 만 RAND 함수 및 위 공식과 결합 할 수 있습니다.
그러나 설명 된 결과에 맞게이 코드를 사용합니다.
'Put this into a VBA-Module, to be accessable as a worksheet function
Public Function RandomString() As String
Dim i As Long
Dim lngEnd As Long
Dim strResult As String
With Application.WorksheetFunction
lngEnd = .RandBetween(1, 20) 'String length 1-20 characters
strResult = ""
'create a random string of a random length between 1 and 20
For i = 1 To lngEnd
strResult = strResult & Chr(.RandBetween(97, 122))
Next i
End With
Debug.Print strResult
RandomString = strResult 'return the random string
End Function
VBA없이 수식 으로이 코드를 수행하는 솔루션이 있다면 그것에 대해 알고 싶습니다. :)
=LEFT(CHAR(RANDBETWEEN(97,122))&CHAR(RANDBETWEEN(97,122))&... repeat as many times as needed, RANDBETWEEN(minimum length, maximum length))
이 수식에는 "abc ... ABC ... 012"가있는 셀이 필요하지 않습니다.
[a-zA-Z0-9]의 임의 1 자
=CHAR(CHOOSE(RANDBETWEEN(1,3),RANDBETWEEN(48,57),RANDBETWEEN(65,90),RANDBETWEEN(97,122)))
더 많은 문자가 필요한 경우 CHAR (...)를 복사하고 &로 구분하십시오.
이 솔루션은 Oaktree http://www.mrexcel.com/forum/excel-questions/332116-generate-random-alphanumeric-code.html 에서 가져온 것입니다 .
(문자 전용 문자열을 원하면 아래의 추가 단락을 참조하십시오)
8에서 12 사이의 임의 길이의 대문자와 숫자로 구성된 임의의 문자열을 생성하십시오.
=MID(BASE(RAND()*10^18,36,12),1,RAND()*4+8)
설명:
BASE(RAND()*10^18,36,12)
. 트릭은 큰 난수를 생성 한 다음 그것을 문자열 36처럼 효과적으로 얻는 것을베이스 36으로 변환합니다.RAND()*4+8
공식에 사용되는 함수 (내부) :
RAND()
0과 1 사이의 난수를 반환합니다.BASE(Number; Radix; [MinimumLength])
양의 정수를 지정된 밑수로 번호 매기기 시스템의 텍스트로 변환합니다. 숫자 0-9와 문자 AZ가 사용됩니다.MID("Text"; Start; Number)
텍스트의 텍스트 문자열을 반환합니다. 매개 변수는 시작 위치와 문자 수를 지정합니다.숫자 10^18
는 생성 된 문자열에 후행 또는 선행 0이없는 매직 번호입니다. 더 긴 문자열을 만들어야하는 경우 그러한 문자열을 두 개 이상 만들어 연결하는 것이 좋습니다.
참고 사항 :이 솔루션은 LibreOffice Calc 5에서 테스트되었지만 기능은 설명서와 동일하기 때문에 Microsoft Excel에서도 작동해야합니다 (충분한 평판이 없기 때문에 연결할 수 없습니다).
의견에서 OP가 특별히 문자 만 요구했다는 의견이 지적 되었으므로이 대체 버전을 다음과 같이 던질 것입니다.
=MID(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(BASE(RAND()*10^22,36,16),"0",""),"1",""),"2",""),"3",""),"4",""),"5",""),"6",""),"7",""),"8",""),"9",""),1,RAND()*4+8)
여기서 모든 자리수를 빈 문자열로 바꿉니다. 이런 식으로 당신은 (대문자) 문자 만 얻을 수 있습니다. 초기 임의 문자열에 많은 숫자가있을 가능성을 계산하기 위해 마법의 숫자를 조정했습니다. 원칙적으로 예상보다 짧은 문자열을 얻을 수 있다는 의미에서 안전 장치는 아닙니다.
최소 길이를 확인 해야하는 경우이 다른 (더 복잡한) 대안이 있습니다.
=MID(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(BASE(RAND()*10^22,36,16),"0",CHAR(RANDBETWEEN(65,90))),"1",CHAR(RANDBETWEEN(65,90))),"2",CHAR(RANDBETWEEN(65,90))),"3",CHAR(RANDBETWEEN(65,90))),"4",CHAR(RANDBETWEEN(65,90))),"5",CHAR(RANDBETWEEN(65,90))),"6",CHAR(RANDBETWEEN(65,90))),"7",CHAR(RANDBETWEEN(65,90))),"8",CHAR(RANDBETWEEN(65,90))),"9",CHAR(RANDBETWEEN(65,90))),1,RAND()*4+8)
여기서 각 숫자를 임의로 생성 된 대문자로 바꿉니다.
다른 답변에 제공된 솔루션과 관련하여 초기 솔루션에서 마음에 든 점은 이해하기 쉽고 간결하다는 것입니다. 두 대안은 이러한 특성을 잃습니다.
INDEX(B1:B10,RANDBETWEEN(1,10))