- 締切済み
エクセルについて
エクセルにおいて、下記のように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の列がズレていますが、行も列も同じばしょのままでお願いします。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- Yosha
- ベストアンサー率59% (172/287)
>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/17069)
こんなのVBAでやっても意味ない。操作で一発で出来るのだから。 (1)VBAの勉強なら条件付き書式の操作をして、マクロの記録をとって勉強すればよい。 ほかに (2)全セル繰り返し法(For Each In 範囲) (3)各行各列全セル繰り返し法 For i=1 to XX For j=1 to YY で書式を白フォント職にするとか、空白に変えてしまうとか。 --- これらの範囲やxx、yyを実情データからどうして割り出すか勉強したら。応用は拾い点。
度々すみません。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
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
- 中京区 桑原町(@l4330)
- ベストアンサー率22% (4373/19606)
条件付書式で [セルの値が」[次の値の間以外」[1]と[5] このようにして、書式で文字の色を「白」にするのはどうですか?
- asapinya
- ベストアンサー率36% (40/109)
見当違いの回答でしたらごめんなさい。 0を見えなくするという事でよろしいのでしょうか? それでしたら、条件付書式で白にできますよ。 今手元にExcelがないので、具体的な場所などは書けないのですが、条件として内容が0ならば、書式で文字色を白に・・・ こんなないようでOKですよ。
補足
ご回答いただきありがとうございます。 [1]と[5]以外を白文字にすると、[2][3][4]が消えてしまいます。また最後に連続で存在する[5]が残ってしまいました…。