• 締切済み

エクセルについて

エクセルにおいて、下記のように1~5のみ残し、その他無くなった数字は見えなくする、もしくわ文字の色を白にして見えないようにしたいと思っています。   A B C D E F G H I J K L M N O P Q R S T U 1 0 0 0 0 0 1 2 3 3 3 3 3 4 5 5 5 5 5 5 5 5 2 0 0 1 2 2 2 2 3 4 4 5 5 5 5 5 5 5 5 5 5 5         ↓         ↓   A B C D E F G H I J K L M N O P Q R S T U 1 1 2 3 3 3 3 3 4 5 2   1 2 2 2 2 3 4 4 5 私は基本的な関数は使用出来ますが、VBAは勉強し始めたばかりです…。 良い方法をご教示頂ければと思っております。 よろしくお願いいたします。 ※記入した例において、1~5の列がズレていますが、行も列も同じばしょのままでお願いします。

みんなの回答

  • Yosha
  • ベストアンサー率59% (172/287)
回答No.6

>VBAは勉強し始めたばかりです とのことなので、一例を示します。 各行の意味は勉強してください。 Sub test()  Dim r As Long, rEnd As Long  Dim c As Integer, cEnd As Integer  Dim Cel As Range  r = Selection.Row   '選択セルの行番号取得  c = Selection.Column '選択セルの列番号取得 '-- 範囲算出のため範囲の最下段の行番号と右端の列番号を取得  rEnd = Cells(Rows.Count, c).End(xlUp).Row        cEnd = Cells(r, Columns.Count).End(xlToLeft).Column '-- 範囲選択  Range(Cells(r, c), Cells(rEnd, cEnd)).Select '-- 範囲内のセルの条件付き書式設定 → 1~5を除くセルを非表示  For Each Cel In Selection   With Cel    '-- 書式を「標準」にする場合    .NumberFormat = "General"          '(1)    '-- 書式を「非表示」にする場合    If .Value = 0 Or .Value > 5 Then _     Cel.NumberFormat = """"""     '-- 「白色」にする場合は、こちらを使います    If .Value = 0 Or .Value > 5 Then _     Cel.Font.ColorIndex = 2         '(2)   End With  Next End Sub (1)の代わりに   .NumberFormatLocal = "G/標準" でもOK (2)は Excel 2007 では   Cel.Font.ThemeColor = xlThemeColorDark1 でもOK

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

こんなのVBAでやっても意味ない。操作で一発で出来るのだから。 (1)VBAの勉強なら条件付き書式の操作をして、マクロの記録をとって勉強すればよい。 ほかに (2)全セル繰り返し法(For Each In 範囲) (3)各行各列全セル繰り返し法 For i=1 to XX For j=1 to YY で書式を白フォント職にするとか、空白に変えてしまうとか。 --- これらの範囲やxx、yyを実情データからどうして割り出すか勉強したら。応用は拾い点。

noname#144013
noname#144013
回答No.4

度々すみません。FarEyesです。 御免なさい。先程【ANo.3】のサンプルでは後ろの連続した"5"には未対応でしたね。 すみません、こちらの条件を見落としていました。(^_^;) 改めて修正したバージョンのサンプルマクロを上げてみました。 ※【ANo.3】のサンプルは無視して下さい。どうも失礼致しました。m(__)m ■サンプルマクロ2(修正バージョン) ' ' Macro1: 特定セルの表示/非表示の変更 ' ・セルの値が(0の時)または、 ' (直前が5で今回も5だった時)に表示/非表示を変更する。 ' Public Sub Macro1(sw As Integer) Dim i As Integer, imax As Integer Dim j As Integer, jmax As Integer Dim NumNow As Integer, NumB4 As Integer imax = 2: jmax = 21 For i = 1 To imax NumB4 = 0 For j = 1 To jmax NumNow = Cells(i, j).Value If (NumNow = 0) Or (NumNow = 5 And NumB4 = 5) Then If (sw = 0) Then Cells(i, j).NumberFormatLocal = """""" '←非表示 Else Cells(i, j).NumberFormatLocal = "G/標準" '←表示 End If End If NumB4 = NumNow Next j Next i End Sub

noname#144013
noname#144013
回答No.3

tomi1196 さん、はじめまして。 【ANo.1】asapinya さん と【ANo.2】l4330 さんの意見を参考にさせて頂いて、サンプルマクロを作ってみました。 書式を変更するのは皆さんの意見と同様ですが、今回は色の変更(白にする)ではなく、表示形式を変更して 非表示となるようなコードにしてみました。 ※色の変更だと背景色を変更した場合、その度にVBAマクロの方も変えなくてはならないため。 下記の関数は、引数が0の時に非表示、0以外の時に表示するようになっています。 ループにより【2行×21列】のセルエリアに於いて、値が0のセルを表示変更しています。 ※当方は、Windows98SE+Excel 2000の環境で試してみました。 参考になれば幸いです。 tomi1196 さんのご使用の環境でも上手くいけば良いのですが... ■サンプルマクロ ' ' Macro1: 特定セルの表示/非表示の変更 ' ・セルの値が0の時に表示/非表示を変更する。 ' Public Sub Macro1(sw As Integer) Dim i As Integer, imax As Integer Dim j As Integer, jmax As Integer imax = 2: jmax = 21 For i = 1 To imax For j = 1 To jmax If (Cells(i, j).Value = 0) Then If (sw = 0) Then Cells(i, j).NumberFormatLocal = """""" '←非表示 Else Cells(i, j).NumberFormatLocal = "G/標準" '←表示 End If End If Next j Next i End Sub

回答No.2

  条件付書式で [セルの値が」[次の値の間以外」[1]と[5] このようにして、書式で文字の色を「白」にするのはどうですか?  

tomi1196
質問者

補足

ご回答いただきありがとうございます。 [1]と[5]以外を白文字にすると、[2][3][4]が消えてしまいます。また最後に連続で存在する[5]が残ってしまいました…。

  • asapinya
  • ベストアンサー率36% (40/109)
回答No.1

見当違いの回答でしたらごめんなさい。 0を見えなくするという事でよろしいのでしょうか? それでしたら、条件付書式で白にできますよ。 今手元にExcelがないので、具体的な場所などは書けないのですが、条件として内容が0ならば、書式で文字色を白に・・・ こんなないようでOKですよ。

関連するQ&A

  • 順列・数え上げ

    よろしくお願いします。 ここに下のような390個の文字があります。 (A,B,C,D,E,F,G,H,I,J,K,L,M がそれぞれ10個ずつ、 N,O,P,Q,R,S,T,U,V,W,X,Y,Z がそれぞれ20個ずつあります。) この390個の文字から235文字を選んで一列に並べる方法は全部で何通りありますか。 A B C D E F G H I J K L M A B C D E F G H I J K L M A B C D E F G H I J K L M A B C D E F G H I J K L M A B C D E F G H I J K L M A B C D E F G H I J K L M A B C D E F G H I J K L M A B C D E F G H I J K L M A B C D E F G H I J K L M A B C D E F G H I J K L M N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z 以下、私が考えたことを書きます。 この390個の文字から235個の文字を選ぶ組み合わせの総数は、 (Σ[k=0~10]x^k)^13*(Σ[k=0~20]x^k)^13 を展開したときのx^235の係数ですから、 23463540513956137996043929988 通りだということは分かります。 この23463540513956137996043929988 通りのそれぞれについて235個の文字 の順列(同種のものを含む順列)を数え上げれば答えは出ると思いますが、これは あまりにも大変な作業です。 何かよい知恵はないでしょうか。

  • ある値以上のデータの個数を表示させる関数は?

    25行目から下に、複数のデータがあります。 E,G,I,K,M,O,Q,S,U,W の列だけで、 値が9以上であるセルの個数を 「 B列 」 に表示させる関数はどのようになりますでしょうか? よろしくお願い致します。 下記例の場合は、 9以上の値は、 4つありますのでB列に 「 4 」 と表示させます。 --------------- 実行前   A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X 25             10    8     7     9     12     3     25     1     4     5 ・ ・ 実行後   A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X 25    4        10    8     7     9     12     3     25     1     4     5 ・  

  • 2行のセルの入れ替え。

     初めまして、よろしくお願いします。  セルに A B C D E F G H I J K L 1 a b c d e f 2 g h i j k l 3 m n o p q r 4 s t u v w x 5 " ・ " ・ " ・ " 100 "  という表があります。これを A B C D E F G H I J K L 1 a b c d e f g h i j k l 2 m n o p q r s t u v w x 3 " 4 " 5 " ・ " ・ " ・ " 100 "  という風に、偶数行のデーターを奇数行の後ろにつけるようにしたいと思います。無理ならば奇数行だけのデーター、偶数行だけのデーターとなるように、何かよい方法を教えて頂きたく、よろしくお願いします。

  • OCRで文字変換したいのですが。

    Brother 複合機 DCP-595CN 使用。スキャン項目の三段目 OCR:テキストデータ変換で 本の文字を読み取り wordに写しその文字を自由にフォントやサイズを変えたい。  PCは MacBook Air バージョンは Yosemite 10.11 から Hi Sierraの 10.13.8 に変えました。 以下はできてこんなところです! c c r y O w r n e a n a s h a r k k n o w s y o w % ' l t @ e ' b o y r & s @ e d , h a r d l y a b t e t o c r e d i t h i s h e a r i n g , T h e w o m a n n o d d e d , n o t l o o k i n g a t a n g r t h i n g b u t h e r s k i r t . P a u l o ' s b r e a t h e x p l o d e d " B u t t h a t ' s i m p o s s i b l e ! " T h e w o m a n p a u s e d t o r a i s e b l a c k e y e s i . n u r o n d e r , c ' Y o u h a v e n e v e r h e a r d o f m e @ " s h e a s k e d . P a u l o w a s a t a l o s s t o a c c o u n t f o r t h e w o m a n ' s c a s u a l a c c e p t a n c e o f t h e s h a r k ' s p r e s e n c e A l l k n e w s 3 h a r k s w e r e a m e n a c e ! Y e t t h i s o d d o   ※OKWAVEより補足:「ブラザー製品」についての質問です。

  • JavaScriptの配列について

    var old_array = Array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '<', '#', '/', '>', '%', '.', '*', '0', '!', '?', ':', '=', '|'); var new_array = Array('b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '<', '#', '/', '>', '%', '.', '*', '0', '!', '?', ':', '=', '|'); のような配列があり、 abcと入力するとbcd DEFと入力するとEFG 012と入力すると!23 というようなものを作りたいのですがどうすればいいでしょうか。

  • エクセル関数(追加質問)

    以前下記の内容で質問しましたが追加で解らないことが出ましたので回答よろしくお願いします。   A  B C D  E F  G H  I J  K L  M  N  O  P Q  R  S  T  U 1 名前1 80  50   51 X 54   80   85   90 51 1 90 2 141 2 7 2 名前2 79  50 X 52 X 53   88   89   91 50 2 91 1 141 1 8 このとき、      C~EのMAXをIに(×の場合は00.0で計算)      F~HのMAXをJに(×の場合は00.0で計算)      (※C~Hの前には×を入れるためのセルあり)      I,J,K共にBの数値が小さいほうが上位に来る      (※I,Jの後ろには、順位を入れるセルあり)      Kは、I+J      Lは、Kの計に対する順位      O1またはQ1が「0(ゼロ)」の時S1に「0(ゼロ)」と表示したい       は解決しましたが、追加で下記の関数をどなたかご回答ください    質問1     O1が0の時Pが空白     Q1が0の時Rが空白     S1が0の時Tが空白   以前下記の関数で回答いただいたのですが、B欄に数値が入ると空白になりません   S1: =IF(OR(O1<0,Q1<0),0,SUM(ROUNDUP(O1,1),ROUNDUP(Q1,1))-B1/10^13)   質問2    S=O+Q、T=Sの順位、U=Sに対する得点(1位=8点、2位=7点・・・以下8位=1点まで)  重複しますが、  T欄の1位にはU欄に8点、T欄の2位にはU欄に7点、T欄の3位にはU欄に6点、T欄の4位にはU欄に5点、T欄の5位にはU欄に4点、T欄の6位にはU欄に3点、T欄の7位にはU欄に2点、T欄の8位にはU欄に1点、T欄の9位以下にはU欄には空白 この場合の関数を回答お願いします。       列がずれていて見にくいです。すみません。

  • 20名で1対1で話し合う研修を6回でやる方法

    20名で行う研修で1対1で話し合う研修を合計6回でやろうとしています。 10人が誰かと話し合い、合計59組の組み合わせを6回の間で やる方法がどうしてもわかりません。 どなたか教えてください。 ちなみに組み合わせは決まっており(以下のとおりです)その組み合わせを6回以内に効率よくやりたいと思ってます。 ちなみに3回まではアナログ的なやり方で10組ずつ話し合える組み合わせはわかったのですが、 それ以降が頭がぐちゃぐちゃになってわかりません。 組み合わせは以下のとおりです。 AさんとGさん、BさんとJさん、CさんとMさん、LさんとEさん、PさんとQさん、IさんとNさん、GさんとRさん、GさんとSさん、LさんとFさん、 MさんとOさん、TさんとNさん、DさんとEさん、EさんとSさん、AさんとTさん、BさんとHさん、CさんとFさん、JさんとTさん、HさんとMさん、 FさんとQさん、TさんとOさん、AさんとNさん、BさんとEさん、CさんとKさん、JさんとKさん、HさんとKさん、DさんとTさん、IさんとOさん、 GさんとPさん、LさんとNさん、MさんとPさん、EさんとQさん、AさんとSさん、BさんとPさん、CさんとOさん、JさんとPさん、HさんとSさん、 DさんとKさん、IさんとPさん、LさんとSさん、AさんとRさん、BさんとRさん、CさんとQさん、JさんとRさん、HさんとRさん、DさんとSさん、 IさんとQさん、LさんとOさん、BさんとQさん、DさんとOさん、LさんとRさん、JさんとMさん、HさんとIさん、DさんとGさん、IさんとKさん、 GさんとFさん、MさんとNさん、EさんとFさん、FさんとTさん、KさんとNさん の計59通りです。 お力添え何卒よろしくお願いしますm(_ _)m この回答とプラスその算出方法も合わせて教えていただけると幸いです。

  • エクセルデータの並び替え

    A列に 1 2 3 4 5 6 7 ・・・・・ B列に a b c d e f g h i j k l ・・・・ と文字列があります。 これを C列に 5つずつデータをセットにして並べたいのです。 A列    B列           C列 1     a      1 a   2 b  3 c  4 d  5 e 2     b      6 f   7 g  8 h  9 i  10 j 3     c      11 k  12 l  13 m  14 n  15 o 4     d      16 p   17 q  18 r  19 s  20 t 5     e      以下同じように続く 6     f 7     g 8     h 9     i 10     j 11     k 実際のC列のデータは トマト tomato  ネコ cat   机 desk  いす chair  かばん  bag  のようにしたいのです。 関数の扱いがわからずに苦戦しています。どうぞ、よろしくお願いします。

  • MS-excel 10列毎に改行したい

    MS-excel2003で、A1~W1までデータが横並びに入力されています。 これを10列毎に改行したいのですが、マクロでどのようにやればよいでしょうか? 図解すると、、 A1 B1 C1 D1 F1 G1 H1・・・・ のデータを A1 B1 C1 D1 F1 G1 H1 I1 J1 K1 L1 M1 N1 O1 P1 Q1 R1 S1 T1 U1 V1 W1・・・・・・ と したいのです。 これをマクロで行いたいのですが、ご教授願えませんか。

  • 変換テーブルを使った、文字列置換[JavaScript]

    以下のような、変換テーブルがあるとします。 var ascii = [' ', '!', '"', '#', '$', '%', '&', "'", '(', ')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?', '@', 'A', 'B', 'C', 'D', 'E', 'F','G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[', '\\', ']', '^', '_', '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~']; var htmlChar = [' ', '!', '"', '#', '$', '%', '&', ''', '(', ')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?', '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[', '\', ']', '^', '_', '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~']; ブラウザの「ソースを見る」で、ソースを見るとHTMLのフォームのテキスト入力フィールドのvalueに特殊文字コード「'」と表示されているとします。 例;ブラウザの「ソースを見る」で、ソースを見た場合: <input type="text" value="'" /> これを変換テーブルを使って、ブラウザの「ソースを見る」で、ソースを見たときに、特殊文字(' なら '(シングルクォート)に表示させたいのですが、可能でしょうか? 変更後の例;ブラウザの「ソースを見る」で、ソースを見た場合: <input type="text" value="'" />

専門家に質問してみよう