その他インターネット

エクセル嫌いのための「趣味のエクセル」

数字ぎっしりの表計算ソフト、大事だとわかっていても、敬遠してしまう。そんなエクセルへの敵討ち。エクセルをおもちゃに遊んでしまいましょう。メルマガを見ながら、エクセルにひとつずつ入力していると、意外に可愛いやつになってくるかも。

全て表示する >

「趣味のエクセル」 No.92 2010/12/21 漢字ナンクロツール(3)

2010/12/21


今回の内容

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
   
◎ 漢字ナンクロツール(3)

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

         OOO 今日のお遊び OOO

******** 漢字ナンクロツール(3) *********

★ 前回までにやったこと 

((( カレンダーで遊ぶ )))
(((  スタートリック  )))
((( 暑中見舞にひと工夫 )))「スピードくじ」を作る
((( 暑中見舞にひと工夫 )))気配り案内状を作ってみる
((( 暑中見舞にひと工夫 )))はがき裏表を作成する
((( グラフ機能を使って絵を描く )))グラフで作る幾何学模様
((( グラフ機能を使って絵を描く )))「帆船」を描く
((( ブロックくずしを作る )))一時休止です。しばらくお待ち下さい。
((( ナンバープレースを解く )))
((( 3択トレーナー ショートカットキー・マスター )))
((( 万華鏡もどき )))
((( ユーザー定義の書式を拡げる ))) 選挙啓発ポスター
((( セイムセットを解く )))
((( フエル・カレンダー )))
((( 「日報」作りを楽しむ )))
((( カレンダーの写真を自動変更 )))
((( 漢字ナンクロツール )))
1 漢字ナンクロとは
2 ツールのねらい
(1)盤面の中から、指定された番号の入っているます目をみつけ場所を表示
  する。
(2)その番号の場所に推理する漢字を表示してみる。
(3)推理が正しいと判断した時、その場所に正しい漢字を書き込む。
(4)いったん正しいとしたが、疑問が出た場合、その場所を見つけて表示 
  し、書き直しできるようにする。
3 ツールを動かす
(1)回答シートで問題を解いてみる

  はじめての方は申し訳ありませんが、バックナンバーを見てたどってみて
 ください。
                        ───→ http://homepage3.nifty.com/hcho/

===================================
         OOO 今回のお遊び OOO

******** 漢字ナンクロツール(3) *********

4 ツールを動かしてみる

 取りあえず、ツールを動かしてみます。ホームページの「作品集」→「新館
入口」→「漢字ナンクロツール」へたどり、表紙画像をクリックして「漢字ナ
ンクロツール」を起動してください。

  *前回、本文で紹介するべきでしたが、この作品で使っている問題は
   「アイア出版 『漢字王』No.17」からの引用です。

  *前回と「回答シート」の画面が変わっています。「基本データ」という
  ワークシートも増えています。
   いくつか手直しをしました。
   <1>回答シートの操作性を良くするために、シート保護を掛けました
      が、新しい問題に変えるたびにいちいちシート保護を解除してま
      たかけるといった手間がかかることから、基本的なデータは「基
      本データ」シートに入力し、「回答シート」画面ではそれを表示
      するだけにしました。
   <2>回答済みの番号を表示する表を手直しし、当てはめた漢字も表示
      するようにしました。
   <3>このパズルのルールで「問題に使用した漢字は回答として使えな
      い」という決まりがあるのですが、それを指摘する表示を付け加
      えました。今は見えていませんが、試しに「音」という漢字を、
      どれかの番号にはめてみて下さい。
      赤い文字で「問題で使用済」という表示が出ます。
      ついでに問題に使ってある漢字が目立つように書式設定しまし
      た。
   <4>「回答クリア」というボタンを追加しました。これはこれまで当
      てはめた回答を一気に消すためのものです。途中でわからなく
      なって初めからやり直したいとき、別の問題に変えたいときなど
      に使います。
   <5>「隠れ黒マス」という項目が増えています。これは「ホワイト漢
      字ナンクロ」というパズルに対応したもので、熟語の前後につく
      黒マスを表示せず、これにも番号を当てるというものです。
      「チェック表のうち、20個のマスには、漢字でなく黒マスが入
      ります」というように出題されます。通常はここの数値は0です
      が、ホワイトの場合は、この例であれば「20」が入ります。下
      に「黒マス」という表示欄がありますが、ここにはチェック表に
      当てはめた黒マスの数字が表示されます。

(2)もう一度操作方法をまとめます。

 a 「回答」欄の「チェック表番号」の入力用セルに漢字に変えたい番号を
  入力します。このセルは半角数字だけしか入力できないように設定してあ
  ります。

 b 数字を確定して「enter」キーを押すと、下の「文字」入力用のセルが
  選択されます。同時にその番号の入ったセルが赤い線で囲まれて浮き上が
  ります。

 c 文字入力用のセルはひらがなしか入力できないように設定してありま
  す。ここに上の番号に当てはめたい漢字を入力し「enter」キーを押しま
  す。

 d すると、選択セルが上の番号入力用に変わります。同時に赤い線で囲ま
  れたセルにその文字が緑色で表示されます。

 e 実際に漢字を表示して、これでよいと確信が持てたら「確定」ボタンを
  クリックするか、「ctrl」キーを押しながら「k」キーを押して確定しま
  す。確定すると「文字」入力用のセルの漢字は消されます。

 f 確定する前に、この漢字に不満がある場合は、確定せずに別の番号を押
  すか、「enter」キーを押して文字入力用のセルに移り、ちがう漢字を入
  力してみます。

 g もし確定後に不満に思った場合、番号がそのままであれば、文字入力用
  セルを選択して、空白のまま「enter」キーを押して再度確定ボタンをク
  リックすると入力した文字がクリアされます。

 h 回答が進んできて、前に入れた漢字を変更したい場合は、回答済みの表
  からその漢字の番号を調べ、その番号を「チェック表番号」入力用セルに
  入力したら、最初の入力と同様に入力可能になります。

 i 実際の回答手順は人それぞれですが、私は次のように進めました 。

   1 (4)予想熟語=「音楽、楽器」 漢字=楽
   2 (56)予想熟語=「交響楽」   漢字=交
   3 (1)予想熟語=「音楽家」   漢字=家
   4 (58)予想熟語=「楽天家」   漢字=天
   5 (7)予想熟語=「道楽者」   漢字=道
   6 (8)予想熟語=「発明家」   漢字=発
   7 (45)予想熟語=「出発進行」  漢字=出
   8 (46)予想熟語=「出発進行」  漢字=行
   9 (27)予想熟語=「行楽地」   漢字=地

  こんな調子で、熟語の手がかりが次々と増えて行きます。もっと増えてき
 て、左最下段の「課題熟語」のところの漢字が埋まってきますと、逆にこれ
 もヒ ントになってきます。

5 他のシートの説明

 a 「基本データ」シート

   すでに説明は済んでいますが次の各項目を手入力します。

     問題枠の縦マス、横マスの数
     チェック表に当てはめる漢字数
     ホワイト漢字ナンクロの場合の黒マスとするべきマスの数
     最後に、出来上がったチェック表を頼りに完成させるよう出題され
     ている熟語に相当する漢字のチェック表番号(熟語と熟語の境目は
     0とする)

   データを入力するセルにはそれぞれ項目名を名前に定義しています。

 b 「問題」シート、「問題データ」シート

   「問題」シートには二つの表があります。

   1行目から、21行目までは、本に掲載されている形と同じマス目が表
  示される場所です。もとの問題と同じ場所に漢字と数字を表示していま
  す。漢字と数字のデータは、次のワークシート、「問題データ」から取っ
  てきていますが、いきなりこの表に問題を転記してもかまいません。とい
  うか、もともとはここにいきなり書いていたのですが、入力しにくいので
  データと表示を別けました。

   このツールで一番のネックは「問題の入力」です。もともとは本、雑誌
  に載っているものを、解きやすいようにエクセルに移すというコンセプト
  ですから、手入力するしかありません。スキャナーで撮って機械に加工さ
  せるという方法もありそうですが、大きい表ではかなり煩雑になりそうな
  のと、いまひとつ変換精度に信頼性が少ないので、踏み切れません。機会
  があれば挑戦してみたいと思います。

   問題表のマス目には、次のような式が入っています。式の入ったセル
  は、今表示されている表よりも右方向、下方向に余分に設定しています。

=IF(OR(ROW()>縦方向マス目の数,COLUMN()>横方向マス目の数),"",VLOOKUP((ROW()-1)*縦方向マス目の数+COLUMN(),問題データ,2,0))

  IF(OR(ROW()>縦方向マス目の数,COLUMN()>横方向マス目の数),"",

   最初のこの式は、セルの行番号、列番号が、基本データに設定した「縦
  方向のマス目の数」、「横方向のマス目の数」を超えた場合は空白にす
  る、という命令です。

   *「ROW()」、「COLUMN()」は、この関数の入っているセルの行番号、
   列番号を表します。この関数を使うとセル「A1」なら行番号=1、列番
   号=1という数値を返しますので、列番号を使った計算が成り立ちま
   す。Aから順に1、2、3と数値を当てて行き、AAなら27、BAなら5
   3と増えて行きます。

   この式が成り立つと、表は「A1:Y20」の範囲を越えると空白が表示され
  ることになります。

   その範囲内ではどうなるかというと、残りの式

  VLOOKUP((ROW()-1)*縦方向マス目の数+COLUMN(),問題データ,2,0)

  が実行されます。「VLOOKUP」という関数は、表の左端の列をキーにし 
  て、表の中の値を指定するもので「VLOOKUP(キー,表,表の列番号,検索の
  型)」という書式で使用します。今回の式では、キーになる数が複雑な式
  になっていますので後で説明します。

   「問題データ」というのが参照する表ですが、これはワークシート「問
  題データ」の列A:Bにつけた名前です。実際に参照するのは「問題デー
  タ」シートのA列とB列です。

   ワークシート「問題データ」を見ると、A列には1から500の番号、
  B列には漢字や数字、黒いマスが並んでいます。

   式の次のファクター「2」が参照する表の列番号ですから、A列の数字
  をキーに、B列の漢字や数字を指定する、というのがこの式の意味になり
  ます。

   キーになる数字を表す式です。

   (ROW()-1)*縦方向マス目の数+COLUMN()

   セルが「A1」だと「(ROW()-1)」は0、「C5」4になります。
   「縦方向マス目の数」は20と決まっています。
   セルが「A1」だと「COLUMN()」は1、「C5」3になります。

   したがって式全体では、セルA1の場合は(1-1)*25+1=1で、キーは「1」
    ですから、表を参照するとここに表示されるのは「33」です。

   セルC5ですと(5-1)*25+3=103で、キーは103、入るのは「■」です。

   同じ式で、入っているセルによって値が変わるだけですから、一つのセ
  ルで式をつくり、ほかのセルにコピーするだけで済みます。セルA1にこの
  式をいれ、右方向に30列ほどコピーして行き、さらにそのまま下方向に
  21行コピーしますと、縦にずらっと並んだ「問題データ」が、20×25の
  表に格納されます。

    *最後の「検索の型」=「0」は、普通は「FALSE」とするところで
    す。検索の型は「TRUE」=1、か「FALSE」=0のどちらかで指定し
    ます。「0」の場合は、キーで指定した値が表の左端になければエ
    ラーになります。「1」(TRUE)の場合ですと少し大まかになって、
    指定されたキーがなければ、表を上から順番に見て最初にでてきた
    キーより大きい値のあるセルの一つ手前のセルの値ををキーにして検
    索します。この場合、キーとなる値の入った左端の列は、値の大きさ
    の順に並んでいないと、とんでもない数字が返されてきます。


   その下に、上と同じスペースをとって、漢字に変換する番号が入力され
  たとき、その番号の入っているマス目を囲む赤い線を表示するための表を
  作っています。

   この表は上の表を直接参照しています。
   セルA23には次の式が入っています。

   =IF(A1="","",IF(A1=回答するチェック表番号,当てはめる文字&"",""))

  「回答するチェック表番号」というのは「回答シート!$B$9」につけた名
  前で、操作手順a、bの「この番号の漢字を決めたい」と指定する数字で
  す。
   「当てはめる文字」は「回答シート!$B$10」につけた名前で、操作手順
  cを実行するセルです。はじめは空白ですが入力するとその文字が表示さ
  れる場所です。

   もしこの表のこの位置に相当する上の問題表のセルの値が入力された数
  字と同じなら、その下の漢字を入力するセルの値を表示する、という意味
  です。漢字を入力するセルが空白の場合は、0が表示されるので、それを
  避けるために「IF(回答シート!$B$10="","",」としています。

   この表には「条件付書式」を設定しています。

   条件1 数式が =A1=回答するチェック表番号
   書式  パターン=色なし
       罫線  色=赤、4辺を囲む
       フォント スタイル=太字、色=濃い緑
       フォント名とサイズは条件付書式では指定できないので通常の
       書式設定で「MS明朝」「20」に設定しています。

   この二つ目の表はコピーして、「回答シート」に「図のリンク貼り付
  け」で回答表示の表と重ねますので、セルの高さ、幅は共通にします。

   「問題データ」シートはすでに触れましたが、手入力で、印刷物を転記
  します。データ数が大量で、20×25の問題では500個のデータを入力しな
  ければならないので、少しだけ工夫しています。

    1 列Aの連番は次の式で縛っています。
      セルA1の場合「=IF(B1="","",ROW())」、つまりとなりのセルに
     入力されない場合は空白にする、ということで、ひたすら列Bに入
     力するだけで番号が入ってくるようになっています。

    2 途中でわからなくなるのを避けるため、条件付書式を使って、奇
     数行目の番号の入ったセルにベージュ色、行末の番号のセルには薄
     緑の色がつくように設定しています。どのような条件設定をしてい
     るかは本筋から外れますので触れません。解析してみてください。

 今回はここまでとします。

----------------------------------------------------------------------
┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌─┐┐┐┐┐┐┐┐┐┐┐┐┐┐┐┐┐
┌┌───────────────────────────────┐┐
 │    「趣味のエクセル」REVIVAL(62)    │
└└───────────────────────────────┘┘
└└└└└└└└└└└└└└└└└─┘┘┘┘┘┘┘┘┘┘┘┘┘┘┘┘┘
===================================
         OOO 今回のお遊び OOO

***********  万華鏡もどき(3) ************

6 書式設定をする

 a セルA1に条件付書式を設定する

   スタートリックの時と同じように、一つのセルに書式設定し、それを全
  体にコピーすることにします。設定するのはセルA1です。

 (1)セルA1を選択します。

 (2)メニューバーの「書式」→「条件付き書式」をクリックして、条件付
   き書式の設定画面を出します。

 (3)条件(1)を次のように設定します。
     セルの値が
     次の値に等しい
     1
     書式  フォント  色=青
         パターン  色=青
         罫線    色=白

 (4)条件(2)を次のように設定します。
     セルの値が
     次の値に等しい
     2
     書式  フォント  色=赤
         パターン  色=赤
         罫線    色=白

 (5)条件(3)を次のように設定します。
     セルの値が
     次の値に等しい
     3
     書式  フォント  色=黄
         パターン  色=緑
         罫線    色=白

 b セルの表示形式をユーザー設定する

   条件付き書式では、セルの色を塗りつぶすのに、3種類しか設定できま
  せん。そこで、スタートリックで星の形を表示したのと同じように、数字
  によって特定のキャラクターを出すことで、バリエーションを増やしてや
  ります。

 (1)セルA1を選択します。

 (2)右クリックして出てきたメニューから「セルの書式設定」を選んでク
   リックします。

 (3)「表示形式」のタブをクリックして、一番下のユーザー設定をク
   リックします。

 (4)種類(T)の下の入力スペースに

    [=4]"■";[=3]"/";;

    と入力します。

 (5)続いて「フォント」のタブをクリックして、「色」をオレンジに、
   「サイズ」を12に設定して下の「OK」ボタンを押します。これでセ
   ルの値が4の時オレンジの「■」が、3の時は緑色のセルの中に黄色い
   「/」が表示されます。

 c セルA1の書式を全体にコピーする

   こうやって設定した書式を、セルA1:AN40の範囲にコピーしてやりま
  す。これまでこのような時にはセルA1からオートフィルでコピーしていき
  ましたが、今回はコピー先にすでに式が入っていますので、オートフィル
  するとその式が消えてしまいます。そこで書式だけを貼り付けるやり方を
  行います。

 (1)セルA1を選択して、コピーボタンを押します。

 (2)次に「Shift」キーを押しながらセルAN40をクリックします。

 (3)メニューバーの「編集」→「形式を選択して貼り付け」→「書式」と
   クリックしていきます。

 (4)ためしにセルA4に2をキーボードから入力してみてください。

 今回はここまでとします。次回基本領域に乱数を使って適当に数字を入れる
マクロを作ってみます。
===================================

編集後記:最後までおつきあい下さりありがとうございます。

今年もいよいよ押し詰まってきました。

今年の漢字は「暑」だったそうですが、この異常気候の時代、これを使うと来
年は何を使うかと心配になってきます。

この異常気象=温暖化の原因として、経済活動によって排出される二酸化炭素
の蓄積が指摘されて久しくなります。

二酸化炭素の排出そのものは自然の生命活動で行われるものですから異常な現
象ではありません。自然のバランス以上の二酸化炭素の排出も、植物の生命活
動で吸収される範囲では大気中に蓄積されることはありません。

ですから、大気中に二酸化炭素が蓄積される要素は二つあることがわかりま
す。その一つは森林破壊です。この中には水中植物の減少も含める必要があり
ます。これは温暖化が進むにつれて加速されている部分と、水質汚染によって
もたらされるものとが絡み合っています。

もう一つは、自然循環から排除されていた炭素を人工的に酸化させ、大気中に
放出する、つまり化石燃料の利用による二酸化炭素の増加で、近代文明が唯一
の源泉である二酸化炭素の排出です。

近代文明がもたらしたものであるから、文明の力で解決が可能だ、というのは
正しい方向性であると思います。

ここで考えなければならないのは、今の文明のうちのどの要素で解決するのか
ということです。

最近よく見るCMに「原子力発電はCO2を出さない」というのがあります。
確かに原子エネルギーは、直接的には、炭素を酸化させることによって得られ
るものではありませんから、事実を述べています。

しかし、原子力発電は、二酸化炭素は出さないが、放射性廃棄物を出します。
この廃棄物から出される放射能が人体に直接当たると、人体の健康が損なわれ
ることは周知の事実です。放射性物質はその危険性が半減するまでに数万年を
要します。無論、人体だけでなく他の生命体にも悪影響を及ぼす可能性があり
ます。

だから、この廃棄物を安全に処理することが必要で、いろいろ研究されていま
すが、「地上の人間に影響のない場所に隔離する」という以上の案は出てきて
いません。地下深く埋める、海の底に沈める、宇宙空間に捨てる、どの方法を
とってもあの産業廃棄物を垂れ流して恐ろしい公害を引き起こした時代の廃棄
物に対する考え方から進んでいません。

そればかりでなく、それが完全に無害になるまで、悪影響を及ぼさないよう数
万年、いや数十万年、完璧に管理しなければならないのですが、人類が自然に
対して数十万年管理体制を維持するという保証はありません。もしするとして
もそれに必要な経費は想像もできないほど膨大になります。

何度も繰り返しますが、原子力発電は、地球温暖化を引き起こした経済優先の
科学技術利用という、現代文明の負の側面に属するものであり、私たちが引き
継ぐべきものではありません。

政府は、日本の原子力発電の技術を途上国に売り込んで、一儲けしようとして
います。これは目先の利益に目がくらんで武器輸出をする「黒い商人」と基本
的に同じ発想です。将来にわたって安全を確保するために世界がどれだけ負担
を強いられるかを考えれば、安直にできない商売です。民主党はこんな反人道
的な政策はやめるべきだと私は思います。

===================================

規約に同意してこのメルマガに登録/解除する

メルマガ情報

創刊日:2005-07-19  
最終発行日:  
発行周期:不定期  
Score!: - 点   

コメント一覧コメントを書く

この記事にコメントを書く

上の画像で表示されている文字を半角英数で入力してください。

※コメントの内容はこのページに公開されます。発行者さんだけが閲覧できるものではありません。 コメントの投稿時は投稿者規約への同意が必要です。

  • コメントはありません。