부품 번호 생성기

부품 번호 생성기

학교에서 대규모 프로젝트를 위한 부품 번호 생성기를 만들려고 합니다. =RANDBETWEEN(0,999999)부품 번호의 일부를 생성하는 기능을 사용하는 기능이 필요합니다 . 문제는 =RANDBETWEEN(0,999999). 셀을 참조하면 모든 부품 번호가 동일한 난수로 끝나게 됩니다. 이전 난수를 제자리에 저장하지만 =RANDBETWEEN(0,999999)다음 부분에 대한 새 숫자를 생성하기 위해 업데이트하는 기능을 유지하는 기능이 필요합니다. 나는 이 작업을 수행하는 방법을 찾기 위해 2일 동안 검색해 왔습니다. 누군가가 도울 수 있기를 바랍니다. 저는 VBA에 대한 경험이 없으며 팀의 모든 사용자가 사용할 수 있도록 이 기능을 함수로 유지하고 싶습니다.

답변1

대답이 아닙니다.

RAND(), RANDBETWEEN() 및 모든 유사한 함수는 워크시트의 각 재계산에 대해 새 숫자를 생성합니다.

F9 또는 SHIFT+CTRL+F9(LibreOffice에서)를 누르면 문제가 표시되는 재계산이 시작됩니다.

생성된 숫자가 고유하다는 보장도 없습니다.


다음은 수동으로 시작하거나 키보드로 시작한 매크로에서 특정 셀을 앞에 0이 있는 6자리 난수로 설정하는 시작점이 될 수 있는 함수입니다.

테스트되지 않음(Excel을 사용할 수 없으며 적어도 한두 개의 오류가 있을 수 있음)

함수 rndNum(셀)
  rndNum=WorksheetFunction.RANDBETWEEN(0,999999)
  셀<>""이면
    Range(cell).Value="'" & WorksheetFunction.TEXT(rndNum,"000000")
  종료하면
함수 종료

답변2

EVAL예를 들어 명명된 관리자에서 명명된 함수를 만들 수 있습니다 .

=LAMBDA(x,EVALUATE(x))

이제 다음을 통해 워크시트에서 이를 호출할 수 있습니다.

=EVAL("RANDBETWEEN(0,999999)")

이렇게 하면 정확한 셀에 해당 수식을 다시 적용할 때만 변경되는 임의의 숫자가 생성됩니다.

이렇게 하면 저장 시 통합 문서가 xlsm으로 실행됩니다. 그렇지 않으면 명명된 함수가 손실됩니다(임의의 숫자는 그대로 유지됩니다).

관련 정보