- ベストアンサー
条件付書式*EXCEL2003
クリアファイルのインデックスラベルをエクセル2003で作成しています。 A B C D 1 01 02 ・・・・・・ 2 田中 たなか 鈴木 すずき ←縦書き 3 08 09 4 *志賀 しが 但 たん ちょっとわかりずらいかもしれませんが、A1に番号 A2に氏名(縦書きで入っています)B2ふりがな(縦書きで入っています) A1~B2で一人分、A4サイズのラベルシールに印刷して使おうと思っています。 そこで氏名の前に*が入っているセル一人分に条件付き書式で色を付けたいんですが、たとえば、A4の氏名に*が入っているので、A3~B4に色を付けるということです。 一人分なら以前こちらでおしえていただいた=ASC(LEFT($A$2,1))="*"で色つけることができたのですが、書式のコピーをすると、絶対参照で$A$2の部分をひとつずつ編集しなければいけません。百何十名分作らないといけないので、効率よくコピーする方法ないですか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
1人分のセル4つに条件付書式の式=ASC(LEFT(A2,1))="*"と色を設定 このとき、=ASC(LEFT($A$2,1))="*"では無く=ASC(LEFT(A2,1))="*"とすること あとは、1人分のセルを選択し右クリックで右方向にフィル、書式のコピー(フィル)選択 選択状態のまま、右クリックで下方向にフィル、書式のコピー(フィル)選択 最初、1人分の条件付書式さえ設定してしまえば、フィルで書式をコピーするだけなので、たいした作業量ではないと思いますが 絶対参照と相対参照は、よく理解して覚えておくと良いと思います
その他の回答 (3)
- mitarashi
- ベストアンサー率59% (574/965)
#2です。 データがA1から、ひとかたまりで存在する場合、下記のコードでできると思います。(XL2000で確認) Sub test() Dim targetRange As Range, targetCell As Range Dim i As Long, j As Long Set targetRange = Range("a1").CurrentRegion For i = 2 To targetRange.Rows.Count Step 2 For j = 1 To targetRange.Columns.Count Step 2 Set targetCell = targetRange.Cells(i, j) If Left(targetCell.Value, 1) = "*" Or Left(targetCell.Value, 1) = "*" Then targetCell.Offset(-1, 0).Resize(2, 2).Interior.ColorIndex = 4 End If Next j Next i End Sub
お礼
ありがとうございました。せっかく考えていただいたのに、使いこなせませんでした・・・・
- mitarashi
- ベストアンサー率59% (574/965)
VBAで済ませたい誘惑に駆られるところですが、1セル分の条件付書式設定を全セルに複写して成立する式は、不可能ではないでしょうが、面倒くさいものになると思います。 A1:B2に、相対参照でA2セルの文字の頭に*がついていたら、色が付くような式をそれぞれに条件付書式設定し、4セルブロックを指定して、別のブロックに書式コピー。次いでコピー元・先を含めて8セルを選択して書式コピー、次は16セルをまとめて書式コピーというように地道にやっていけば、10回目には512人分まとめて書式コピーできますので、我慢してやって下さい。
補足
VBAでできるんですね。さほど難しくなかったら、教えていただけませんか?
- Cupper
- ベストアンサー率32% (2123/6444)
相対参照にすれば良いのでは? 条件付き書式を設定したい範囲を選択して、 選択範囲内で白く表示されている場所がA1セルになるようにし =ASC(LEFT(A1,1))="*" でOK 他のセルにはちゃんと自身のセルを参照するような形の数式になっていますよ 書式をコピーする手間すら不要です
補足
回答ありがとうございました。 やってみたのですが、漢字の氏名部分しか色が付きません。 A2に*が入っていたら、A1~B2まで色が付くようにしたいのですが・・・やり方が間違っているのでしょうか?
お礼
ありがとうございました。わかりやすく教えていただきありがとうございました。!!