• ベストアンサー

excelで特定の列だけ表示させたい

添付画像のような表を作成し、 B列にチェックを入れたら、その項目の列だけが表示されるようにしたいのですが、 どうしたらいいでしょうか。 添付の図の場合だと、D列とJ列だけが表示されるようにしたい。 (A、B、C列は常に表示されたまま)、E、F、G、I、J、K列を消し、D、H列を表示させたい。

質問者が選んだベストアンサー

  • ベストアンサー
  • eden3616
  • ベストアンサー率65% (267/405)
回答No.4

VBAによる回答です。 (1)シートタブのシート名を右クリックして「コードの表示」でVBEを開く。 (2)最下のVBAコードを張り付ける。 (3)右上の「×」でVBEを閉じる。 (4)D~J列までの列を選択し、列記号を右クリックして「非表示」を選択。 (5)B列に何か入っていればいったん値を削除。 B列に「レ」全角のカタカナの「れ」を入力すると該当列が表示されます。 制約として以下の条件となります。 ・A1:A7と、D1:J1の内容は同じでないと機能しません。 ・内容が同じであれば、セルの並びが変わっても対応できます。 ・項目名が重複する場合は正常に機能しません。 また、 ファイルの保存形式はxlsmまたはxlsで保存してください。 マクロが保存できるファイル形式となります。 また、エクセルのセキュリティ設定によりますが、 ファイルを開いた際にマクロの警告が出る場合は許可しないと動作しません。 http://www.start-macro.com/55/w/s010.html チェック列をB列から変更する場合や、項目行が1行目から変更される場合などはコードを変更する必要があります。補足願います。 Private Sub Worksheet_Change(ByVal Target As Range)   If Target.Column <> 2 Then Exit Sub   Dim myRng As Range, myTar As Range   For Each myTar In Target     Set myRng = sh(myTar.Offset(0, -1).Value, Range(Cells(1, "D"), Cells(1, Columns.Count)))     If myRng Is Nothing Then Exit Sub     If myTar.Value = "レ" Then       'チェックした時       myRng.EntireColumn.Hidden = False     ElseIf Len(myTar.Value) = 0 Then       'チェック外した時       myRng.EntireColumn.Hidden = True     End If   Next myTar End Sub Function sh(shStr As String, shRng As Range) As Range   On Error GoTo era     Set sh = Columns(WorksheetFunction.Match(shStr, shRng, 0) + shRng(1).Column - 1)   Exit Function era:   Set sh = Nothing End Function

hatena-mik
質問者

お礼

チェック列も項目行も変更することはありません。 示していただいたコードで解決しました。 お礼が遅くなってしまって、申し訳ありませんでした。 ありがとうございます。

その他の回答 (4)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.5

#3です。 なかなか、補足もしない質問者が多いのですが、補足してくれてありがとう。 印刷時の「印刷したくない部分を印刷しない」方法を知りたいのようだ。 当初の質問には、「印刷」をうかがわせる言葉は出ていないのでは。質問がお粗末だよ。 再質問すべきくらいだよ。 小生は、securityの問題を気にしているように誤解した。 ーー .(1)VBAのはなしになるが、イベントとして、BeforePrintがあるし (2)シートで、いろいろな部分を非表示(Hiddenなど)にしたら、印刷時には印刷しない、という仕組みが多い(エクセルでもある)。この機能に乗っかれば、質問の意図は解決するかもしれない。しかしいろいろ実際のテストが必要だろうが。 印刷なら文字などを白文字にすれば印刷しても空白になり、内容が抜けるだろう。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

VBAで、例えばDからH列かつM列からS列までについて Sub test01() Columns("D:H").EntireColumn.Hidden = True Columns("m:s").EntireColumn.Hidden = True End Sub を実行してみたらどうかな。こういう結果の表示状態でよければ、できるよ。しかし、IーL列やT列以右の列は、左へ押し寄せてくるがよいか。 元に戻すのはFALSEで普通の表示に戻る。 ーー Excelはシートの行や列は表示するのが常態で、あまり活用できるものではないと思う。 正方形の部分(セル範囲)だけみえなくするのはむつかしい。 フォント色を一時的に白にして、見えにくくする(わずかに痕跡が見えるが)ぐらいだ。 >列にチェックを入れたら、その項目の列だけが表示されるようにしたいのですが、 これはVBAに組み込むことは簡単。しかしチェックを外したらもとに戻すなどのことは、VBAの高等な仕様の部類で、さらなる勉強が必要だと思う。 熟達者ならいざ知らず、凝った仕様にしない方がよい。 見えないようにする目的は何?好みの問題では?質問までしてやらないといけないの。

hatena-mik
質問者

補足

添付の画像では項目行が7つしかありませんが、実際はもっとたくさんあって、a4サイズで印刷すると収まりません。あるいは読めないほどに小さな文字にするか。 一度に全ての項目を印刷する必要はないので、必要な項目だけ選んで印刷する、というのが今回の目的です。

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.2

条件付き書式で「B列の対象セルに✔が無いとき文字列の色を白にする」と言う条件にすれば見えなくなるでしょう。 但し、見えなくなったセルを選択すると数式バーに表示されてしまいます。 また、セルに塗りつぶしで着色しているときは文字の色を塗りつぶしの色と同じにしないと見えてしまいます。 マクロを使えば列の非表示や再表示がコントロールできると思います。 私はマクロの経験が無いのでコードを提示できませんので他の回答者からのアドバイスを待ってください。

  • msMike
  • ベストアンサー率20% (364/1804)
回答No.1

「表示される」情報(内容)が何処にどういうレイアウトで纏めてあるかを示さないと、表示することは不可能なことはお分かりでしょ?

関連するQ&A