Excel公式可查找数字范围内的数字

时间:2019-05-23 07:45:15

标签: excel excel-formula

简而言之:

我有一个如下所示的excel表:

tabel

每个单元格包含一个数字范围。 我正在寻找一个可以在整个表格中搜索数字并指示其所属范围的列和行的函数。

因此,如果我搜索数字2346,它应具有以下功能:

功能(2346)>结果(C1,R2)


我在图书馆里有大量的照片档案(约300.000件)。 照片存储在盒子里,盒子在架子上。 每个盒子都有一定数量的照片库存数量。

我想创建一个如下所示的存款地图:

架子1-包含方框1、2、3等。 方框1-包含库存编号在1257-1321之间的照片 方框2-“-在2345-2522之间 方块3-“-在123523-123643之间

在excel表中进行翻译,如下所示:

第1栏将是“货架1”,其中包含带有图像的框: 第1行/第1行(即方框1)中的单元格包含数字范围:1257-1321 单元格第1列/第2行(框2),范围:2345-2522 单元格第1列/第3行(第3栏),范围:123523-123643

它们是不整齐的,因为它们输入了超过100年的集合,并且按照输入和主题进行排列。更不用说押金已被转移了几次。因此,当我寻找图像时,很难找到它。

但是,如果我有这个excel表,那么这张存款图,可能是我想输入我要查找的库存编号,比如说“ 2346”,并且在整个表中进行搜索的公式会指示我该项目(我要查找的编号位于第1列第2行的范围内,这意味着存放区中的第一个架子,第2列)。

实际上,这个概念非常简单,excel能够完成许多更困难的任务,但令我惊讶的是我找不到解决方法。我是摄影师和图书馆管理员,所以我在编程方面的经验几乎为零。

非常感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

虽然有点冗长,但并不难理解,我制作了一些示例数据,如下所示:

enter image description here

="C"&SUMPRODUCT(((VALUE(LEFT($A$1:$B$3,SEARCH("-",$A$1:$B$3)-1))<=D3)*(VALUE(RIGHT($A$1:$B$3,LEN($A$1:$B$3)-SEARCH("-",$A$1:$B$3)))>=D3))*COLUMN($A$1:$B$3))&", "&"R"&SUMPRODUCT(((VALUE(LEFT($A$1:$B$3,SEARCH("-",$A$1:$B$3)-1))<=D3)*(VALUE(RIGHT($A$1:$B$3,LEN($A$1:$B$3)-SEARCH("-",$A$1:$B$3)))>=D3))*ROW($A$1:$B$3))

您只需更改范围

答案 1 :(得分:0)

如果您按照下图所示设置工作表(工作表名称为“库”):

enter image description here

您可以尝试使用代码:

Option Explicit

Sub Painting()

    Dim LastRow As Long, i As Long, SearchValue As Long
    Dim arrData As Variant

    'Let s say that all data appears in sheet called Library
    With ThisWorkbook.Worksheets("Library")

        'Let s say that we are looking for the value in cell H1
        SearchValue = .Range("H1").Value

        'Find the Last row of column A sheet Library
        LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row

        'Create as array from Column A row 2 up to Column D row LastRow
        arrData = .Range(.Cells(2, 1), .Cells(LastRow, 4)).Value

        'Loop Array to find a match
        For i = LBound(arrData) To UBound(arrData)

            If arrData(i, 3) <= SearchValue And arrData(i, 4) >= SearchValue Then
                'Pop up with Shelf & Box name
                MsgBox "Search Value " & SearchValue & " included in:" & vbNewLine & "Shelf: " & arrData(i, 1) & vbNewLine & "Box: " & arrData(i, 2)
                'Select the line where the Search Value found
                .Range("A" & i + 1 & ":D" & i + 1).Select
                'Exit the loop
                Exit For
            End If

        Next i

    End With

End Sub

结果:

enter image description here