Excel宏,按行搜索返回下一个单元格的值

弗拉孔

我有这个宏已经在工作:

    Sub ListSheetsValuesAreOn()
  Dim X As Long, Data As Variant, Uniques As String, SH As Worksheet, NewSH As Worksheet
  With CreateObject("Scripting.Dictionary")
    For Each SH In Worksheets
      Data = Application.Transpose(SH.Range("C23", SH.Cells(Rows.Count, "C").End(xlUp)))
      For X = 1 To UBound(Data)
        If IsEmpty(.Item(Data(X))) Then
          .Item(Data(X)) = Data(X) & "|" & SH.Name
        ElseIf Data(X) = Split(.Item(Data(X)), "|")(0) And _
               Not .Item(Data(X)) Like "*|*" & SH.Name & "*" Then
          .Item(Data(X)) = .Item(Data(X)) & ", " & SH.Name
        End If
      Next
    Next
    Sheets.Add After:=Sheets(Sheets.Count)
    Set NewSH = ActiveSheet
    NewSH.Range("A1").Resize(.Count) = Application.Transpose(.Items)
  End With
  NewSH.Name = "Result Sheet"
  NewSH.Columns("A").TextToColumns , xlDelimited, , , 0, 0, 0, 0, 1, "|"
  NewSH.Columns("A:B").AutoFit
End Sub

该脚本的作用是:读取C列中的值,并搜索所有工作簿以查找这些值。返回值和找到它们的工作表。但是我想返回的不是C中的每个值,而是D列中的下一个值。示例:

Sheets 1...n                                   Expected output (new sheet)

  C     |    D                                   A        |       B

  item 1|description of item 1       description of item 1|1,4,6

  item 2|description of item 2       description of item 2|3,7,11,12

   ...  | ....                           ....             |   .....

  item m|description of item m       description of item m| 5,9,15,24
Aggelos SunDance Troulakis

请试试这个:

Sub Answer()

   Dim dict As Object
   Dim Data As Variant
   Dim ws As Worksheet
   Dim rng As Range



   Set dict = CreateObject("Scripting.Dictionary")
   With dict
      For Each SH In Worksheets
         Data = Application.Transpose(SH.Range("C23", SH.Cells(Rows.Count, "D").End(xlUp)))
         For X = LBound(Data, 2) To UBound(Data, 2)

            If IsEmpty(.Item(Data(1, X))) Then
               .Item(Data(1, X)) = Data(2, X) + "|" + SH.Name
               '.Item(Data(2, X)) = .Item(Data(1, X))
            ElseIf Split((dict.Item(Data(1, X))), "|")(0) = Split((Data(2, X)), "|")(0) Then
               .Item(Data(1, X)) = .Item(Data(1, X)) + ", " + SH.Name
            End If
         Next X
    Next
    Sheets.Add After:=Sheets(Sheets.Count)
    Set NewSH = ActiveSheet
    NewSH.Range("A1").Resize(.Count) = Application.Transpose(.Items)

  End With
  NewSH.Name = "Result Sheet"
  NewSH.Columns("A").TextToColumns , xlDelimited, , , 0, 0, 0, 0, 1, "|"
  NewSH.Columns("A:B").AutoFit
End Sub

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Excel:下一个单元格的值

Excel VBA 宏:自动填充日期到下一个(右)单元格

搜索下一个空单元格

Excel宏可从某些单元格复制值并将其粘贴到下一个空单元格中

Excel公式-如果在行中找到值,则返回下一个单元格的值

根据所选单元格从范围中返回下一个单元格值

返回其下一个包含值范围的所有单元格

Excel 公式 - 如果值大于...移动到下一个单元格

获取范围内的一个单元格的值,将其存储一个变量,然后存储下一个单元格,下一行(Excel)

搜索唯一值并调用 sub,如果没有转到下一个单元格

查找范围为零的单元格并删除下一个单元格宏

VBA:在列中搜索值,如果相邻单元格不为空,则找到与该值匹配的下一个单元格

在Excel中搜索列中另一个单元格的内容,并返回单元格值

如果值不存在,如何在 Excel 中获取下一个最近的单元格?

如何在excel列中获取下一个非空单元格的值

excel vba:如何将组合框值粘贴到下一个列单元格

Excel VBA - 在 VBA 中设置值时测试翻转到下一个空白单元格

按Tab键缩进列表将移至下一个表格单元格

如何在任何 G Sheets 单元格中激活一个宏,该宏将在下一个单元格中复制和粘贴值?

输入框值插入到右侧行中的下一个空单元格中

UITableViewController返回单元格中的下一个文本字段

Excel-防止单元格文本溢出到下一个(空)单元格

如果单元格已更新,则在下一个空白行中写入单元格值和时间戳

sql server query,每个单元格的值是下一个单元格-1

如果单元格包含“文本”,则拖动复制值,直到下一个包含“文本”的单元格

查找最后一行直到下一个突出显示的单元格

Python:提取到csv,其中“逗号”= Excel 中的下一个单元格

Excel查找下一个打开的单元格并输入今天的日期

Excel:在表格中查找匹配单元格并返回行中第一个单元格的值