如何在另一个工作表上选择下面的单元格以填充工作表上的单元格旁边的单元格

时间:2011-12-30 21:15:57

标签: excel reference excel-2007 drag

我的任务是创建仓库的地图。

在数据中,我必须有模型,描述和位置。

我遇到的问题是,我使用第二张表中的数据来填充“地图”

即。 ='1'!F2 当我尝试拖动并使用它来填充整行时,它会变为='1'!g2。我希望它转到='1'!F3

我看到它正在做什么的逻辑...但我不希望它使用那个逻辑..我希望它使用它下面的下一个单元来填充该单元格。

2 个答案:

答案 0 :(得分:1)

最简单的事情可能是复制然后选择Paste Special>将“1”上的数据转置到新工作表。然后你可以拖动引用新工作表的公式,它们的行为符合预期。

编辑:根据您的原始问题,这将在您向下拖动时向右填充列的结果,反之亦然。这确实是你原来的问题所做的:

=INDEX(Sheet1!$F$2:$Z$8000,COLUMN(),ROW())

从A1开始并向任一方向拖动。要向左添加一个或多个标题行,只需向上或向左插入行或列(以保持公式声音)。

编辑:根据@ brettdj的建议,这是Transpose函数。我觉得很难合作,但它确实让人更清楚发生了什么:

在目标表单的F2:8000单元格中输入:

=TRANSPOSE(Sheet1!$F2:$Z8000)

然后,在选中所有这些单元格的情况下,在其中一个单元格中进入编辑模式并执行Ctrl Shft Enter进行数组输入。如果您必须调整源范围的大小,我相信您必须使用正确的范围重复这些步骤。我自己也是一名索引迷,所以会坚持下去。偏移是不稳定的,所以我会避免它。如果我有任何最后一次编辑错误,@ brettdj将帮助我们。

答案 1 :(得分:0)

由于您需要的是非本机行为,因此可能需要编写一个小型VBA宏来执行复制,并将其分配给键盘快捷方式。

这是一个简单的示例,将公式一个单元格复制到右侧,更新参考一个单元格(保留公式中的绝对/相对设置)。
它假设A1样式地址,仅当活动单元格包含引用单个单元格的公式时才起作用(如果不是则静默结束)。将无声地覆盖目标单元格中​​的任何内容。

Sub CopyToRight()
    Dim clFrom As Range
    Dim clAddr As Range
    Dim addr As String

    On Error GoTo EH
    Set clFrom = ActiveCell
    If clFrom.Formula Like "=*!*" Then
        Set clAddr = Range(Mid(clFrom.Formula, 2))
        If clAddr.Count = 1 Then
            If clFrom.Formula Like "=*!$*$*" Then
                addr = clAddr.Offset(1, 0).Address(True, True)
            ElseIf clFrom.Formula Like "=*!$**" Then
                addr = clAddr.Offset(1, 0).Address(False, True)
            ElseIf clFrom.Formula Like "=*!*$*" Then
                addr = clAddr.Offset(1, 0).Address(True, False)
            Else
                addr = clAddr.Offset(1, 0).Address(False, False)
            End If
            clFrom.Offset(0, 1).Formula = "='" & clAddr.Worksheet.Name & "'!" & addr 
        End If
    End If
    clFrom.Offset(0, 1).Select
EH:
End Sub