我一直在试图找到一种方法绕过我在excel中使用单元格引用的问题。我试着用公式计算B7的单元格值,B7= B6/B8并希望在列(如C7、D 7、E7等)上拖动。但问题是因为B8:G8是一个合并的单元格,所以我不能在不同的列之间拖动公式。
如果有人能帮我解决如何更有效地做到这一点而不需要每次改变公式,那就真的很好了。
xdyibdwo1#
我有两个想法:a)在第8行下面使用一个辅助行(你可以隐藏它),并放入公式=IF(B8=0,A9,B8)。在公式中使用该行的值:
=IF(B8=0,A9,B8)
=B6/B9
B)编写一个微小的UDF并使用它
Public Function getCellValue(cell As Range) As Variant getCellValue = cell.MergeArea.Cells(1).Value End Function
现在你的公式看起来像
=B6/getCellValue(B8)
emeijp432#
使用XLOOKUP:
=B6/XLOOKUP(TRUE,$B$8:B8<>"",$B$8:B8,0,,-1)
这将向后查找具有值的第一个单元格。
我们也可以让它变得更好:
=B6:M6/SCAN(0,B8:M8,LAMBDA(a,b,IF(b<>"",b,a)))
67up9zun3#
在我的例子中,我将B7 = B6 * B8相乘,以便于检查结果。我将用函数OFFSET(...)替换B8为了创建公式,我首先创建了两个NAMED RANGE,a)STEPING与参考:=6,其中是合并单元的数目,以及b)START_COL,其中参考:=列(第9页!$B$6),(您将使用您的工作表名称而不是SHEET 9),这是数据的第一列,在我们的例子中它等于2,在单元格B7中我放了公式:
=B6*OFFSET($B$8;0;INT((COLUMN()-START_COL)/STEPING)*STEPING) or =B6*OFFSET($B$8,0,INT((COLUMN()-START_COL)/STEPING)*STEPING) (it depends on the region settings) Then you can drag the formula to the adjacent cells.
3条答案
按热度按时间xdyibdwo1#
我有两个想法:
a)在第8行下面使用一个辅助行(你可以隐藏它),并放入公式
=IF(B8=0,A9,B8)
。在公式中使用该行的值:B)编写一个微小的UDF并使用它
现在你的公式看起来像
emeijp432#
使用XLOOKUP:
这将向后查找具有值的第一个单元格。
我们也可以让它变得更好:
67up9zun3#
在我的例子中,我将B7 = B6 * B8相乘,以便于检查结果。我将用函数OFFSET(...)替换B8为了创建公式,我首先创建了两个NAMED RANGE,a)STEPING与参考:=6,其中是合并单元的数目,以及b)START_COL,其中参考:=列(第9页!$B$6),(您将使用您的工作表名称而不是SHEET 9),这是数据的第一列,在我们的例子中它等于2,在单元格B7中我放了公式: