0

エクセルマクロで困っています。Excel 2003 を使用しています。Excel ドキュメントに大量のデータがあり、特定のデータを表示できるようにマクロを作成する必要があります。

このドキュメントのすべてのデータは、別の Excel ドキュメントからインポートされます。つまり、それは価値ではなく式です。最初の行は、名前、姓、番号、トレーニングの名前などのデータのラベルに設定されます。以下の行はそれらのデータで満たされています。

私がやりたいことは次のとおりです。 1.特定の列基準でデータをフィルタリングします。2. マクロを使用します。 - 範囲内のすべての列 (たとえば、範囲 G:BV) で値 "1" を検索します - 値 "1" が列内のいずれかのセルで見つかった場合、それは変更されません - 値 "1" の場合見つからない列は非表示にする必要があります

私は自分の問題について何かを見つけようと懸命に努力していましたが、成功しませんでした。これまでのところ、私はこのコードを思いつきました:

Sub FindHid()

Dim vFind
Dim rSearch As Range

On Error GoTo 0

vFind = 1

Application.ScreenUpdating = True

For i = 7 To 75

With ActiveSheet.Columns("G:G")
   Set rSearch = .Find(vFind, LookIn:=xlValues, MatchCase:=False)

   If rSearch Is Nothing Then
      .EntireColumn.Hidden = True

      Else
      .EntireColumn.Hidden = False

   End If
End With
Set rSearch = Nothing
Next i

End Sub
4

3 に答える 3

0

私のコード:

Sub HideNonOnes()
    Dim rngToSearch As Range
    Dim rng As Range
    Dim rngToHide As Range

    Set rngToSearch = Range("G2", Range("G2").End(xlDown).End(xlToRight))

    For Each rng In rngToSearch.Columns
        If Evaluate("ISNA(MATCH(1," & rng.Address & ",0))") Then
            If rngToHide Is Nothing Then
                Set rngToHide = rng.Range("A1")
            Else
                Set rngToHide = Union(rngToHide, rng.Range("A1"))
            End If
        End If
    Next rng
    If Not rngToHide Is Nothing Then
        rngToHide.Columns.Hidden = True
    End If
End Sub

rngToHideこれらすべての列を一度に非表示にする前に、範囲を構築します。

于 2013-07-17T20:55:46.953 に答える
0

それは私の問題に対する最良の解決策ではありませんが、うまくいきます:

Sub FindHid()

Dim vFind
Dim rSearch As Range

'On Error GoTo ErrorHandle
Application.ScreenUpdating = False

vFind = 1

Range("F1").Select

For i = 1 To 68
    ActiveCell.Offset(0, 1).Range("A1").Select
    Range(Selection, Selection.End(xlDown)).Select

    Set rSearch = Selection.Find(vFind, LookIn:=xlValues, LookAt:= _
        xlWhole, MatchCase:=True)

        If rSearch Is Nothing Then
            Selection.EntireColumn.Hidden = True

        Else
            Selection.EntireColumn.Hidden = False

        End If

Next i
Application.ScreenUpdating = True
Range("A1").Select

End Sub
于 2013-07-19T07:05:31.130 に答える