隐藏基于包含全零或没有值的单元格的行

时间:2017-10-11 10:57:28

标签: excel vba

我有一个数据集,其中每一行都是一个总账(GL)账户,每一列都有相关期间的值。

Print screen of Data Set

我想隐藏所有GL帐户(行),其中所有期间(列)都不包含任何值(或零值)。

以下代码似乎适用于"无值"。

如何隐藏所有仅包含零的行(或所有包含零的行或"没有值"?

如果一个句点有一个金额,则该行不应该被隐藏。

export default class LogoWall extends React.Component
{
    //...

    renderLogo(logoUrl)
    {
        // need to wrap into a function to have unique keys...
        return (key) => <Image
            key={key}
            source={{uri: logoUrl}}
            style={styles.logo}
        />
    }

    render()
    {
        // trying to save logos within this object
        const logos = {};

        return (
            <View style={styles.rowContainer}>
                {(() => {
                    let logoRows = [];

                    for (let i = 0; i < this.props.rows; i++) {
                        logoRows.push(<View style={styles.logoRow} key={i}>
                            {this.getLogos(i % 2 === 0).map((logoUrl, key) => {

                                // should only render when this image doesn't exist
                                if (typeof logos[logoUrl] === 'undefined') {
                                    logos[logoUrl] = this.renderLogo(logoUrl);
                                }

                                return logos[logoUrl](key)
                            })}
                        </View>)
                    }

                    return logoRows;
                })()}
            </View>
        )
    }
}

此外,一旦任何金额连续变化,此代码也应该重新出现未隐藏的行。此时它隐藏了一行没有价值的行,但一旦发生变化,隐藏的行就不会再出现了。

2 个答案:

答案 0 :(得分:1)

如果要测试所有空白或全部为零,请查看下面的代码,如果存在则隐藏行。从所有行取消隐藏开始。

 Sub hide()
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim c As Range
    Dim targetRange As Range

    Set wb = ThisWorkbook
    Set ws = wb.Sheets("Sheet5")
    Set targetRange = ws.Range("A1:F6")

    targetRange.EntireRow.Hidden = False

    For Each c In targetRange.Rows
       If (WorksheetFunction.CountIf(c,"<>0") - WorksheetFunction.CountIf(c,"") = 0) And (WorksheetFunction.CountA(c) - WorksheetFunction.Count(c) = 0) Then
           c.EntireRow.Hidden = True
       End If
    Next c

End Sub

答案 1 :(得分:0)

在决定是否隐藏它之前,您必须完全检查每一行。目前,每行的最后一个单元格决定是否隐藏行。

尝试使用以下代码。它为一行的所有单元格设置范围,并使用函数CountA计算非空单元格的数量。

Sub hide()

    Dim ws As Worksheet, row As Long
    Set ws = ActiveSheet
    With ws
        For row = 1 To 6
            Dim myRange As Range
            Set myRange = .Range(.Cells(row, 1), .Cells(row, 6))
            .Rows(row).EntireRow.Hidden = (Application.WorksheetFunction.CountA(myRange) = 0)
        Next row
    End With
End Sub