如何在Excel中创build一个GUID?

我需要一个函数来添加一个GUID到Excel中的单元格。 我发现这个前面的问题在stackoverflow ,但它不工作。 它build议以下function:

=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公式计算器说这是无效的,但我似乎无法弄清楚为什么。 有任何想法吗?

我在v.2013 excel vbamacros代码中使用了以下函数

 Public Function GetGUID() As String GetGUID = Mid$(CreateObject("Scriptlet.TypeLib").GUID, 2, 36) End Function 
 =CONCATENATE(DEC2HEX(RANDBETWEEN(0;4294967295);8);"-";DEC2HEX(RANDBETWEEN(0;42949);4);"-";DEC2HEX(RANDBETWEEN(0;42949);4);"-";DEC2HEX(RANDBETWEEN(0;42949);4);"-";DEC2HEX(RANDBETWEEN(0;4294967295);8);DEC2HEX(RANDBETWEEN(0;42949);4)) 

至于现代版本的Excel,有逗号的语法,而不是分号。 我发布这个答案为了方便别人,所以他们不必更换string – 我们都懒惰… hrmp …人类,对不对?

= CONCATENATE(DEC2HEX(RANDBETWEEN(0,4294967295),8), “ – ”,DEC2HEX(RANDBETWEEN(0,42949),4), “ – ”,DEC2HEX(RANDBETWEEN(0,42949),4), “ – ” ,DEC2HEX(RANDBETWEEN(0,42949),4), “ – ”,DEC2HEX(RANDBETWEEN(0,4294967295),8),DEC2HEX(RANDBETWEEN(0,42949),4))

或者,如果你喜欢我不喜欢当一个guid尖叫和喊你,我们可以像这样下降。

= LOWER(CONCATENATE(DEC2HEX(RANDBETWEEN(0,4294967295),8), “ – ”,DEC2HEX(RANDBETWEEN(0,42949),4), “ – ”,DEC2HEX(RANDBETWEEN(0,42949),4),” – ”,DEC2HEX(RANDBETWEEN(0,42949),4), “ – ”,DEC2HEX(RANDBETWEEN(0,4294967295),8),DEC2HEX(RANDBETWEEN(0,42949),4)))

这完全不是问题。

我花了一点时间挖掘,但问题在于复制和粘贴。 尝试复制这个: RANDBETWEEN(0,6553‌​5)string,贴在您的原始问题,并将其粘贴到一个hex编辑器,然后你会看到65535实际上有两个空字符:

 00000000 52 41 4E 44 42 45 54 57 45 45 4E 28 30 2C 36 35 RANDBETWEEN(0,65 00000010 35 33 00 00 35 29 53‌..​5) 

= LOWER(CONCATENATE(DEC2HEX(RANDBETWEEN(0,功率(16,8)),8), “ – ”,DEC2HEX(RANDBETWEEN(0,功率(16,4)),4), “ – ”, “4” ,DEC2HEX(RANDBETWEEN(0,功率(16,3)),3), “ – ”,DEC2HEX(RANDBETWEEN(8,11)),DEC2HEX(RANDBETWEEN(0,功率(16,3)),3),” – ”,DEC2HEX(RANDBETWEEN(0,功率(16,8)),8),DEC2HEX(RANDBETWEEN(0,功率(16,4)),4)))

取自git @mobilitymaster

对我来说这是正确的,在Excel西class牙语

 =CONCATENAR( DEC.A.HEX(ALEATORIO.ENTRE(0,4294967295),8),"-", DEC.A.HEX(ALEATORIO.ENTRE(0,65535),4),"-", DEC.A.HEX(ALEATORIO.ENTRE(16384,20479),4),"-", DEC.A.HEX(ALEATORIO.ENTRE(32768,49151),4),"-", DEC.A.HEX(ALEATORIO.ENTRE(0,65535),4), DEC.A.HEX(ALEATORIO.ENTRE(0,4294967295),8) ) 

法语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,但是这对我目前的需求来说非常合适。

德国Excel的公式:

 =KLEIN(VERKETTEN(DEZINHEX(ZUFALLSBEREICH(0;POTENZ(16;8));8);"-";DEZINHEX(ZUFALLSBEREICH(0;POTENZ(16;4));4);"-";"4";DEZINHEX(ZUFALLSBEREICH(0;POTENZ(16;3));3);"-";DEZINHEX(ZUFALLSBEREICH(8;11));DEZINHEX(ZUFALLSBEREICH(0;POTENZ(16;3));3);"-";DEZINHEX(ZUFALLSBEREICH(0;POTENZ(16;8));8);DEZINHEX(ZUFALLSBEREICH(0;POTENZ(16;4)); 

荷兰Excel的公式:

 =KLEINE.LETTERS(TEKST.SAMENVOEGEN(DEC.N.HEX(ASELECTTUSSEN(0;MACHT(16;8));8);"-";DEC.N.HEX(ASELECTTUSSEN(0;MACHT(16;4));4);"-";"4";DEC.N.HEX(ASELECTTUSSEN(0;MACHT(16;3));3);"-";DEC.N.HEX(ASELECTTUSSEN(8;11));DEC.N.HEX(ASELECTTUSSEN(0;MACHT(16;3));3);"-";DEC.N.HEX(ASELECTTUSSEN(0;MACHT(16;8));8);DEC.N.HEX(ASELECTTUSSEN(0;MACHT(16;4));4)))