无法使用macros中的循环根据列值使公式dynamic化

这个问题涉及在Excel中使用macros自动化dynamic范围的公式。

  • 我有2列“A”和“B”。

  • 列A与应用程序ID。 在“A”列中的应用程序ID在一些迭代之后dynamic地改变,即具有18个计数,然后是43,然后是15,等等。

  • B列有相应的0和1。

我正在使用18个B值,43个B值,15个B值等计算一个二项分布公式。

如果两行中的应用程序ID不匹配,则应该计算一个公式。 该公式包含2-19行值,比20-62行值,63-77行值等等…

我想要它计算109972细胞。 寻找一个可以做到这一点的macros。

表格图像

第一个公式:

= COUNT($ B $ 2:B19,0),COUNT($ B $ 2: B19 ),COUNTIF($ B $ 2: B19,0 )/ COUNT($ B $ 2: B19 )= IF(A19 <> A20,BINOM.DIST ),假),””)

第二个公式:

= COUNT( $ B $ 20B62,0 ),COUNTIF( $ B $ 20B62,0 )/ COUNT( $ B $ 20 :B62,0)= IF(A62 <> A63,BINOM.DIST ),假),””)

第三个公式(如此计算)

= IF(A77 <> A78,BINOM.DIST(COUNTIF( $ B $ 63 :B77,0),COUNT( $ B $ 63 :B77),COUNTIF( $ B $ 63 :B77,0)/ COUNT( $ B $ 63 :B77 ),假),””)

如果您的数据位于名为Data的工作表中,请添加一个命令button,然后添加以下代码。 你应该检查二项参数,因为我不习惯他们。

 Private Sub CommandButton1_Click() Dim lTrialNumber As Long Dim lFailNumber As Long Dim lLastRow As Long Dim i As Long lLastRow = Worksheets("Data").Cells(1, 1).End(xlDown).Row lTrialNumber = 0 lFailNumber = 0 For i = 2 To lLastRow 'if data start in row 2. Row 1 for Titles If Worksheets("Data").Cells(i + 1, 1) <> Worksheets("Data").Cells(i, 1) Then lTrialNumber = lTrialNumber + 1 If Worksheets("Data").Cells(i, 2) = 0 Then lFailNumber = lFailNumber + 1 End If Worksheets("Data").Cells(i, 4) = WorksheetFunction.BinomDist(lFailNumber, lTrialNumber, lFailNumber / lTrialNumber, False) lTrialNumber = 0 lFailNumber = 0 Else lTrialNumber = lTrialNumber + 1 If Worksheets("Data").Cells(i, 2) = 0 Then lFailNumber = lFailNumber + 1 End If End If Next End Sub