알파벳에서 임의 길이의 임의의 문자열을 만드는 방법은 무엇입니까?


11

Excel의 알파벳에서 임의의 길이의 임의의 문자열을 만들고 싶습니다. 예를 들어 "jlskdjf", "kjlk", "kljsodif"등은 어떻게해야합니까?

답변:


14

기본

소문자 알파벳 (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 개의 임의의 문자를 얻습니다.


4

흠. VBA를 사용하면 기능을 수행하는 것이 매우 쉽습니다. 수식을 사용하면 조금 더 복잡합니다.

  • =CHAR(RANDBETWEEN(97,122))분명히 당신에게 하나의 편지를 제공합니다. 열 A를 열 A에 넣으십시오.
  • 그런 다음 다음 열에 =A1B1 셀을 넣으십시오 .
  • 넣어 =B1&A2B2에서, 그리고 B2를 입력 : B10를. (CONCATENATE는 성가신 범위를 허용하지 않습니다.)
  • 셀 C2에을 넣습니다 =OFFSET(B1,RANDBETWEEN(0,9),0).

배열 수식이나 다른 방법으로 더 쉬운 방법이있을 수 있습니다.


1
+1-방법이 있어야한다는 것을 알았습니다. 그러나 오프셋 대신 INDEX를 사용하고 싶습니다.INDEX(B1:B10,RANDBETWEEN(1,10))
Jook

2

단일 문자의 공식으로 이것을 사용할 수 있습니다

=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없이 수식 으로이 코드를 수행하는 솔루션이 있다면 그것에 대해 알고 싶습니다. :)


1

=LEFT(CHAR(RANDBETWEEN(97,122))&CHAR(RANDBETWEEN(97,122))&... repeat as many times as needed, RANDBETWEEN(minimum length, maximum length))


이것이 어떻게 작동하는지에 대한 더 많은 맥락은 실제로 답을 향상시킬 것입니다.
Burgi


0

(문자 전용 문자열을 원하면 아래의 추가 단락을 참조하십시오)

8에서 12 사이의 임의 길이의 대문자와 숫자로 구성된 임의의 문자열을 생성하십시오. =MID(BASE(RAND()*10^18,36,12),1,RAND()*4+8)

설명:

  1. 최소 길이 12 :의 임의의 숫자 문자열과 대문자를 생성합니다 BASE(RAND()*10^18,36,12). 트릭은 큰 난수를 생성 한 다음 그것을 문자열 36처럼 효과적으로 얻는 것을베이스 36으로 변환합니다.
  2. 문자열 길이 8에서 12 사이의 난수를 생성합니다. RAND()*4+8
  3. (1)에서와 같이 문자열의 문자를 1에서 (2)에서 생성 한 길이까지 가져옵니다.

공식에 사용되는 함수 (내부) :

  • 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)

여기서 각 숫자를 임의로 생성 된 대문자로 바꿉니다.

다른 답변에 제공된 솔루션과 관련하여 초기 솔루션에서 마음에 든 점은 이해하기 쉽고 간결하다는 것입니다. 두 대안은 이러한 특성을 잃습니다.


OP는 특히 알파벳 문자 만 요구했습니다. 이 문제를 해결하기 위해 답변을 편집 할 수 있습니까?
music2myear

@ music2myear가 완료되었지만이 방법으로 원본 버전의 간결성을 잃게됩니다.
CristianCantoro

간결함은 요구를 충족시키는 경우에만 유용합니다. 이 답변은 더 길지만 OP가 요청한 특정 질문에 실제로 답변하기 때문에 더 좋습니다.
music2myear

0

임의의 문자를 생성하려면

셀 B1에서

= CHAR (RANDBETWEEN (48,131)) (또는 원하는 문자 세트)

이것을 문자열의 열 수 = 최대 필수 문자로 채 웁니다.

임의의 길이를 생성하려면

셀 A1에서

= 왼쪽 (연쇄 (B1, C1, D1, E1, F1, G1, H1, I1, J1, K1), RANDBETWEEN (0,9))

임의의 문자열을 생성하려면

A1 열에 전체 테이블을 채우십시오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.