如何使用excel公式将单元格范围从一个工作表引用到另一个工作表?

时间:2012-12-21 16:36:00

标签: excel

我有一张工作表,其中包含Sheet1和Sheet2,我试图引用从Sheet2到Sheet1的一系列单元格

我知道如何引用工作表单元格,例如=Sheet2!A1,但我如何对A1:F1我尝试=Sheet2!A1:F1的单元格区域执行相同操作,但它不喜欢语法。

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

8 个答案:

答案 0 :(得分:6)

简单---

我创建了一个包含4个单元格的Sheet 2和一个包含公式的单个单元格的Sheet 1:

=SUM(Sheet2!B3:E3)

注意,按照您的说法进行尝试,为单个单元格指定一个范围内的值是没有意义的。将其发送到使用范围对其执行某项操作的公式。

答案 1 :(得分: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

答案 2 :(得分:3)

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

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

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

答案 3 :(得分:2)

你可以使用相同的公式,然后复制它以便引用整个范围(一个单元格进入一个单元格)

=Sheet2!A1

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

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

答案 4 :(得分:2)

你拥有的公式很好。但是,输入后,您需要点击 Control + Shift + Enter ,以便将其应用于值范围。具体做法是:

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

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

  3. 点击控制 + Shift + 输入以将公式应用于范围。

答案 5 :(得分:1)

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

例如,=Sheet1!$A$1:$F$1可以命名为:theNamedRange。然后,Sheet2!上的公式可以在您的公式中引用它:=SUM(theNamedRange)

顺便提一下,您的问题并不清楚您打算如何使用该系列。如果你把你在公式中的内容(例如=SUM(Sheet1!A1:F1))放在它上面就可以了,你只需要在公式中插入那个范围参数。如果没有相关的公式,Excel不会解析范围引用,因为它不知道你想用它做什么。

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

答案 6 :(得分:1)

我重写了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的情况下手动执行此操作的步骤,该VBA仅适用于1d数组并生成静态值而不是保留引用:

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

答案 7 :(得分:1)

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

第1步 - 单击源表单的单元格或范围(包含要链接到的数据)

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

第3步 Home标签上的剪贴板组

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

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