• ベストアンサー

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

eden3616の回答

  • ベストアンサー
  • 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
質問者

お礼

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

関連するQ&A

  • エクセル 2つの表を1つの表に空白行を詰めて表示

    B列~D列に表AがありF列~H列に表Bがあります。 2つの表をJ列~L列に空白行を詰めて表示される方法を教えてください。 サンプル表を添付します。 よろしくお願いします。

  • Excel(数値の非表示)

    日々の出費を管理する表を作っています。 A列は日付、B列C列D列は項目別の数値 E列はその日付の数値の合計(B1+C1+D1) F列はその日までの累計(A列ではE1=F1、B列以降はF1+E2) この表の翌日以降のE列、F列の数値を表示したくないのですがどうしたらよいでしょうか? E列に関しては、翌日以降はB列C列D列が未入力となり必ず0が入るので、オプションで「ゼロ値」のチェックをはずすことで対応しようと考えているのですが問題ないでしょうか? F列に関しては数値が0にはなりませんので関数を使うことになるかと思うのですが、それが分からず困っています。 初歩的な質問と思いますが宜しくお願いします。

  • Excelの移動しない列

     Excelで表示されている列が左から   A B C D E F ... のとき,右方向にスクロールさせると表示領域が   B C D E F G ... (Aが左に消える)   C D E F G H ... (Bが左に消える) と変化していきます.  ここで,Aをスクロールアウトさせない方法を知りたいと思っています.大きな表を作成したときに,表のどこを見ていても各列が何を表しているかを知りたいからです.  具体的には,右方向にスクロールさせたときに最初に消えるのがAではなく,   A C D E F G ... (Bが消える)   A D E F G H ... (Cが消える) という変化をさせたいと思っています.  どうすればいいのでしょうか.

  • エクセル 3列おきに列を挿入したい

    いつもお世話になります。 1行目に営業所コードがあり、そのコードを3列おきに表示するにはどうしたらいいでしょうか。   A  B  C  D  E  F  G  H  I  J   2   3   4   5   7   8  11  12  14  15              ↓   A  B  C  D  E  F  G  H  I  J   2          3         4         5 営業所コードは2~150の数字で、100ほどの営業所コードが存在します。 よろしくお願いします。

  • Excelで飛び飛びのセル(列)を参照したいのですが…その2

     ある「sheet1」で、G1="A",H1="B",I1="C",J1="D",K1="E",L1="F",M1="G",N1="H",O1="I",P1="J",Q1="K",・・というように文字が入力されているとすると、5列飛びの値A,F,K・・・(G1,L1,Q1・・・)が欲しいのです。そして、その値が「sheet2」に、C5=A,D5=F,E5=K,F5=P・・・となるようにしたいのです。ただ数値が5ずつ増加するのではなく、そのセルに入力されている文字列を参照したいのです。  それをまた、「sheet1」の、G2="A",H2="B",I2="C",J2="D"・・・の値でも同じ事をしたいのですが・・・。  よろしくお願いします。

  • エクセル 時間の合計数が適正に表示されません

    添付のようなタイムシートを作成しましたが、「合計の時間数」が適正に表示されません。 D12、E12には正しくない合計時間数が表示され、 F12、G12に至っては、表示すらされません(TT) 間違っているのではなく、適正な表示になってくれていないだけだろうなとは理解できるのですが なぜこんな表示になってしまうのか、まったくわかりません。 どなたかご教示いただけないでしょうか。 よろしくお願いいたしますm(_ _)m 各列の関数は以下のとおりです。 D列=C-B-J E列=MIN("8:00",D) F列=D-K G列=C-I 合計のセルは次のように設定しています。 D12=SUM(D5:D11) E12=SUM(E5:E11) F12=SUM(F5:F11) G12=SUM(G5:G11) 各セルの表示形式は、 [h]:mm;; です。 よろしくお願いいたしますm(_ _)m

  • excel2000 ある列の項目名をカウントしその件数表示をする

    エクセルで表10行×5列の表があります。1列目にあるデータが入っております。その項目名をカウントし多い順に別の表にその項目名と件数を表示させたい。できるだけ自動的におこなうためにはどうすればよいでしょうか。 例 :ある表 1列 A B c B c A D E F B 結果 別の表 項目 件数 B   3 A   2 C   2 D   1 E   1 F   1

  • 難解なエクセル集計の仕方を教えてください!!

    以下のように集計したいのですが、いい方法はありませんか? 解りにくいですが、宜しくお願いします!!! ------------------------ 【関係図】  (1)(2)という2つグループの関係を表しています。  組織図のようなものと思ってくださって結構です。 ■元データ 【表あ】  関係図を分解し、2つごとの関係に直したデータです。   【表い】  それぞれA-Oに対応する数字が入っています。 ■集計要望 【表あ】と【表い】ふたつのデータを元に、関係図に基づいた集計をしたい。 例: 1.Aを集計すると、Aの下位のものはすべて集計したい。(A~Gまでの集計) 2.Dを集計すると、Dの下位のみが集計されるようにしたい。(D+E+F+G) 3.Fを集計すると、Fの下位のみ集計したい。(F+G) 4. Iを集計=I+K、Jを集計=J+L+M+N+O 【関係図】  (1)A-B-C      D-E       F-G  (2)H-I-K     J-L-M       N-O 【表あ】  A ― B  B ― C  B ― D  D ― E  D ― F  F ― G  H ― I  I ― K  H ― J  J ― L  L ― M  L ― N  N ― O 【表い】 A=1 B=2 C=4 D=5 E=6 F=7 G=8 H=9 I=10 J=11 K=12 L=13 M=14 N=15 O=16

  • エクセルで2列以上のものを同時に並び替えするには

    エクセルで下記のようなデーターがあるとします。 1 A  G     B  H 2 C  I  ○   D  J 3 E  K   F  L このようにひとつの項目に2行づつあるものに対して、最後に○をつけたものを先頭に2行そのまま一気に並び替えるにはどのようにすればよろしいでしょうか?要するに 2 C  I  ○   D  J 1 A  G     B  H 3 E  K   F  L このようにしたいです。 よろしくお願いいたします。

  • 列A,列Bを参照して列Cにそれに対応する文字列を表示

    列A,列B,列C 4,8,A 4,9,B 4,10,B 4,11,C 4,12,C 4,13,D 3,8,E 3,9,F 3,10,F 3,11,G 3,12,G 3,13,H 2,8,I 2,9,J 2,10,J 2,11,K 2,12,K 2,13,L 1,8,M 1,9,N 1,10,N 1,11,O 1,12,O 1,13,P 列Aに1~4,列Bに4~20の値を入れ、 列Cに、計算式で上記のような文字列を表示させたいのですが、 if関数のネストが7つまでらしく8つ以上が出来ません。 何か方法がありましたらお願いします。 =IF(AND(A2=4,B2<=08),"A" ,IF(AND(A2=4,B2<=10),"B" ,IF(AND(A2=4,B2<=12),"C" ,IF(AND(A2=4,B2>=13),"D" ,IF(AND(A2=3,B2<=08),"E" ,IF(AND(A2=3,B2<=10),"F" ,IF(AND(A2=3,B2<=12),"G" ,IF(AND(A2=3,B2>=13),"H"))))))))