首页 文章

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

提问于
浏览
8

我有一个工作表与Sheet1和Sheet2表单,我试图引用从Sheet2到Sheet1的一系列单元格

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

如果可能的话,我需要使用Excel公式 .

8 回答

  • 3

    简单---

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

    =SUM(Sheet2!B3:E3)
    

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

  • 2

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

    Code

    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
    
  • 6

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

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

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

  • 2

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

    =Sheet2!A1
    

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

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

    你拥有的公式很好 . 但是,输入后,您需要按Control Shift Enter以将其应用于值范围 . 特别:

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

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

    • 命中控制键输入以将公式应用于范围 .

  • 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数组并创建静态值而不是保留引用:

    • 更新单元格公式为 =Sheet2!A1:A15

    • 点击F9

    • 删除花括号 { and }

    • = 符号后面的公式前面放置 CONCATENATE( ,在公式末尾放置 ) .

    • 点击进入 .

  • 1

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

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

    顺便提一下,从您的问题中不清楚您打算如何使用该范围 . 如果你把你所拥有的东西放在一个公式中(例如, =SUM(Sheet1!A1:F1) )就可以了,你只需要在公式中插入那个范围参数 . 如果没有相关公式,Excel不会解析范围引用,因为它不知道您要对其执行什么操作 .

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

  • 3

    它很简单但不容易发现--- Go here to read more . 它来自官方的微软网站

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

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

    Step 3 Home 选项卡上的剪贴板组

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

    Step 5 单击“粘贴选项”按钮,然后单击“粘贴链接” .

相关问题