如何在Excel中创建GUID?

73

我需要一个函数来在Excel单元格中添加GUID。我发现这个Stack Overflow上的旧问题,但不起作用。它建议使用以下函数:

=CONCATENATE(DEC2HEX(RANDBETWEEN(0,4294967295),8),"-",DEC2HEX(RANDBETWEEN(0,6553‌​5),4),"-"
    ,DEC2HEX(RANDBETWEEN(16384,20479),4),"-",DEC2HEX(RANDBETWEEN(32768,49151‌​),4),"-"
    ,DEC2HEX(RANDBETWEEN(0,65535),4),DEC2HEX(RANDBETWEEN(0,4294967295),8))

我一直无法让连接方法正常工作,所以尝试使用“&”符号进行连接。这似乎有效,但是在第二个DEX2HEX块中,我收到了一个无法解释的错误:DEC2HEX(RANDBETWEEN(0,6553‌​5),4)。Excel公式评估器显示它无效,但我似乎完全找不出原因。有任何想法吗?


为什么不直接使用同一问题中提供的VBA代码呢? - LittleBobbyTables - Au Revoir
你使用的是哪个版本的Excel?据我所知,RANDBETWEEN函数只在2007年后的版本中引入。如果你使用的是2003版本,请将其替换为INT(RAND()*65535)函数。 - Peter Albert
@PeterL.:啊,我明白了。我太蠢了,下次应该更好地阅读问题... :-) - Peter Albert
1
@LittleBobbyTables 尝试过了,但好像也没起作用。该函数只是产生了一个 #!VALUE 错误。 - fraxture
1
我想我不必指出这并没有生成“真正”的GUID——因为它们没有版本号。有关详细信息,请参阅https://en.wikipedia.org/wiki/Globally_unique_identifier。 - Fowl
显示剩余6条评论
14个回答

0

法语版 Excel 的公式:

=CONCATENER(
DECHEX(ALEA.ENTRE.BORNES(0;4294967295);8);"-";
DECHEX(ALEA.ENTRE.BORNES(0;42949);4);"-";
DECHEX(ALEA.ENTRE.BORNES(0;42949);4);"-";
DECHEX(ALEA.ENTRE.BORNES(0;42949);4);"-";
DECHEX(ALEA.ENTRE.BORNES(0;4294967295);8);
DECHEX(ALEA.ENTRE.BORNES(0;42949);4))

正如Josh M所指出的那样,这并不提供符合标准的GUID,但对于我目前的需求来说,这很有效。


1
查看实际问题中的公式,或查看Masud、Fredder或nidkil的答案以获取符合要求的内容。 - Sir Kill A Lot

-1
波兰版的公式:
=ZŁĄCZ.TEKSTY(
    DZIES.NA.SZESN(LOS.ZAKR(0;4294967295);8);"-";
    DZIES.NA.SZESN(LOS.ZAKR(0;42949);4);"-";
    DZIES.NA.SZESN(LOS.ZAKR(0;42949);4);"-";
    DZIES.NA.SZESN(LOS.ZAKR(0;42949);4);"-";
    DZIES.NA.SZESN(LOS.ZAKR(0;4294967295);8);
    DZIES.NA.SZESN(LOS.ZAKR(0;42949);4)
)

1
请注意,这不会生成有效的版本4 GUID / UUID,请参见https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_4_(random)。问题中的公式完全正常(https://dev59.com/qGw05IYBdhLWcg3wykvn#12219726),或者查看Masud,Fredder或nidkil的答案。 - Sir Kill A Lot

-3

意大利语版本:

=CONCATENA(
    DECIMALE.HEX(CASUALE.TRA(0;4294967295);8);"-";
    DECIMALE.HEX(CASUALE.TRA(0;42949);4);"-";
    DECIMALE.HEX(CASUALE.TRA(0;42949);4);"-";
    DECIMALE.HEX(CASUALE.TRA(0;42949);4);"-";
    DECIMALE.HEX(CASUALE.TRA(0;4294967295);8);
    DECIMALE.HEX(CASUALE.TRA(0;42949);4))

2
请注意,这不会生成有效的版本4 GUID / UUID,请参见https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_4_(random)。问题中的公式完全正常(https://dev59.com/qGw05IYBdhLWcg3wykvn#12219726),或者查看Masud,Fredder或nidkil的答案。 - Sir Kill A Lot

-3

ESP:

=CONCATENAR(
    DEC.A.HEX(ALEATORIO.ENTRE(0;4294967295);8);"-"; 
    DEC.A.HEX(ALEATORIO.ENTRE(0;42949);4);"-"; 
    DEC.A.HEX(ALEATORIO.ENTRE(0;42949);4);"-"; 
    DEC.A.HEX(ALEATORIO.ENTRE(0;42949);4);"-"; 
    DEC.A.HEX(ALEATORIO.ENTRE(0;4294967295);8); 
    DEC.A.HEX(ALEATORIO.ENTRE(0;42949);4)
)

2
请注意,这不会生成有效的版本4 GUID / UUID,请参见https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_4_(random)。问题中的公式完全没问题(https://dev59.com/qGw05IYBdhLWcg3wykvn#12219726),或者可以查看Masud,Fredder或nidkil的答案。 - Sir Kill A Lot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接