在Microsoft Excel中生成GUID的5种方法
您需要在 Excel 中生成 GUID 吗?
全局唯一标识符 代表 全球唯一标识符但它也可能被称为 唯一唯一标识符 代表 通用唯一标识符。这些都是同样的事情。
GUID 是一个由数字和字母组成的 32 个字符的代码,通常用于识别数据库中的项目。
GUID 是随机生成的,但随机生成的 GUID 重复的概率非常小,因此您可以确保它是唯一的。这意味着不需要中央注册表来确保其唯一性
这篇文章将向您展示如何在 Excel 中生成随机 GUID。获取本文中使用的文件副本并继续操作!
推荐:在Microsoft Excel中生成条形码的3种方法
使用 RANDBETWEEN 函数生成 GUID
GUID 通常长度为 128 位,格式如下: X‘s 是十六进制数字。
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
此格式将 32 个十六进制数字组织成 8-4-4-4-12 个字符的组。破折号纯粹是为了便于阅读。
在 GUID 中生成这些随机十六进制数字的常用方法是生成随机十进制数并将其转换为十六进制。
= RANDBETWEEN ( min, max )
这可以通过使用 介于 Excel 中的函数。此函数允许您生成给定上限之间的随机整数 min
及以下 max
边界。
= DEC2HEX ( number, [digits] )
这 十进制2十六进制 函数将转换任何小数 number
转换为其等效的十六进制表示。它还允许您指定 digits
返回。这样,您始终可以返回 8 个或 4 个字符长度的十六进制数。
= DEC2HEX ( RANDBETWEEN ( 0, 4294967295 ), 8 )
随机序列 8 可以通过生成介于 0 和 4,294,967,295 并使用 十进制2十六进制 Excel 中的函数。
= DEC2HEX ( RANDBETWEEN ( 0, 65535), 4 )
类似地,可以通过在以下之间生成随机数来生成 4 个十六进制数字的随机序列: 0 和 65535 并将其转换为十六进制。
然后,您可以通过组合 8 和 4 序列来生成 12 个十六进制数字的序列。
=LOWER(CONCATENATE(
DEC2HEX(RANDBETWEEN(0,4294967295),8),"-",
DEC2HEX(RANDBETWEEN(0,65535),4),"-",
DEC2HEX(RANDBETWEEN(0,65535),4),"-",
DEC2HEX(RANDBETWEEN(0,65535),4),"-",
DEC2HEX(RANDBETWEEN(0,4294967295),8),
DEC2HEX(RANDBETWEEN(0,65535),4)
))
上述公式将生成包括连接破折号字符在内的完整 GUID 值。
这 连接 函数将所有十六进制值与破折号一起连接在一起以创建完整的 GUID。
这 降低 函数也可以在公式中使用,以创建返回小写字母而非大写字母的 GUID。
📝 笔记: 这 介于 函数是可变的,因此每次编辑电子表格时都会重新计算。您可以强制重新计算并生成新的 GUID,方法是按 F9 钥匙。
推荐:如何在PowerPoint中创建设计预设或主题
使用 WEBSERVICE 函数生成 GUID
网络服务 是一个非常有趣的函数。它允许您调用一个网址并从该地址返回数据。
与以下服务结合使用时 uuid工具, 这 网络服务 该函数将使您能够创建自己的 GUID。
https://www.uuidtools.com/api/generate/v4/count/5
这 uuid工具 在线 GUID 生成器是一个免费的 API,您可以使用它来生成 GUID 和 UUID。上面的 URL 将返回 5 个生成的 GUID 的列表。您可以将 URL 中的 5 更改为您喜欢的任何数字。
= WEBSERVICE ( "https://www.uuidtools.com/api/generate/v4/count/5" )
上述公式将返回 GUID 列表。
["736f07e7-12e1-4d9f-aa83-762916761eba","c516d5f6-f816-448c-a2f7-dcb308c02393","04ce3d1b-d4f0-4c41-88cd-b90f7deacde4","960445e7-4e04-4bc1-a220-a7e6eb45fde0","d34c0e8b-11fa-4410-a673-2412aea39569"]
该函数返回方括号中的单个文本字符串,它是 GUID 的逗号分隔列表。
这个以逗号分隔的 GUID 列表可以很容易地使用以下方式解析为单独的单元格: 文本分割 功能。
= TEXTSPLIT ( C2, , {""",""","[","]",""""}, TRUE )
上述公式将根据这些字符集拆分逗号分隔的 GUID 列表 ","
, [
, ]
, "
以该顺序。
文本分割 将这些 GUID 拆分成行,然后删除所有空白单元格,仅留下每个单元格中的 GUID。
使用 Power Query 生成 GUID
Power Query 正在加载和转换您的数据。它还有一种相当简单的方法来创建 GUID。
Power Query 公式语言包括 文本.NewGuid 函数将为您生成一个 GUID。
这意味着当您导入或转换数据集时,您可以添加一列 GUID。
您可以通过以下步骤将数据导入 Power Query。
- 选择您的桌子。
- 前往 数据 标签。
- 点击 来自表/范围 命令。
现在数据集位于 Power Query 编辑器中。转到 添加列 标签并按下 自定义列 按钮 一般的 部分。
这将打开 自定义列 公式编辑器。
#table({"GUID"},{{Text.NewGuid()}})[GUID]{0}
为新列命名,并将上述公式输入到 自定义列公式 输入,然后按 好的 按钮。
这部分 #table({"GUID"},{{Text.NewGuid()}})
创建一个只有一列的表,名为 全局唯一标识符 以及包含 GUID 值的单行。
然后 [GUID]{0}
将获取 GUID 列中的第零行。换句话说,它从创建的表中获取 GUID 值。
⚠️ 警告:不幸的是,你不能只使用公式 =Text.NewGuid()
,这将导致每行在加载到 Excel 时具有相同的 GUID。创建表 #table()
该公式似乎有效,并导致各行产生不同的 GUID。
这会在数据预览中创建一个新列,每行都有不同的 GUID 值。
然后可以将其重新加载到 Excel 中。转到 家 Power Query 编辑器的选项卡,然后按 关闭并加载 按钮。
推荐:在Debian 12 Bookworm Linux上安装Opera浏览器
使用 Power Automate 生成 GUID
Power Automate 能够连接到保存在 SharePoint 或 OneDrive 中的 Excel 电子表格。这意味着您可以自动化涉及 Excel 和其他云应用程序的流程。
Power Automate 带有自己的工作流表达语言,其中包含 指南 功能。
这可用于创建 GUID 并将其添加到 Excel 表中。
您通常不希望 GUID 发生变化,因此这种方法非常好,因为它会将静态值添加到 Excel。而之前的方法会生成在刷新 Excel 时会发生变化的 GUID。
按照这些步骤,您可以轻松地创建一个简单的流程,将 GUID 添加到 Excel 表中。
- 去 https://make.powerautomate.com/ 并使用按钮触发器创建一个新的流程。
- 添加 在表中添加一行 动作到流程。
- 从中选择要添加 GUID 的 Excel 文件和表 地点, 文档库, 文件, 和 桌子 下拉菜单。
当您选择 桌子,表中的列的列表将出现在操作中。
- 单击该列以添加 GUID。
- 点击 表达 弹出窗口中的选项卡。
- 进入
guid()
在公式栏中。 - 点击 更新 按钮。
- 节省 流。
现在,当您运行流程时,它会向表中添加一个 GUID!
使用 VBA 生成 GUID
您可能不想将电子表格保存在云中以使用 Power Automate,但仍希望有一种方法来创建静态 GUID。
这时 VBA 可能会有用。
您可以创建一个宏来在工作簿中创建并输入 GUID,而无需外部工具。
前往 开发人员 选项卡并点击 Visual Basic 命令打开 Visual Basic 编辑器。或者,您也可以按 Alt + F11 打开编辑器。
在 Visual Basic 编辑器中,转到 插入 菜单并选择 模块 选项。您可以在此处添加宏代码。
代码依赖于两个函数和一个过程。您需要将它们全部复制并粘贴到模块中。
Function randBetween(ByVal min As Long, max As Long)
randBetween = Int(Rnd() * (max - min + 1)) + min
End Function
此函数允许您生成最小值和最大值之间的随机数。
Function GUID()
Dim guid1, guid2, guid3, guid4, guid5, guid6, guid7, guid8 As String
guid1 = LCase(Hex(randBetween(0, 65535)))
guid2 = LCase(Hex(randBetween(0, 65535)))
guid3 = LCase(Hex(randBetween(0, 65535)))
guid4 = LCase(Hex(randBetween(0, 65535)))
guid5 = LCase(Hex(randBetween(0, 65535)))
guid6 = LCase(Hex(randBetween(0, 65535)))
guid7 = LCase(Hex(randBetween(0, 65535)))
guid8 = LCase(Hex(randBetween(0, 65535)))
guid1 = Right(String(4, "0") & guid1, 4)
guid2 = Right(String(4, "0") & guid2, 4)
guid3 = Right(String(4, "0") & guid3, 4)
guid4 = Right(String(4, "0") & guid4, 4)
guid5 = Right(String(4, "0") & guid5, 4)
guid6 = Right(String(4, "0") & guid6, 4)
guid7 = Right(String(4, "0") & guid7, 4)
guid8 = Right(String(4, "0") & guid8, 4)
GUID = guid1 & guid2 & "-" & guid3 & "-" & guid4 & "-" & guid5 & "-" & guid6 & guid7 & guid8
End Function
上述函数允许您创建 GUID,它依赖于前面的 randBetween()
VBA 函数生成十六进制值。
Sub GenerateGUID()
Dim rng As Range
For Each rng In Selection
rng.Value = GUID()
Next rng
End Sub
然后,子程序循环遍历选定范围中的每个单元格,并添加从 GUID()
VBA 函数。
您需要做的就是选择要添加 GUID 值的单元格范围,然后运行 生成GUID 宏。
使用 Office 脚本生成 GUID
在范围内添加静态 GUID 的另一种方法是使用 Office 脚本。
前往 自动化 选项卡并点击 新脚本 命令。
function main(workbook: ExcelScript.Workbook) {
//Create a range object from selected range
let selectedRange = workbook.getSelectedRange();
//Get dimensions of selected range
let rowHeight = selectedRange.getRowCount();
let colWidth = selectedRange.getColumnCount();
//Loop through each item in the selected range
for (let i = 0; i
这将打开 代码编辑器 您可以粘贴上面的代码。
此代码由三个函数组成。
randBetween()
是一个允许您生成最小值和最大值之间的随机数的函数。guid()
使用randBetween()
函数以与第一种方法类似的方式生成 GUID, 介于 Excel 函数。.toString(16)
会将随机数转换为其十六进制值。.padStart(8, '0')
确保十六进制值为 8 个字符。
这 main()
然后循环遍历选定的范围,并使用 guid()
功能。
您需要做的就是选择想要添加 GUID 值的单元格范围,然后运行脚本。
结论
GUID 非常常用于唯一标识数据库中的项目。在 Excel 中处理数据时,有多种方法可以在 Excel 中生成 GUID。
如果你需要快速生成 GUID,并且不介意使用外部服务,那么 网络服务 功能可能是最好的选择。
对于那些喜欢完全在 介于 或者 Power Query 方法将是可行的方法。但是,这些方法将创建易变的 GUID,当电子表格刷新时,这些 GUID 会发生变化。
使用 电力自动化, 虚拟专用网络, 或者 办公室脚本 所有这些都提供了一种在 Excel 中生成静态且不会不断变化 GUID 的方法。
您是否需要在 Excel 中创建 GUID?您是如何创建的?请在下面的评论中告诉我