excel - 在 Excel 中翻译数字字符串
问题描述
所以基本上我在一列中有18位数字。此字符串表示给定人员在此表中的角色:
100000000000000000 -> Admin
000000000010000000 -> TL
000000000100000000 -> DEV
000000010000000000 -> Viewer
000000100000000000 -> TE
000000000000100000 -> TA
从字符串的长度来看,我认为它们是更多的角色,这些角色现在并不重要,但以后可能会更重要。问题是,可以有任何角色组合,例如:
000000010100000000 -> DEV, Viewer
000000100100000000 -> DEV, TE
100000010000100000 -> Admin, TA, Viewer
我的任务是将每个字符串翻译成角色。
因为我知道哪个位置代表哪个角色,所以我可以在字符串中搜索“1”并通过“1”的位置添加代表角色。这是我的问题,我不知道 VB 是否提供了搜索字符串以查找给定字符的多个外观并保存它们的相对位置的可能性。如果是这样,那么只需为每个角色添加“if then”即可。如果没有,我就像现在一样迷路了。
解决方案
也许这是一个起点:
Sub Test()
Dim Dict As Object: Set Dict = CreateObject("Scripting.Dictionary")
Dim str As String, Role As String
Dim arr1 As Variant, arr2 As Variant
arr1 = Array(1, 7, 8, 10, 11, 13)
arr2 = Array("Admin", "TE", "Viewer", "DEV", "TL", "TA")
str = "100000010000100000"
For x = 0 To 5
If Mid(str, arr1(x), 1) = 1 Then Dict(arr2(x)) = 1
Next
Role = Join(Dict.Keys, ", ")
End Sub
dict.RemoveAll
如果您打算在迭代中使用它,请不要忘记包括在内。
为了好玩,一个Evaluate
选项:
Sub Test()
Dim str As String, Role As String
Dim arr1 As Variant, arr2 As Variant
str = "100000010000100000"
arr1 = Array("Admin", "TE", "Viewer", "DEV", "TL", "TA")
arr2 = Evaluate("IF(MID(""" & str & """,{1,7,8,10,11,13},1)=""1"",1,0)")
With Application
Role = Join(Filter(.IfError(.Match(arr2, Array(0), 0), arr1), 1, False), ", ")
End With
End Sub
推荐阅读
- r - 编程时如何将 dplyr::group_by 与多个组一起使用
- python - 如何将数组中每一行的总和设置为1?
- r - 计算R中栅格图层上的点数
- ruby - 如何在单个示例中使用多个 RSpec 上下文?
- android-context - 如何使用 Robolectric 4.3.1 获取 Android 上下文
- swift - Swift 命令行读取超时
- r - JAGS 模型中的 extract(model, what = dic) 返回 NA 以进行惩罚
- javascript - JS中如何定位全局变量?
- firebase - Firebase 托管显示欢迎屏幕
- javascript - 如何调试因 net::ERR_FAILED 失败的请求