Excel-从表值创建项目列表

Excel-从表值创建项目列表,excel,excel-formula,Excel,Excel Formula,我有一个目前在我们施工现场使用的工具表,每个现场有多少个工具,如下所示: 我试图创建一个公式,列出站点上的工具,并跳过那些没有在工具旁边列出数量的工具。我试着创建一个最上面一行的下拉列表,它将决定公式向下看的是哪一列——在纸上看起来很简单,但我正在努力将其付诸实践 任何建议都将不胜感激。谢谢如果您希望使用VBA代码完成任务,请尝试: Sub test2() Dim i As Long, LastCol As Long, LastRow As Long, j As Long, AddC

我有一个目前在我们施工现场使用的工具表,每个现场有多少个工具,如下所示:

我试图创建一个公式,列出站点上的工具,并跳过那些没有在工具旁边列出数量的工具。我试着创建一个最上面一行的下拉列表,它将决定公式向下看的是哪一列——在纸上看起来很简单,但我正在努力将其付诸实践


任何建议都将不胜感激。谢谢

如果您希望使用VBA代码完成任务,请尝试:

Sub test2()

    Dim i As Long, LastCol As Long, LastRow As Long, j As Long, AddCol As Long, LastRowNew As Long
    Dim SiteName As String

    With ThisWorkbook.Worksheets("Sheet1")

        LastCol = .Cells(2, .Columns.Count).End(xlToLeft).Column
        LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row

        AddCol = 3

        For i = 3 To LastCol

            .Cells(1, LastCol + AddCol).Value = .Cells(1, i).Value

            For j = 2 To LastRow
                If .Cells(j, i).Value <> 0 Then
                    LastRowNew = .Cells(.Rows.Count, (LastCol + AddCol)).End(xlUp).Row
                    .Cells(LastRowNew + 1, LastCol + AddCol).Value = .Cells(j, i).Value
                    .Cells(LastRowNew + 1, (LastCol + AddCol) - 1).Value = .Cells(j, 2).Value
                End If

            Next j

            AddCol = AddCol + 3

        Next i

    End With

End Sub
子测试2()
变暗i为长,LastCol为长,LastRow为长,j为长,AddCol为长,LastRowNew为长
将SiteName设置为字符串
使用此工作簿。工作表(“表1”)
LastCol=.Cells(2,.Columns.Count).End(xlToLeft).Column
LastRow=.Cells(.Rows.Count,“A”).End(xlUp).Row
AddCol=3
对于i=3到LastCol
.Cells(1,LastCol+AddCol).Value=.Cells(1,i).Value
对于j=2到最后一行
如果.Cells(j,i).Value为0,则
LastRowNew=.Cells(.Rows.Count,(LastCol+AddCol)).End(xlUp).Row
.Cells(LastRowNew+1,LastCol+AddCol).Value=.Cells(j,i).Value
.Cells(LastRowNew+1,(LastCol+AddCol)-1)。值=.Cells(j,2)。值
如果结束
下一个j
AddCol=AddCol+3
接下来我
以
端接头
输出:


透视表可以做任何你想做的事情。@Eric.O你喜欢VBA代码吗?展示你尝试了什么以及在哪里遇到了麻烦。下拉列表和索引/匹配公式是一种方法。顺便说一句,你的屏幕截图对于正确的故障排除几乎是无用的。无法将其复制/粘贴到工作表中。对于那些可能帮助你的人来说,不得不手动输入是令人沮丧的。为了使数据有用,请编辑您的问题,将其作为文本发布,或者使用此功能,或者将工作簿(删除敏感信息)上载到某个公共网站,并在原始文档中发布链接question@MarkFitzgerald以前从未使用过,只是查看一下,效果非常好。谢谢