8

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

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

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

4

8 回答 8

7

简单的 - -

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

=SUM(Sheet2!B3:E3)

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

于 2012-12-21T16:41:00.760 回答
4

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

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

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

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

于 2016-09-26T02:31:08.013 回答
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
于 2012-12-21T17:15:46.313 回答
3

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

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

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

于 2016-02-16T13:14:47.400 回答
2

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

=Sheet2!A1

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

=Sheet2!A1&Sheet2!B1&Sheet2!C1&Sheet2!D1&Sheet2!E1&Sheet2!F1
于 2012-12-21T16:48:47.950 回答
2

它很简单,但不容易发现 ---去这里阅读更多。它来自微软官方网站

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

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

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

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

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

于 2016-12-30T05:33:38.123 回答
1

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

例如=Sheet1!$A$1:$F$1可以命名为:theNamedRange. 然后你的公式Sheet2!可以在你的公式中引用它,如下所示=SUM(theNamedRange)

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

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

于 2012-12-21T17:41:54.110 回答
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 的情况下手动执行此操作的步骤,它仅适用于一维数组并生成静态值而不是保留引用:

  1. 将单元格公式更新为类似=Sheet2!A1:A15
  2. F9
  3. 去掉花括号{ and }
  4. 放在CONCATENATE(公式的前面,=符号之后和公式)的末尾。
  5. enter
于 2012-12-21T17:51:33.720 回答