【问题标题】:Excel Array formula #N/A errorExcel 数组公式 #N/A 错误
【发布时间】:2018-03-09 03:02:30
【问题描述】:

我正在使用 excel 数组函数来选择范围并根据参考单元格应用公式。但是,每次我添加或删除一个值时,我都可以使用宏复制粘贴引用,但数组公式不会更新范围以重新选择新范围。

这是我在顶部和底部的主表,我想要唱一个我已经实现的数组公式,但是在使用 vba 更新时,它不会通过更新公式中的范围来添加/删除新条目。

No. Name    V1  V3  V3  V4
1   Wood    10  10  10  10
2   wood    28  28  28  28
3   tree    30  45  60  68
4   plastic 50  50  50  50
5   tree    50  50  50  50
6   iron    64  75  75  80


No. Name        V1  V3  V3  V4
1   Wood - A    25  25  25  25
2   Wood - A    50  50  50  50
3   tree - A    50  50  75  75
4   plastic - A 75  75  75  75
5   tree - A    75  75  75  75
6   iron - A    75  100 100 100

第一个公式:名称列

=concatenate(A1:A6," - A")
  • Ctrl+shift+enter - 在右表名列中提供我需要的内容。

第二个公式:数值变化

=value(if(C1:F6<25,"25",if(C1:F6<50,"50",if(C1:F6<75,"75","100"))))

这个公式我用来分配实际值,左表中的值是预测值。我什至可以使用数组“ctrl+shift+enter”来实现这一点。

问题: 但问题是,每次我通过添加新条目(如 A7、A8、A9)来更新工作表时,同时使用 vba 应用公式时,它不会将新范围作为第一个公式的 A1:A9(A1:A6) 和 C1:F9(C1 :C6) 用于第二个公式,但在括号中采用旧范围。因为,其中我收到像 #N/A 这样的错误,因为它没有采用新范围,所以公式无法理解剩余单元格中的内容。

【问题讨论】:

  • 如果您提供代码会有所帮助。您可能想查找设置范围到最后一行。
  • 我不清楚为什么列标题标签是 v1、v3、v3、v4。

标签: vba excel excel-formula


【解决方案1】:

开始于:

把它放在工作表的代码表中。

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A:F")) Is Nothing Then
        On Error GoTo meh
        Application.EnableEvents = False
        Dim t As Range, tr As Long, v As Long
        For Each t In Intersect(Target, Range("A:F"))
            tr = t.Row
            If Cells(tr, "B").Value2 <> vbNullString And _
              Application.Count(Range(Cells(tr, "A"), Cells(tr, "F"))) = 5 Then
                Cells(tr, "A").Offset(0, 7) = Cells(tr, "A").Value
                Cells(tr, "B").Offset(0, 7) = Cells(tr, "B").Value & " - A"
                For v = 3 To 6
                    Select Case Cells(tr, v).Value
                        Case Is < 25
                            Cells(tr, v).Offset(0, 7) = 25
                        Case Is < 50
                            Cells(tr, v).Offset(0, 7) = 50
                        Case Is < 75
                            Cells(tr, v).Offset(0, 7) = 75
                        Case Else
                            Cells(tr, v).Offset(0, 7) = 100
                    End Select
                Next v
            End If
        Next t
    End If

meh:
    Application.EnableEvents = True
End Sub

添加两行后的结果。

【讨论】:

猜你喜欢
  • 2019-12-20
  • 2014-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-27
  • 2017-12-17
  • 2015-10-27
  • 2018-09-05
相关资源
最近更新 更多