【问题标题】:Offset function for Dynamic Chart causing problems with blank cells动态图表的偏移功能导致空白单元格出现问题
【发布时间】:2014-05-01 15:13:50
【问题描述】:

我正在使用 OFFSET 函数为下图所示的表格创建动态图表。基本上在单击标有“复制平均 VCD 值”的按钮时,代码会将值从另一张表复制到当前表。如果遇到任何带有“#DIV/0!”的单元格我将其设置为“N/A”。但在这种情况下,我没有得到动态图表。如果不是 N/A 我做“”,它会创建一个动态图表,但会将垃圾值“1”添加到图表上的第一个集合。如果我手动删除包含数据的最后一行下方包含“N/A”的所有行,我只会得到所需的结果(详情请参见图片)。

https://lh6.googleusercontent.com/-OfjK6dSRQE8/U2JkdadjedI/AAAAAAAAABk/d8WDLuuC7Lk/w1068-h803-no/Offset+error.PNG

这是我用于命令按钮“复制平均 VCD 值”的代码:

    Private Sub CommandButton2_Click()

        r = 7
        '//j increments the column number
        '//i increments the row number
        '//r is used for taking values from alternate cells(sheet3 column K) rowwise
        For j = 2 To 14
            For i = 7 To 26
                If ThisWorkbook.Sheets(3).Range("K" & r & "").Text = "#DIV/0!" Then
                    ThisWorkbook.Sheets(2).Cells(i, j).Value = "N/A"
                    Else
                    ThisWorkbook.Sheets(2).Cells(i, j).Value = ThisWorkbook.Sheets(3).Range("K" & r & "").Value
                End If
             r = r + 2
            Next i
         Next j


     End Sub

如果我添加以下代码,它可以工作,但它会删除表格前后的整行。见图片:https://lh6.googleusercontent.com/-WiM8HN61zkM/U2Jz2J_JxjI/AAAAAAAAACw/z4i3hlakyAI/w1598-h442-no/offset+delete+row.PNG

    Private Sub CommandButton2_Click()

        r = 7
        '//j increments the column number
        '//i increments the row number
        '//r is used for taking values from alternate cells(sheet3 column K) rowwise
        For j = 2 To 14
            For i = 7 To 26
                If ThisWorkbook.Sheets(3).Range("K" & r & "").Text = "#DIV/0!" Then
                    ThisWorkbook.Sheets(2).Cells(i, j).Value = "N/A"
                    Else
                    ThisWorkbook.Sheets(2).Cells(i, j).Value = ThisWorkbook.Sheets(3).Range("K" & r & "").Value
                End If
             r = r + 2
            Next i
         Next j

Dim c As Range
Dim SrchRng

Set SrchRng = ActiveSheet.Range("B7:B26")
Do
    Set c = SrchRng.Find("N/A", LookIn:=xlValues)
    If Not c Is Nothing Then c.EntireRow.Value = ""
Loop While Not c Is Nothing

   End Sub

这是我在这种情况下用于 B 列的偏移函数:

    =OFFSET('Data Summary Template'!$B$7,0,0, COUNTA('Data Summary Template'!$B$7:$B$26),1)

【问题讨论】:

标签: excel vba charts


【解决方案1】:

我无法完全复制您遇到的这个问题...我认为最初的问题一定与有关无效引用的警告有关。您应该对此进行调查并找出原因,这可能是图表中“额外”数据的原因。

如果删除 N/A 值似乎有效,请尝试一下。而不是:

Set SrchRng = ActiveSheet.Range("B7:B26")
Do
    Set c = SrchRng.Find("N/A", LookIn:=xlValues)
    If Not c Is Nothing Then c.EntireRow.Value = ""
Loop While Not c Is Nothing

这样做:

Dim tblCell as Range
Dim tbl as ListObject
Set tbl = ActiveSheet.ListObjects(1)
For each tblCell in tbl.DataBodyRange.Columns(2).Cells
    If tblCell.Value = "N/A" Then 
        tblCell.Resize(1, tbl.DataBodyRange.Columns.Count - 1).Value = vbNullString
    End If
Next

【讨论】:

  • 像魅力一样工作!谢谢大卫!
猜你喜欢
  • 1970-01-01
  • 2017-03-23
  • 2023-02-23
  • 2022-10-18
  • 1970-01-01
  • 2018-10-17
  • 1970-01-01
  • 1970-01-01
  • 2014-11-18
相关资源
最近更新 更多