这是一个要求,我使用Excel来解决这个问题。动态插入功能
在col A
我有0
S和1
s的的1
S之间的0
小号各种数量。每次出现1
时,我都希望在二进制列旁边的两列中给出两个数字之间的差异。不过,我希望从前面的1
旁边的计算中获得结果。
我应付不同的软件,但我如何使用Excel来实现这一目标?
这是一个要求,我使用Excel来解决这个问题。动态插入功能
在col A
我有0
S和1
s的的1
S之间的0
小号各种数量。每次出现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_true
是如=OFFSET(reference,rows,cols,height,width)从OFFSET函数ColumnB
和ColumnC
值,每个“位于”之间的差。
reference
s适用于插入公式的行(即B4
和C4
)的适当列,其中所需值为“南”的可变金额。
MATCH,as in = MATCH(lookup_value,lookup_array,[match_type])将根据具体情况确定偏移的范围。按照相反的顺序,这里的参数是match_type
= 0
(要求精确匹配),并且lookup_array
与所需的ColumnA一样多。最初选择Row1000(A$1000
),但可以根据需要进行扩展,但必须符合相关Excel版本的行限制。
第一个参数lookup_value
)当然是1
,因为那是包含要减去的值的行的标志。
在不和5
在MATCH函数数组的大小自动减小作为式被复制下来$
之间A
(顶部单元行的参考增大),因此发现下实例(而不是同一一个以上并再次)。
我几乎不知道它做什么,但它的工作。非常感谢!! – roarknuppel 2013-05-03 13:10:15
很高兴知道有这样的事情。避免编码总是更好。 – 2013-05-03 13:19:56
@ user2346636这是我最好的解释,如果不够好,我要回家了! – pnuts 2013-05-03 13:26:57
对于VBA,我首先将公式设置为显示与“ones”相同的结果。 (假设我使用的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
我会将它关联到一些表单事件或一个按钮。
如果表太大,请在代码前将'Application.ScreenUpdating'设置为false,并且不要忘记在末尾将其重新设置为'true'。 – 2013-05-03 12:58:06
嗨丹尼尔..这也适用,干杯! – roarknuppel 2013-05-03 13:13:06
你是什么意思的“旁边的陈述”??它是否在第四列的顶部,每个结果之间没有空格,而不是与各个结果行相对应? – 2013-05-03 12:00:04
嗨,丹尼尔。假设你在第3行和第7行中有一个。然后你在第7行中得到了两个减法数字,结果需要在第3行。此外,如果下一个数据位于第13行,那么该行的结果必须在第7行等 – roarknuppel 2013-05-03 12:18:30
我相信你唯一的选择是使用VBA代码。 – 2013-05-03 12:21:13