【问题标题】:How do I reference a cell range from one worksheet to another using excel formulas?如何使用 Excel 公式将单元格范围从一个工作表引用到另一个工作表?
【发布时间】:2012-12-21 16:36:00
【问题描述】:

我有一个包含 Sheet1 和 Sheet2 的工作表,我正在尝试引用从 Sheet2 到 Sheet1 的一系列单元格

我知道如何引用=Sheet2!A1 等工作表单元格,但我如何才能对A1:F1 等单元格范围执行相同操作?我试过=Sheet2!A1:F1,但它不喜欢语法。

如果可能,我需要为此使用 Excel 公式。

【问题讨论】:

    标签: excel


    【解决方案1】:

    简单——

    我创建了一个包含 4 个单元格的工作表 2 和一个包含一个带有公式的单元格的工作表 1:

    =SUM(Sheet2!B3:E3)
    

    请注意,正如您所说,为单个单元格分配一个范围内的值是没有意义的。将其发送到使用范围对其进行处理的公式。

    【讨论】:

    • 我实际上不是在做数学,我正在尝试从单元格范围内转储文本。
    【解决方案2】:

    你的公式很好。但是,输入后,您需要点击 Control + Shift + Enter 才能将其应用于值范围。具体来说:

    1. 选择目标工作表中的值范围。

    2. 在公式面板中输入您想要的公式,例如=Sheet2!A1:F1

    3. 点击 Control + Shift + Enter 将公式应用于范围。

    【讨论】:

      【解决方案3】:

      好的,我下载了一个自定义连接函数,然后引用了它的单元格

      代码

          Function concat(useThis As Range, Optional delim As String) As String
       ' this function will concatenate a range of cells and return one string
       ' useful when you have a rather large range of cells that you need to add up
       Dim retVal, dlm As String
       retVal = ""
       If delim = Null Then
       dlm = ""
       Else
       dlm = delim
       End If
       For Each cell In useThis
       if cstr(cell.value)<>"" and cstr(cell.value)<>" " then
       retVal = retVal & cstr(cell.Value) & dlm
       end if
       Next
       If dlm <> "" Then
       retVal = Left(retVal, Len(retVal) - Len(dlm))
       End If
       concat = retVal
       End Function
      

      【讨论】:

        【解决方案4】:

        如果您希望连接来自不同工作表的多个单元格,并且还想在每个单元格的内容之间添加分隔符,最直接的方法是:

        =CONCATENATE(Sheet1!A4, ", ", Sheet2!A5)
        

        这仅适用于有限数量的引用单元格,但如果您只有其中几个要映射的单元格,则速度很快。

        【讨论】:

          【解决方案5】:

          您可以输入一个相等的公式,然后复制它以引用整个范围(一个单元格进入一个单元格)

          =Sheet2!A1
          

          如果您需要连接结果,则需要更长的公式或用户定义的函数(即宏)。

          =Sheet2!A1&Sheet2!B1&Sheet2!C1&Sheet2!D1&Sheet2!E1&Sheet2!F1
          

          【讨论】:

          • 我需要的单元格引用大约有 200 个单元格长,这只是一行;(要完成所有这些工作需要大量的工作
          【解决方案6】:

          它非常简单但不容易发现 --- Go here to read more。来自微软官方网站

          第 1 步 - 单击源工作表的单元格或区域(包含要链接到的数据)

          第 2 步Ctrl+C,或转到“主页”选项卡,然后在“剪贴板”组中,单击“复制按钮图像”。

          第 3 步 Home 选项卡上的剪贴板组

          第 4 步Ctrl+V,或转到主页选项卡,在剪贴板组中,单击粘贴链接按钮。默认情况下,粘贴复制的数据时会出现“粘贴选项按钮”图像按钮。

          第 5 步 单击“粘贴选项”按钮,然后单击“粘贴链接”。

          【讨论】:

            【解决方案7】:

            我重写了 Ninja2k 提供的代码,因为我不喜欢它循环遍历单元格。为了将来参考,这里有一个使用数组的版本,它在很多范围内的工作速度明显更快,但结果相同:

            Function concat2(useThis As Range, Optional delim As String) As String
                Dim tempValues
                Dim tempString
                Dim numValues As Long
                Dim i As Long, j As Long
                tempValues = useThis
                numValues = UBound(tempValues) * UBound(tempValues, 2)
                ReDim values(1 To numValues)
                For i = UBound(tempValues) To LBound(tempValues) Step -1
                    For j = UBound(tempValues, 2) To LBound(tempValues, 2) Step -1
                        values(numValues) = tempValues(i, j)
                        numValues = numValues - 1
                    Next j
                Next i
                concat2 = Join(values, delim)
            End Function
            

            我不禁认为肯定有更好的方法......

            以下是在不使用 VBA 的情况下手动执行此操作的步骤,它仅适用于一维数组并生成静态值而不是保留引用:

            1. 将单元格公式更新为=Sheet2!A1:A15
            2. F9
            3. 删除花括号{ and }
            4. CONCATENATE( 放在公式前面= 符号之后,将) 放在公式末尾。
            5. 点击回车

            【讨论】:

            • 由于某种原因这不起作用,它应该起作用。如果我连接一系列单元格的结果,它只返回第一个单元格。奇数。
            【解决方案8】:

            如果这些工作表位于同一个工作簿中,一个简单的解决方案是命名范围,并让公式引用命名范围。要命名一个范围,请选择它,右键单击,然后为它提供一个具有工作簿范围的有意义的名称。

            例如,=Sheet1!$A$1:$F$1 可以命名为:theNamedRange。那么Sheet2! 上的公式可以像这样在公式中引用它:=SUM(theNamedRange)

            顺便说一句,从您的问题中不清楚您打算如何使用该范围。如果您将已有的内容放入公式中(例如,=SUM(Sheet1!A1:F1)),它将起作用,您只需将该范围参数插入公式中即可。 Excel 不会在没有相关公式的情况下解析范围引用,因为它不知道您想用它做什么。

            在这两种方法中,我发现命名范围约定更易于使用。

            【讨论】:

            • 适用于 =SUM 但不适用于 CONCATENATE,我正在使用字符串值,例如|The|Quick|Brown|Fox|Jumped|Over|The|Lazy|Dog
            猜你喜欢
            • 1970-01-01
            • 2016-09-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2022-07-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多