GUID=をExcelのセルに追加する関数が必要です。 stackoverflowに関するこの前の質問 が見つかりましたが、機能していません。次の関数が推奨されます。
=CONCATENATE(DEC2HEX(RANDBETWEEN(0,4294967295),8),"-",DEC2HEX(RANDBETWEEN(0,65535),4),"-
",DEC2HEX(RANDBETWEEN(16384,20479),4),"-",DEC2HEX(RANDBETWEEN(32768,49151),4),"-
",DEC2HEX(RANDBETWEEN(0,65535),4),DEC2HEX(RANDBETWEEN(0,4294967295),8))
私は連結メソッドを機能させることができなかったので、とにかく連結するために「&」図を使用して試してみました。それはうまくいくように見えましたが、2番目のDEX2HEXブロックで説明できないエラーが発生します:DEC2HEX(RANDBETWEEN(0,6553 5)、4)。 Excelの式エバリュエーターは、それが無効であると言いますが、その理由をまったく理解できないようです。何か案は?
V.2013 Excel vbaマクロコードで次の関数を使用しています
Public Function GetGUID() As String
GetGUID = Mid$(CreateObject("Scriptlet.TypeLib").GUID, 2, 36)
End Function
Excelの最新バージョンでは、セミコロンではなくコンマを使用した構文があります。私は他の人の便宜のためにこの回答を投稿しているので、彼らは文字列を置き換える必要はありません-私たちはすべて怠け者です... 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))
または、ガイドが叫んで叫ぶときに私が嫌いなら、このように小文字にすることができます。
= 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)))
=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,65535)
文字列を16進エディターに貼り付けてください。実際に65535に2つのヌル文字があります。
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,POWER(16,8)),8), "-",
DEC2HEX(RANDBETWEEN(0,POWER(16,4)),4),"-","4",
DEC2HEX(RANDBETWEEN(0,POWER(16,3)),3),"-",
DEC2HEX(RANDBETWEEN(8,11)),
DEC2HEX(RANDBETWEEN(0,POWER(16,3)),3),"-",
DEC2HEX(RANDBETWEEN(0,POWER(16,8)),8),
DEC2HEX(RANDBETWEEN(0,POWER(16,4)),4)
)
)
Git @mobilitymasterから取得。
私にとっては正しいです、Excelではスペイン語で
=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の式:
=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)
)
)
多くのオプションを試して、新しいバージョンのExcel(2016)でさまざまな問題に遭遇した後、私はMSからこの投稿に出会いました。 danwagner.coの投稿からのコードを使用して、少し強化しました
Private Declare PtrSafe Function CoCreateGuid Lib "ole32.dll" (Guid As GUID_TYPE) As LongPtr
Private Declare PtrSafe Function StringFromGUID2 Lib "ole32.dll" (Guid As GUID_TYPE, ByVal lpStrGuid As LongPtr, ByVal cbMax As Long) As LongPtr
Function CreateGuidString(Optional IncludeHyphens As Boolean = True, Optional IncludeBraces As Boolean = False)
Dim Guid As GUID_TYPE
Dim strGuid As String
Dim retValue As LongPtr
Const guidLength As Long = 39 'registry GUID format with null terminator {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
retValue = CoCreateGuid(Guid)
If retValue = 0 Then
strGuid = String$(guidLength, vbNullChar)
retValue = StringFromGUID2(Guid, StrPtr(strGuid), guidLength)
If retValue = guidLength Then
' valid GUID as a string
' remove them from the GUID
If Not IncludeHyphens Then
strGuid = Replace(strGuid, "-", vbNullString, Compare:=vbTextCompare)
End If
' If IncludeBraces is switched from the default False to True,
' leave those curly braces be!
If Not IncludeBraces Then
strGuid = Replace(strGuid, "{", vbNullString, Compare:=vbTextCompare)
strGuid = Replace(strGuid, "}", vbNullString, Compare:=vbTextCompare)
End If
CreateGuidString = strGuid
End If
End If
End Function
Public Sub TestCreateGUID()
Dim Guid As String
Guid = CreateGuidString() '<~ default
Debug.Print Guid
End Sub
ここにある元のMS投稿には追加のオプションがあります: https://answers.Microsoft.com/en-us/msoffice/forum/msoffice_Excel-msoffice_custom-mso_2010/guid-run-time-error-70- permission-denied/c9ee4076-98af-4032-bc87-40ad7aa7cb38
フランス語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を提供しませんが、これは私の現在のニーズに適しています。
ポーランド語版の式:
=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)
)
ドイツ語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));
)
)