[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『フィルター後の行の高さについて』(りりこ)
ご教示ください。
セルを結合した箇所があるエクセルにフィルターをかけると行の高さが変更されてしまいます。行の高さまで移動させることは可能でしょうか。(セルの結合をしないと文字数が入りきりません)
< 使用 Excel:Excel2013、使用 OS:unknown >
行の高さが変更されるというよりは、結合しているセルの一部の行がフィルタで非表示に なるということでしょうか。
セル結合範囲がフィルタリングで間引かれないように、条件やデータを調整できないでしょうか。
(Mook) 2015/03/31(火) 18:21
条件やデータの調整とは例えばどんな事でしょうかか、
表は選考の表でL列まで年齢、氏名、希望部署がならんでおり、O列が問題の列で、志望動機の列なのですが、行最大幅409でも収まりきれず、人によっては2行で収めています。希望部署でフィルターをかけると、志望動機が途中で切れてしまって困っています。
(りりこ) 2015/03/31(火) 21:29
例えば A列が名前で、条件はB:N 列でフィルタを掛けるとすると、 条件付き書式で、B1:N1000(終わりの行は適当) で =$A1="" として、文字色を白に。
結合のための追加行のB:N列は数式で上のセルと同じ値に。 やり方はこのあたりを参照で。 [[20121001121533]] 『空白のセルは上のセルの値を複写』(楽になりたい)
としたら、フィルタ出来るように思います。
(Mook) 2015/03/31(火) 21:51
> 例えば A列が名前で、条件はB:N 列でフィルタを掛けるとすると、 このあたりの仮定は良いのでしょうか?
気になるのは、結合のために追加した行は、結合セル以外は空欄、でよいのですか?
(Mook) 2015/03/31(火) 22:23
横から失礼します。
こういうことですよね。
たとえば、4行目と5行目が結合されている。 で、O4(O4:O5)のセルはセル内改行で2行以上の文字列が入っている。 この状態で、別の列でフィルターした結果、この結合された行が対象になった。 でも、表示された行の高さは1行分の高さだけで、O列のセルには4行目しか表示されない。
これは仕様で、どうしようもないと思います。 つまり、行結合セルで値が入っているのは上の4行目のセル。したがって、フィルタリングを掛けた列で選択されたのは 結合されたセルの上のセル。(下のセルは空白ですから) なので、4行目のみがフィルター結果として表示された。
そもそも、なぜ行結合したかというと、その行の、どこかのセルの文字列を改行して表示させたい。 通常の行の高さではおさまらないので、2行を結合。
これを、行結合ではなく、その行のセルの高さを大きくして1行にされてはいかがですか。 そうすれば、フィルタリング結果も大きな高さの行のままですから。
(β) 2015/03/31(火) 23:29
>これを、行結合ではなく、その行のセルの高さを大きくして1行にされてはいかがですか。 に関して勝手解釈ですが、高さを最大にしても足りないので複数セルを使用しているのかな? と考えました。 まぁセル幅を広げる等で、一つのセルに納めるに越したことはないのですが。
B:N でフィルタ というのは、全列フィルタはかかっているのでしょうが、条件設定をする のがB〜N列という仮定でよいですか?という質問でした。
A列の名前が云々というのは、いい方を変えると、フィルタ条件を設定したい列以外に 結合するために挿入した行を判定する方法はありますか? ということです。
例えば、フィルタはかかっているけれど、A列は条件入力には使わず、結合のために挿入し た行は空白になっていて、それ以外は空白はない、というような列があれば知りたかった ということです。
(Mook) 2015/03/31(火) 23:39
VBAになりますがオートフィルターが設定されている状態で、フィルタリング前に以下のマクロを実行。 実行後、フィルタリングをしてみてください。 フィルター対象のリスト内の結合セルの値がかわらない限り、この処理は1回行えばOKです。 (結合セルの値が変更になれば、その時も実行してください)
Sub Padding() Dim c As Range Dim w As Range
With ActiveSheet.AutoFilter.Range Set w = Cells(1, .Columns.Count + 2) For Each c In .Cells If c.MergeCells Then If c.Address = c.MergeArea(1).Address Then With w.Resize(c.MergeArea.Rows.Count) .Value = c.Value .Copy c.MergeArea.PasteSpecial Paste:=xlPasteFormulas End With End If End If Next End With Application.CutCopyMode = False w.CurrentRegion.Clear
End Sub (β) 2015/04/01(水) 00:27
が。。。また新しい問題が・・・
フィルターでの抽出をして行の高さも変わらずできたのですが、今度は落選させる人を塗りつぶしし、塗りつぶしてある行は表の最下部へ移動させるという並び替えをしたいのですが、ユーザー設定の並び替えでセルの色を選択し、塗りつぶしなし・上を設定し、実行すると「この操作を行うには、すべての結合セルを同じサイズにする必要があります」とででできません。セルの色ではなくaやzの列も作ってみたのですが同じく「この操作を行うには、すべての結合セルを同じサイズにする必要があります」が出てしまいます。どうしたらいいでしょうか
(りりこ) 2015/04/01(水) 08:43
追加質問を見過ごしていました。
難しいですねぇ。フィルターメニューの中の並び替えは、フィルター独自のものではなく、 いわゆる通常の並び替え機能を借用しているもので、これはエクセル並び替えの仕様です。
別の方法がないか、私もちょっと考えてみますね。
(β) 2015/04/03(金) 19:36
本当に並び替えがしたいわけではなく、色のついたセルを最下部にもっていきたいということですね?
であれば、以下でお試しください。
1.まず、オートフィルタで、色のついたセルを抽出します。 2.色のついた行のみが表示されましたね。ここで、これら行を選択して Ctrl/c。 3.リストの下(今、色がついた行が表示されている、その下の行から)にCtrl/v。 4.元々フィルタリングで表示されていた行を選択して行削除。
これでいかがですか?
(β) 2015/04/03(金) 21:38
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.