[Excel]罫線から数字に変換する方法

このQ&Aのポイント
  • マイクロソフトのExcel2003を使っていますが、罫線から数字に変換する方法を知りたいです。条件付き書式を使って数字に罫線を引くことはできることが分かりましたが、逆の操作がわかりません。
  • 例えば、四方を罫線で囲まれたセルに対して、「8」と表示させたいです。上に罫線があるセルに対しては「1」、上と右に罫線があるセルに対しては「4」と表示させたいです。MSExcel2010やOpenOfficeでも構いませんので、どなたか教えてください。
  • Excelのセルには罫線を引くことができますが、逆に罫線から数字に変換する方法を知りたいです。例えば、四方を罫線で囲まれているセルには「8」と表示させたいです。上に罫線があるセルには「1」、上と右に罫線があるセルには「4」と表示させたいです。マイクロソフトのExcel2003を使用していますが、MSExcel2010やOpenOfficeでも構いません。お知恵をお貸しください。
回答を見る
  • ベストアンサー

[Excel]罫線から数字に変換したい

マイクロソフトのExcel2003を使ってます。 条件付き書式を使うことで、数字を書いたセルに自動で罫線を引けることは分かりました。 今回私がしたいのはその逆。「罫線から数字にする」ということです。 例えばExcelのセル上で下のように セルA1、B1、C1に対して罫線がひかれていた場合 ____________ ____________ ____________ |セルA1| セルB1 セルC1|   ̄ ̄ ̄ 四方を罫線で囲まれているセルは(今回の例ではセルA1)→8 上に罫線をひかれていたら(今回の例ではセルB1)→1 上と右に罫線がひかれていたら(今回の例ではセルC1)→4 と言った感じにセルA1、B1、C1に表示させたいです。 やり方を知っている方がいたら教えて下さい。 MSExcel2010やOpenOfficeならできるといった情報でも構いません。 よろしくお願いしますm(_ _)m

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

  • ベストアンサー
  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.1

なかなか楽しそうな話題だったので、ちょっとだけ考えてみました。 マクロを使ってしまうのがちょっと哀しいところです。 詳しい条件が今一つ掴めなかったので、 とりあえずはセルの四方の罫線を数えるマクロです。 Sub CheckLine() Dim Tag As Range Dim ChLine As Integer, i As Long   For Each Tag In Selection     ChLine = 0     For i = 7 To 10       If Tag.Borders(i).LineStyle <> -4142 Then         ChLine = ChLine + 1       End If     Next     Tag.Value = ChLine   Next End Sub マクロを走らせたときに選択されている範囲のセル一つ一つに対し、 ・とりあえず変数を初期化 ・四方の罫線を確認  (引かれていない時は-4142なので、それ以外だったら+1   これを左・上・下・右の4回繰り返し、最大は「4」) ・最後に変数をセルに代入 と言う処理です。 でもこれではどこに罫線があるのか、数字から判断できませんね。 そこで、これに各々の条件をさらに加味します。 ・左に罫線がある=+1 ・上に罫線がある=+2 ・下に罫線がある=+4 ・右に罫線がある=+8  (つまり、最大は15=四方に罫線、最小は0=罫線無し) とします。 そうすると以下のコード Sub CheckLine2() Dim Tag As Range Dim ChLine As Integer, i As Long   For Each Tag In Selection     ChLine = 0     If Tag.Borders(xlEdgeLeft).LineStyle <> -4142 Then       ChLine = ChLine + 1     End If     If Tag.Borders(xlEdgeTop).LineStyle <> -4142 Then       ChLine = ChLine + 2     End If     If Tag.Borders(xlEdgeBottom).LineStyle <> -4142 Then       ChLine = ChLine + 4     End If     If Tag.Borders(xlEdgeRight).LineStyle <> -4142 Then       ChLine = ChLine + 8     End If     Tag.Value = ChLine   Next End Sub こんな感じです。 これも範囲を先に選択して走らせます。 図は、これの結果です。 さてさて、ではこれをご要望の > 四方を罫線で囲まれているセルは(今回の例ではセルA1)→8 > 上に罫線をひかれていたら(今回の例ではセルB1)→1 > 上と右に罫線がひかれていたら(今回の例ではセルC1)→4 > と言った感じにセルA1、B1、C1に表示させたいです。 にどう応用するか?ですが、上述の通り、詳細な条件が若干不足しています。 具体的には「左はどうするか?下はどうするか?右だけの時は?」なんですけどね。 まぁ、これはコード内のIfをちょこちょこっといじってやると可能と思います。 例えば   If Tag.Borders(xlEdgeTop).LineStyle <> -4142 And Tag.Borders(xlEdgeRight).LineStyle <> -4142 Then      Tag.Value = 4   End If これで上右=4に出来ます。 これを繰り返すと良いでしょう。 ただしこの場合、条件を付けていく順番をキッチリ考えないといけません。 例えば、上右=4を入力した後に、上=1を入れてしまうと上書きされてしまいます。 ここは注意が必要です。 とりあえず、何かの参考になれば幸いです。 個人的には、CheckLine2の考え方がオススメです(笑)。

attention0
質問者

お礼

わざわざ考えてくれたみたいでありがとうございますm(_ _)m Excelの設定か関数を使えばなんとかなると思っていたのですが、 マクロ使わないとダメなんですね^^; tsubuyukiさんの回答は私がやりたいことそのものずばりだったので 大いに参考にさせていただこうと思います! 本当にありがとうございました。

関連するQ&A

  • excel2000罫線の引き方について

    excel95から2000にバージョンアップし、罫線の引き方が かわり作業能率が落ち、困っております。 たとえばA1,A2セル(たてに二つのセル)のどちらの セルにも、いっぺんにセルの下辺にのみ罫線を引きたい場合 95の場合:2つのセルを選びツールバーの下罫線(「 _ 」 というようなアイコン)を押すとどちらのセルにも罫線がつく 2000の場合では、同じようにしたら下のセルにしか罫線が 引けません(この場合はA2セル)。 このようにしたい場合はいちいち、右クリック→セルの 書式設定→罫線で現在処理を行っていますが、他にいい方法 はありませんでしょうか。 また、セルを結合し中央揃えの場合も同様で使い勝手が悪いです。 あきらめるしかないのでしょうか。

  • 罫線と罫線の間に絵を入れてWEBにすると罫線が太くなる(Excel2002)

    Excel2002です。 A1~C1 A3~C3のセルの上部に、罫線(細)を引いています。  ABC 1─── 2 3─── その罫線で囲った中(A2~C2)に、絵を入れています 。 Excel画面上では、綺麗に絵が入っているのですが、それをWEBに保存してIEで見た時、上部の罫線は2倍ぐらい太い罫線になっていました。 絵のほうをどんなに小さくしても、上部の罫線は必ず太くなってしまいます。 原因が分からず困っています。 対処法を教えてください。 宜しくお願いします。

  • Excel2003 書式設定の罫線では表示されているのに、セルの罫線が

    Excel2003 書式設定の罫線では表示されているのに、セルの罫線が印刷されません。 初めまして。 似たような質問がないか探しましたが無いようなので質問します。 仕事でExcel2003を使っているのですが、以下のような表を罫線で囲ったところ 文字の入ったセル以外右端の罫線が印刷されなくなってしまいます。 |文字|文字|文字| |文字|文字|  |←この右端だけ罫線が印刷されない |文字|文字|文字| 画面や書式→罫線で見ると罫線が表示されているんですが、 印刷プレビューや実際に印刷すると罫線が表示されていなく・・・ 空白セルにスペースを入れると印刷されるようになるのですが、 表の数が多いのでとても効率が悪いのです。 原因や何か良い対処法ないでしょうか?

  • EXCEL2000 VBA レコードの入っているセルにのみ罫線

    EXCEL2000です。 CSVファイルを取り込んでエクセルシートに貼り付け(値だけを貼り付け)、罫線を受けて書式を整えるマクロを記録したいと思っています。 が、読み込むファイルのレコード数が毎日違う(10から100件程度)ので、取り込んだエクセルシートのセルに罫線がうまくつけられません。先に200程度セルに罫線をつけておく事も考えたのですが、そうすると印刷時にレコードのない部分まで印刷されてしまいます。一枚の紙に15件ほどしか入らないので、10の時に200だと何もレコードの入っていない紙が13枚ほど出てきてしまうのです。 レコードは横もちなのですが、ところどころ虫食いもあります。ただ、必ずB列だけはレコードがあります。 いくつかロジックを考えてみました。 1)Bのセルがnullでなければ、その横A1-D1までに罫線を引く。Bのセルがnullになったら罫線は引かない。それぞれセルごとに罫線が要ります。 2)Bのセルがnullでないセルまでを選ぶ方法。印刷のオプションに選択した範囲を印刷、というのがあるので、レコードが入っている範囲を選択する方法があればそれでもできるかなと。 どなたか教えていただければ幸いです。また、他に案があればよろしくお願いします。

  • EXCEL関数

    フィルターで分類するために日付を揃えたのは良いんですけど同じ日の数字が出てくると見栄えが悪いので、消したいのですが、わかり辛いと思いますので例を書きます (| |はセルと思ってください) |5/25| A | |5/25| B | |5/25| C |   ↓ |5/25| A | | | B | | | C | っていう感じにしたいんです。 上に表示されている文字と同じ文字の場合書式の色を白に変えればフィルターが使えるんじゃないかなと思ったのですが出来るのでしょうか? 関数又は知らない機能があると思うので教えてください。

  • Excel2010上の罫線

    以前作ったExcelの表を見ましたらA列とB列の間に罫線が下方無限大?に入っています。自分で作っておきながらこの罫線の消し方を忘れてしまいました。教えてください。

  • 【Excel】罫線の作成

    Excel2003を使用しています。 罫線を引く際、線を引きたいセルを選択して、罫線メニューから「外枠」や「格子」等のボタンを押せば、簡単に引くことができますが、同じようなボタンを独自に作ることはできませんか? 希望としては… 3行4列のセルに(例えばA1:D3とした場合) A1:D1→上罫線 A3:D3→上罫線+下二重罫線 複数のシートに渡って、この罫線を引くのですが、選択するセルが違うので、作業グループではできません。罫線メニューのボタンをクリックするのと同じような操作で、罫線が引けると嬉しいのですが。。。 よろしくお願いします。

  • 【Excel】一番左の罫線は非表示ですが仕方ないのでしょうか?

    Excel2000(Win-XP)使用者です。 罫線を引くときいつも思うのですが、一番左と一番上の罫線はあるのかないのかわからず不便に思います。 例えば一番左上のセル(R1C1)を罫線で囲む場合、上と左の罫線は見えませんよね? そこで仕方なく1行1列余分な行と列を挿入して見えるようにしている訳ですが、もっといい方法がありはしないか・・・?と思い質問させていただきました。 なにかヒントがありましたらよろしくお願いいたします。

  • ExcelVBA 異なる罫線の設定が取得できない

    VBAにて罫線の設定を取得しようとしているのですが、思った結果にならないので、ご質問させてご質問させて頂きたく思います。 エクセルの罫線の設定は、罫線ではなくセル単位で行われています。 なので、四方に罫線が設定されているセルAと、それに隣り合う、罫線が設定されていないセルBという状況があり得ます(表示はセルAの罫線が表示される)。 自分は「セルBに罫線が設定されていない」事を判別しようとしているのですが、LineStyleで設定を取得しても、セルAに設定されている罫線が取得されてしまいます。 セルBをコピーした場合、罫線は描かれないので、セルBに罫線が設定されていないのは確かな筈です。 罫線の設定を取得した場合、エクセルの仕様では、そのセルの設定ではなく、見た目上の設定が取得されるのでしょうか(セルの書式設定から確認した時のように)? またその場合、罫線の有無を判別する良い方法はあるのでしょうか? (自分が思いつくのは、別の場所にそのセルをコピーして罫線をチェックする方法ですが、これでは時間がかかりすぎてしまいます) どうか皆様のお知恵を貸して下さい。

  • 罫線の消去

    Excel2002です。 ある表データで格子状に罫線が引いて あります。 その一部のセルに斜め罫線が入っていますが、 その斜め罫線だけを消去したいのです。 ツールバーの罫線ボタンで「罫線の削除」を 利用しても メニューバーの書式より「セルの書式設定」より 「なし」で操作しても、そのセルの枠罫線まで 消えてしまいます。 対処の仕方をお教えください。

専門家に質問してみよう