[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『オートフィルタ』(popo)
オートフィルタは一行一行しか対応してないのですか?今、A2とA3のセルを結合(以下A4とA5、A6とA7・・・・)しているのですが、A2には文字が入っていると認識されて、A3は空白のセルとなってしまうのです。A列には日付が入っていて、オートフィルタを使って分けたいと思っているのですが・・・
オートフィルタは簡易なデータベース機能です。 データベースとセルの結合は非常に相性が悪いので、 併用しないような運用が必要です。 フィル多機能を使うなら、一行に完結したデータの集合でなければなりません。 セル結合したレイアウトが必要なら、一行一データのデータベースから 関数などで所定の位置へデータを抽出するようなつくりが必要です。 (簡易な回避手段として、一列追加して、A列の内容を一行一行に入力 してその追加した行でフィルタをかけるという方法はあります。 B列を追加して、A2:A3を結合しているのなら、A2の内容をB2、B3へそれぞれ入力) (KAMIYA)
他に方法はないですかね? (popo)
そのままのレイアウトを保ったままであれば、強引なマクロになります。 A列の最下端セルにでも=NOW()などの揮発性関数を入力して おいてください。安定性、操作性、表示性に問題があります。 データの保持は保障しませんので、試す場合には元データは 自己責任で保存しておいてください。 Private Sub Worksheet_Calculate() REM TEST_20040826 Dim MyCtr Dim MyRow As Long Dim C As Range Application.EnableEvents = False On Error Resume Next If Me.AutoFilterMode Then With Me.AutoFilter MyCtr = WorksheetFunction.Substitute(.Filters(1).Criteria1, "=", "") If MyCtr = "" Then Application.EnableEvents = True Exit Sub End If End With Cells.AutoFilter MyRow = Range("B65536").End(xlUp).Row Range("A1:A" & MyRow).Copy Range("B1:B" & MyRow).Insert CopyOrigin:=True Application.CutCopyMode = False For Each C In Range("B2:B" & MyRow) C.MergeCells = False If C.Value = "" Then C.Value = C.Offset(-1, 0).Value If C.Value = MyCtr Then C.EntireRow.Hidden = False Else C.EntireRow.Hidden = True End If Next C Range("B1:B" & MyRow).Delete Cells.AutoFilter End If Application.EnableEvents = True End Sub 上記マクロは「似た表示」を「腕力」で何とかしているものと ご了解ください。 なお、先にも書いたとおり、私はセル結合を含むシートをデータベースとして 使用することに反対の立場ですので、本来ならこのようなマクロを 公表すべきではないと思っています。したがって、使用法、手直しなど このマクロについてはフォローはいたししかねますので、ご了承ください。 コードを見てわからない場合は使用をおやめください。 (常用するには不安定すぎてデータを壊す可能性があるため。) マクロを使いこなせない場合はデータベースのほうを工夫すべきであると いうのが私の結論です。 (KAMIYA)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.