有没有办法反转表来更改列标题?

时间:2016-06-17 18:46:55

标签: excel vba validation conditional-formatting

我的表格的第一列中有一个名单列表,第二列是我列出了该人员所训练的所有函数的位置。有没有办法创建一个链接到此的新表格不断变换的桌子(随着越来越多的人接受训练)不断增加每个功能的人员,因为他们接受了培训吗?

第一个表很重要,但我也想在第二个方法中显示相同的信息,而不必编辑文件两次。

更详细地说,这是我第一张桌子上的2行示例:

Tom Jones  | Phone, social media, coffee
Lila Jones | Phone, coffee, voicemail 

我想要一个单独的链接列或表格向我显示: 电话:Tom Jones,Lila Jones等等

2 个答案:

答案 0 :(得分:0)

你可能想要这样的东西:

Table 1 
[ID] AUTOINCREMENT PRIMARY KEY
[Name] TEXT

Table 2
[ID] Integer PRIMARY KEY
[Functions] TEXT

然后在数据库工具>关系创建表1到表2的引用,检查所有3个参照完整性框。这是一种更规范化的方法。

答案 1 :(得分:0)

这是一种方法:

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