Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果某个单元格包含特定文本,Excel中是否有显示该单元格的方法?_Excel - Fatal编程技术网

如果某个单元格包含特定文本,Excel中是否有显示该单元格的方法?

如果某个单元格包含特定文本,Excel中是否有显示该单元格的方法?,excel,Excel,大家好,我有一个excel文档,其中列出了一些人和他们从事的活动,如: 编程游泳高尔夫的人 大卫是是不是 露西是不是是 Martin No Yes Yes您似乎非常热衷于VBA方法,如果是这样,请将以下代码复制并粘贴到工作簿中的新模块中 Option Explicit Public Sub TransformData() Dim rngCells As Range, lngCol As Long, lngRow As Long, strHeader As String Dim

大家好,我有一个excel文档,其中列出了一些人和他们从事的活动,如:

编程游泳高尔夫的人
大卫是是不是
露西是不是是

Martin No Yes Yes
您似乎非常热衷于VBA方法,如果是这样,请将以下代码复制并粘贴到工作簿中的新模块中

Option Explicit

Public Sub TransformData()
    Dim rngCells As Range, lngCol As Long, lngRow As Long, strHeader As String
    Dim lngWriteRow As Long, objDict As Scripting.Dictionary, arrNames() As String
    Dim objDestSheet As Worksheet, i As Long, x As Long

    Set objDestSheet = Worksheets("Transformed")
    Set objDict = New Scripting.Dictionary
    Set rngCells = Selection

    objDestSheet.Cells.Clear

    With rngCells
        For lngCol = 2 To .Columns.Count
            strHeader = .Cells(1, lngCol)

            ' Reset the array in case no names are found to have a yes next to them.
            ReDim Preserve arrNames(0)
            arrNames(0) = ""

            For lngRow = 2 To .Rows.Count
                If Left(UCase(.Cells(lngRow, lngCol)), 1) = "Y" Then
                    ReDim Preserve arrNames(UBound(arrNames) + 1)
                    arrNames(UBound(arrNames)) = .Cells(lngRow, 1)
                End If
            Next

            objDict.Add strHeader, arrNames
        Next
    End With

    With objDestSheet
        For i = 0 To objDict.Count - 1
            strHeader = objDict.Keys(i)
            arrNames = objDict.Items(i)

            strHeader = strHeader & " " & UBound(arrNames) & " people"

            lngWriteRow = lngWriteRow + 1
            .Cells(lngWriteRow, 1) = strHeader

            For x = 1 To UBound(arrNames)
                lngWriteRow = lngWriteRow + 1
                .Cells(lngWriteRow, 1) = arrNames(x)
            Next

            lngWriteRow = lngWriteRow + 1
        Next
    End With

    objDestSheet.Activate
End Sub
。。。然后在工作簿中创建一张名为“转换”的工作表

添加对以下库的引用

现在选择数据矩阵并运行宏


我希望它对您有用。

您似乎非常热衷于VBA方法,如果是这样,请将以下代码复制并粘贴到工作簿中的新模块中

Option Explicit

Public Sub TransformData()
    Dim rngCells As Range, lngCol As Long, lngRow As Long, strHeader As String
    Dim lngWriteRow As Long, objDict As Scripting.Dictionary, arrNames() As String
    Dim objDestSheet As Worksheet, i As Long, x As Long

    Set objDestSheet = Worksheets("Transformed")
    Set objDict = New Scripting.Dictionary
    Set rngCells = Selection

    objDestSheet.Cells.Clear

    With rngCells
        For lngCol = 2 To .Columns.Count
            strHeader = .Cells(1, lngCol)

            ' Reset the array in case no names are found to have a yes next to them.
            ReDim Preserve arrNames(0)
            arrNames(0) = ""

            For lngRow = 2 To .Rows.Count
                If Left(UCase(.Cells(lngRow, lngCol)), 1) = "Y" Then
                    ReDim Preserve arrNames(UBound(arrNames) + 1)
                    arrNames(UBound(arrNames)) = .Cells(lngRow, 1)
                End If
            Next

            objDict.Add strHeader, arrNames
        Next
    End With

    With objDestSheet
        For i = 0 To objDict.Count - 1
            strHeader = objDict.Keys(i)
            arrNames = objDict.Items(i)

            strHeader = strHeader & " " & UBound(arrNames) & " people"

            lngWriteRow = lngWriteRow + 1
            .Cells(lngWriteRow, 1) = strHeader

            For x = 1 To UBound(arrNames)
                lngWriteRow = lngWriteRow + 1
                .Cells(lngWriteRow, 1) = arrNames(x)
            Next

            lngWriteRow = lngWriteRow + 1
        Next
    End With

    objDestSheet.Activate
End Sub
。。。然后在工作簿中创建一张名为“转换”的工作表

添加对以下库的引用

现在选择数据矩阵并运行宏


我希望它对您有用。

您考虑过使用过滤器吗?你能解释一下名字之间不需要空格是什么意思吗?如果您能在问题中以excel单元格的形式显示所需的结果,则会更好。您可以附加屏幕截图。是的,筛选是一个很好的选择,但我正在寻找一种更简单的方法,因为如果我更改了值或添加了其他人,则需要手动更新筛选器。我想您正在寻找
透视表
。你试过了吗?是的,透视表可以帮上忙,但我想知道是否有办法通过函数实现这一点。你考虑过使用过滤器吗?你能解释一下名字之间不需要空格是什么意思吗?如果您能在问题中以excel单元格的形式显示所需的结果,则会更好。您可以附加屏幕截图。是的,筛选是一个很好的选择,但我正在寻找一种更简单的方法,因为如果我更改了值或添加了其他人,则需要手动更新筛选器。我想您正在寻找
透视表
。你们试过了吗?是的,透视表可以帮上忙,但我想知道是否有一种方法可以通过函数实现这一点