我需要使用 Excel 来解决这个问题。
在col A
我有0
s 和s之间1
有不同数量的s。每次出现 a 时,我都想要在我的二进制列旁边的两列中给出的两个数字之间的差异。但是,我希望从前面所述的计算中得到结果。0
1
1
1
我会处理不同的软件,但是如何使用 Excel 来实现呢?
我需要使用 Excel 来解决这个问题。
在col A
我有0
s 和s之间1
有不同数量的s。每次出现 a 时,我都想要在我的二进制列旁边的两列中给出的两个数字之间的差异。但是,我希望从前面所述的计算中得到结果。0
1
1
1
我会处理不同的软件,但是如何使用 Excel 来实现呢?
=IF(A4=1,OFFSET(B4,MATCH(1,A5:A$1000,0),0)-OFFSET(C4,MATCH(1,A5:A$1000,0),),"")
并D4
复制下来以适应似乎有效。
编辑:
=(IF(A$=1, ,"")
如:IF(logical_test,value_if_true,value_if_false)其中 value if false 为(空白),表示为“”。
这是和值value_if_true
之间的差异,每个“位于”OFFSET 函数中,如=OFFSET(reference,rows,cols,height,width)。ColumnB
ColumnC
reference
s 是插入公式的行的相应列(即B4
和C4
),其中所需的值是“南”的可变数量。
MATCH,如 =MATCH(lookup_value,lookup_array, [match_type]) 是根据具体情况确定偏移量的范围。以相反的顺序,这里的参数是match_type
= 0
(要求完全匹配)并且lookup_array
与 ColumnA 一样多。最初选择为最多第 1000 行(按A$1000
),但可以根据需要进行扩展,但受相关 Excel 版本的行数限制。
第一个参数lookup_value
) 当然是1
因为这是包含要减去的值的行的标志。
如果 MATCH 函数中没有$
betweenA
和5
,则随着公式被向下复制,数组的大小会自动减小(顶部单元格行引用增加),因此会找到下一个实例(而不是一遍又一遍地找到相同的实例)。
使用 VBA,我首先将公式设置为在与“那些”相同的行中显示结果。(假设我为此使用了 D 列。)
= 如果(A1 = 1;B1 - C1;“”)
然后,在 VBA 窗口中,执行以下操作:
Dim i as integer
Dim Filled as Collection
Set Filled = new Colleciton 'this collection will stored filled lines
'store filled lines
for i = 2 to 1000 'use your table limit
if Sheet1.Cells(i, 4).Value <> "" then 'the 4 is for D column, i for the line
Filled.Add i
end if
next
'now fill the E column with displaced values
for i = 1 to Filled.Count - 1
Sheet1.Cells(Filled(i), 5).Value = Sheet1.Cells(Filled(i+1), 5).Value
next
'please note there's a missing line (the last), it's up to you to decide how to fill it
'sorry I cannot debug this code
我会将其与某些工作表事件或按钮相关联。