有没有办法反转 table 来更改列 headers?
Is there a way to inverse a table to change the column headers?
我的 table 的第一列中有一个姓名列表,第二列是我列出了该人员受过培训的所有功能的地方。有没有办法创建一个新的 table 链接到这个不断变化的 table(随着越来越多的人接受培训),随着他们接受培训,不断在每个职能下增加人员?
第一个 table 很重要,但我也想在第二种方法中显示相同的信息,而不必两次编辑文件。
更详细地说,这是我第一个 table 上的 2 行示例:
Tom Jones | Phone, social media, coffee
Lila Jones | Phone, coffee, voicemail
我想要一个单独的链接列或 table 来显示:
PHONE:汤姆·琼斯、莉拉·琼斯等等
你可能想要这样的东西:
Table 1
[ID] AUTOINCREMENT PRIMARY KEY
[Name] TEXT
Table 2
[ID] Integer PRIMARY KEY
[Functions] TEXT
然后在数据库工具 > 关系中创建从 Table 1 到 Table 2 的引用,选中所有 3 个引用完整性框。这是一种更规范化的方法。
这是一种方法:
Sub Tester()
Dim c As Range, dict, arr, v, l, shtOut As Worksheet
Set shtOut = Sheets("Sheet2")
shtOut.UsedRange.ClearContents
Set dict = CreateObject("scripting.dictionary")
Set c = Sheets("Sheet1").Range("A2") '<< first name in list
Do While Len(c.Value) > 0 '<< run until hit an empty name cell
l = Trim(c.Offset(0, 1).Value)
If Len(l) > 0 Then
arr = Split(l, ",")
For Each v In arr
v = UCase(Trim(v))
If dict.exists(v) Then
dict(v) = dict(v) & ", " & c.Value
Else
dict.Add v, c.Value
End If
Next v
End If
Set c = c.Offset(1, 0)
Loop
With shtOut.Range("A2") '<< output list starts here
.Resize(dict.Count, 1).Value = Application.Transpose(dict.keys)
.Offset(0, 1).Resize(dict.Count, 1).Value = _
Application.Transpose(dict.items)
End With
End Sub
我的 table 的第一列中有一个姓名列表,第二列是我列出了该人员受过培训的所有功能的地方。有没有办法创建一个新的 table 链接到这个不断变化的 table(随着越来越多的人接受培训),随着他们接受培训,不断在每个职能下增加人员?
第一个 table 很重要,但我也想在第二种方法中显示相同的信息,而不必两次编辑文件。
更详细地说,这是我第一个 table 上的 2 行示例:
Tom Jones | Phone, social media, coffee
Lila Jones | Phone, coffee, voicemail
我想要一个单独的链接列或 table 来显示: PHONE:汤姆·琼斯、莉拉·琼斯等等
你可能想要这样的东西:
Table 1
[ID] AUTOINCREMENT PRIMARY KEY
[Name] TEXT
Table 2
[ID] Integer PRIMARY KEY
[Functions] TEXT
然后在数据库工具 > 关系中创建从 Table 1 到 Table 2 的引用,选中所有 3 个引用完整性框。这是一种更规范化的方法。
这是一种方法:
Sub Tester()
Dim c As Range, dict, arr, v, l, shtOut As Worksheet
Set shtOut = Sheets("Sheet2")
shtOut.UsedRange.ClearContents
Set dict = CreateObject("scripting.dictionary")
Set c = Sheets("Sheet1").Range("A2") '<< first name in list
Do While Len(c.Value) > 0 '<< run until hit an empty name cell
l = Trim(c.Offset(0, 1).Value)
If Len(l) > 0 Then
arr = Split(l, ",")
For Each v In arr
v = UCase(Trim(v))
If dict.exists(v) Then
dict(v) = dict(v) & ", " & c.Value
Else
dict.Add v, c.Value
End If
Next v
End If
Set c = c.Offset(1, 0)
Loop
With shtOut.Range("A2") '<< output list starts here
.Resize(dict.Count, 1).Value = Application.Transpose(dict.keys)
.Offset(0, 1).Resize(dict.Count, 1).Value = _
Application.Transpose(dict.items)
End With
End Sub