その他インターネット

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

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

全て表示する >

エクセル嫌いのための「趣味のエクセル」 No.84 2008/11/11 パレット管理日報 6

2008/11/12


今回の内容

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
   ◎ 「日報」作りを楽しむ(6)
   ◎ えっちょ流用語解説 「いのち」8(休みです)
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

         OOO 今日のお遊び OOO

********** 「日報」作りを楽しむ(6) **********

★ 前回までにやったこと 

((( カレンダーで遊ぶ )))
(((  スタートリック  )))
((( 暑中見舞にひと工夫 )))「スピードくじ」を作る
((( 暑中見舞にひと工夫 )))気配り案内状を作ってみる
((( 暑中見舞にひと工夫 )))はがき裏表を作成する
((( グラフ機能を使って絵を描く )))グラフで作る幾何学模様
((( グラフ機能を使って絵を描く )))「帆船」を描く
((( ブロックくずしを作る )))一時休止です。しばらくお待ち下さい。
((( ナンバープレースを解く )))
((( 3択トレーナー ショートカットキー・マスター )))
((( 万華鏡もどき )))
((( ユーザー定義の書式を拡げる ))) 選挙啓発ポスター
((( セイムセットを解く )))
((( フエル・カレンダー )))
((( 「日報」作りを楽しむ )))

1「パレット管理日報」を材料に、楽しく入力できる日報
2 パレット管理の予備知識
 a パレットとは
 b パレット管理の目的
 c パレットの動き
 d サンプルデータで表を作る
3 入力方法を工夫する
 a データを入力するセルを目立たせる
 b 入力モードを自動的に変更する
 c キーになる項目名は「リスト」から入力
4 新しいワークシートを自動生成する

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

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

******    「日報」作りを楽しむ(6)    ********



 c 入っているデータをクリアする

   新しいシートができましたが、そのシートには前日分のデータがそのま
  まくっついてきているので、それを消去する必要があります。

   これも毎回のことなので、新しいシートを作る時いっしょにクリアして
  しまえば楽になります。

   試しに、1月8日のワークシート「08.01.08パレット管理表」のデータ
  部分を消してみて、それをマクロ記録してみます。

   次のマクロは、「空パレット」欄のデータ入力部分をクリアした操作を
  記録したものです。

Sub データクリア()
'
' データクリア Macro
'
    Range("B4:D6").Select  '1工の項目、入数、出数のセルを選択
    Selection.ClearContents '選択した範囲をDeleteキーで消す
    Range("B8:D10").Select  '2工の項目、入数、出数のセルを選択
    Selection.ClearContents '選択した範囲をDeleteキーで消す
    Range("B12:D14").Select '包装場の項目、入数、出数のセルを選択
    Selection.ClearContents '選択した範囲をDeleteキーで消す
    Range("B16:D21").Select '製品倉庫の項目、入数、出数のセルを選択
    Selection.ClearContents '選択した範囲をDeleteキーで消す
    Range("B23:D29").Select 'パレット倉庫の項目、入数、出数のセルを選               '択
    Selection.ClearContents '選択した範囲をDeleteキーで消す
End Sub

 d 記録内容を修正する

   このマクロプログラムの

    Range("B4:D6").Select
    Selection.ClearContents

  の部分は

   Range("B4:D6").ClearContents

  のように、1行にまとめることができますから、次のように書き換えるこ
  とができます。

Sub データクリア()
'
' データクリア Macro
'

'
    Range("B4:D6").ClearContents
    Range("B8:D10").ClearContents
    Range("B12:D14").ClearContents
    Range("B16:D21").ClearContents
    Range("B23:D29").ClearContents
End Sub

   「Ctrl」キーを押しながら、消去する範囲をあらかじめ全部選択してか
  ら、「Delete」キーを押す方法があります。この操作を記録すると次のよ
  うになりました。

Sub データクリア2()
'
' データクリア2 Macro
'
    Range("B4:D6,B8:D10,B12:D14,B16:D21,B23:D29").Select
    Selection.ClearContents

End Sub

   これも

Range("B4:D6,B8:D10,B12:D14,B16:D21,B23:D29").ClearContents

  と、1行にまとめることは可能です。

   「使用パレット」の欄は列F〜列Hの範囲を使っていますから、これにならって

  Range("F4:H6,F8:H10,F12:H14,F16:H21,F23:H29").ClearContents

  とすれば、使用パレットの前日データが消去されます。

   同様に、「他社パレット」のデータ消去も

  Range("J4:L6,J8:L10,J12:L14,J16:L21,J23:L29").ClearContents

  で可能です。

   したがって、マクロプログラム「データクリア2()」を次のように書き
  換えることによって、新しいシートの古いデータはすべてクリアすること
  ができます。

Sub データクリア2()
'
' データクリア2 Macro
'
    Range("B4:D6,B8:D10,B12:D14,B16:D21,B23:D29").ClearContents
    Range("F4:H6,F8:H10,F12:H14,F16:H21,F23:H29").ClearContents
    Range("J4:L6,J8:L10,J12:L14,J16:L21,J23:L29").ClearContents

End Sub

   このマクロプログラムを、新しいワークシートを作ると同時に実行させ
  るには、前に作ったマクロ「新シート作成」の最後のところに

    データクリア2
  
  と付け加えます。

'-------ここから------------
Sub 新シート作成()
'
' 新シート作成 Macro
'
' Keyboard Shortcut: Ctrl+w
'
    wnm = ActiveSheet.Name '今開いているワークシートの名前を変数wnmに
              '取り込んでいます
    nmdat = Left(wnm, 8)  '取り込んだ名前の日付部分だけを変数nmdatに
              '取り込みます
    nmtl = Right(wnm, 7)  'ワークシート名の後半部分「パレット管理
              '表」の文字列を変数nmtlに取り込みます
    odaty = "20" & Left(nmdat, 2)'日付の年の部分を2008の形にしています
    odatm = Mid(nmdat, 4, 2)'日付の月の部分を取り込んでいます
    odatd = Right(nmdat, 2) '日付の日の部分を取り込んでいます
    odat = DateValue(odaty & "/" & odatm & "/" & odatd)
               'もとの日付のシリアル値を計算しています。
              '(ここはワークシートのセルB1から取り込む
              'ほうが簡単ですが、趣味でこの形にしていま
              'す
    ndat = odat + 1     '元の日付に1を足して翌日のシリアル値を取
              '得しています
    ndaty = Right(Str(Year(ndat)), 2)'新しい日付の年を表す文字列の08の
              '部分を取得しています。
    ndatm = Str(Month(ndat))'新しい日付の月の部分を文字列にしています
    ndatm = Right("00" & Mid(ndatm, 2, Len(ndatm) - 1), 2)
              'その文字列をさらに01の形に変換しています
    ndatd = Str(Day(ndat)) '新しい日付の日の部分の文字列にしています
    ndatd = Right("00" & Mid(ndatd, 2, Len(ndatd) - 1), 2)
              'その文字列をさらに01の形に変換しています
    
  cmt1 = "新しい日付を確認してください"
    cmt2 = "変更の際はキー入力してください"

    prompt = cmt1 & Chr(10) & cmt2 
              'inputboxで表示を促すマークに使用するコメ
              'ントです。Chr(10)は改行を指示する命令です
    hiduke = ndaty & "." & ndatm & "." & ndatd
              'ワークシート名に使用する日付の文字列で、
              'inputboxのデフォルトの表示データとして使
              'います。

  nnmdat = InputBox(prompt, , hiduke)
                '新しい日付を表示してそれでよいかどうかを
              '確認しています。変更したい時は手で書き換
              'えます。変数nnmdatには、そのまま「ok」
              'であればデフォルトの日付が、書き換えられ
              'たら書換後のデータが取り込まれます
    ActiveSheet.Copy after:=ActiveSheet
              '現在開いているワークシートをコピーして、
              '現在開いているワークシートの後ろに置きな
              'さい、という命令です。この命令が実行され
              'ると新しく作られたワークシートがアクティ
              'ブのシートに変わります
    
    ActiveSheet.Name = nnmdat & nmtl
              '新しく開いたワークシートの名前はできた時
              'には前のシート名の後ろに(2)がついたものに
              'なっていますので、その名前を前の方で苦労
              'して作った日付+「パレット管理表」に変え
              'る命令です

  ndaty = Left(nnmdat, 2) '新しいワークシートの日付の年の部分です。
              '初めに作った日付は、inputboxで表示した時
              'に書き換えられる場合がありますのであらた
              'めて、nnmdatから逆算します。
    ndatm = Mid(nnmdat, 4, 2)'同じく月の部分です
    ndatd = Right(nnmdat, 2)'同じく日の部分です
    
    Cells(1, 2).Value = DateValue("20" & ndaty & "/" & ndatm & "/" & ndatd)           '新しくできたワークシートのセルB1にワーク
              'シート名の日付と同じ日付を記入します。

データクリア2      '前日データをクリアする

End Sub
'--------ここまで---------

 今回はここまでとします。作品集新館のパレット管理表は、今回のマクロで
作成した新しいワークシートが入ったものに差し替えしています。

〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
----------------------------------------------------------------------
◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
││││││││ え っ ち ょ 流 用 語 解 説 ││││││││
◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆

[[[ いのち (8)]]] 今回は休ませていただきます


===================================
┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌─┐┐┐┐┐┐┐┐┐┐┐┐┐┐┐┐┐
┌┌───────────────────────────────┐┐
 │     「趣味のエクセル」REVIVAL(54)      │
└└───────────────────────────────┘┘
└└└└└└└└└└└└└└└└└─┘┘┘┘┘┘┘┘┘┘┘┘┘┘┘┘┘
===================================
****  3択トレーナー ショートカットキー・マスター(2) ***

2 三択問題を作る

  a 三択問題とは

    ある問題が提出されています。その問題に対しての答が3つ用意され
   ています。その中で一つだけ正しい答がある(または間違った答があ
   る)。それはどれかを答えるのが三択問題です。

    この説明は、問題を解く側の説明で、出題する側としては、もう少し
   複雑になります。作る時の手順はこうなります。

 (1) 問いを作る
 (2) 問いに対する正しい答(これを「正答」と言う事にします)を作る
 (3) 問いに対する誤った答(これを「偽答」と言う事にします)を二つ
    作る
 (4) 正答と偽答を並べて「回答群」とし、問いとセットにしてひとつの
    問題とする
 (5)このような問題セットをいくつか作って一つのテストとする

   *作成上の注意点としては、正答の位置が回答群の中でいつも同じ位置
   に来ないようにする配慮が必要です。

  b 問題を作るプログラム

 (1)問題を作るためのデータベースの構造

    問題作成の元となるデータベースは、単純に言えば、問題とそれに対
   する正しい答を対応させたものを一つのデータとします。
    「ショートカットキーDB」は、次の6つの項目で構成されていま
   す。

    A DN(データナンバー、この番号をキーにデータを呼び出します)
    B 目的(ショートカットキーを実行した結果です)
    C キー操作(どのキーを押すかを表示します)
    D 区分1(エクセルのどのような作業をする場合かを表示します)
    E 区分2(区分1の内容をもう少し細かく場合わけしています)
    F コメント(特に説明しておく必要がある時ここに書きこみます)

    この5つの項目の内B、D、Eを使って問題文にしています。答にな
   るのはCの「キー操作」です。

 (2)データナンバーを選択する

    問題作成はまず「正答」にするデータナンバーを決めるところから始
   めます。これは乱数を作成するRnd関数を使って決定します。
    次に「偽答」に使用するデータナンバーを2つ、これもRnd関数を
   使って決めます。
    この時気をつけなければならないのは、これら3つのデータナンバー
   には同じ数が入っていてはならないことです。正答と偽答が同じであれ
   ば問題の意図に反します。偽答2つが同じであっても3択問題の深みに
   欠けます。

    そしてさらに、これらのデータナンバーを、回答群として表示する時
   の表示順を、これも乱数で、1、2、3のどれかに対応させます。

    こうして決定した3つの番号をひとまとめにして問題番号をつけ、ワ
   ークシートに記録して行きます。ワークシ−ト「控室」が記録のための
   場所です。

    「控室」の項目名はこうなっています。

    A 出題番号(「問題番号」と同じです)
    B 正答番号(「正答」のデータナンバーです)
    C 偽答1 (1つ目の偽答のデータナンバーです)
    D 偽答2 (2つ目の偽答のデータナンバーです)
    E 正答表示番号 (回答群の中の表示位置の番号です)
    F 偽答1表示番号(回答群の中の表示位置の番号です)
    G 偽答2表示番号(回答群の中の表示位置の番号です)
    H 回答  (ユーザーが選んだ回答番号=表示番号です)
    I 正否  (回答が正解かどうかの判定欄)

 (3)同じ問題は出さないようにする

    1題ずつの作り方は以上ですが、ひとまとまりの問題群としては、ひ
   とつと言うわけには行きません。同じことを出題数の分だけ繰り返しま
   す。サンプル作品では、15題でひとまとまりとして採点しています。
    この時気をつけることが一つあります。それは同じ「正答」を二つ以
   上作らない、ということです。同じ正答があるという事は「同じ問題が
   ある」という事で、たった15題のテストで、同じ問題が二つ出てきた
   ら、白けてしまい、面白みがありません。

 (4)問題作成のプログラム

    問題作成についての以上の条件を考慮して作ったのが、次のマクロプ
   ログラムです。

'ここから−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

Sub 問題作成()
Dim qn(3), odn(3)'qn=正答一つと偽答2つのデータナンバーを入れる
         'odn=正答一つと偽答2つの表示順序のナンバーを入れる
mx = Worksheets("控室").Cells(2, 10)'データナンバーの最大値を入れる
         '乱数を使ってデータナンバーを決める時参照する
q = Worksheets("控室").Cells(2, 11)'今作成している問題の問題番号=出
         '題番号を入れておく

For i = 1 To 6  '念のためにこれから作る問題関係のデータを書きこむセル         'をクリアする
    Worksheets("控室").Cells(q + 1, 1 + i).Value = ""
Next i

mqf = 1     '問題作成ルーチンを実行するフラグ
While mqf = 1
Randomize    '乱数を発生させる準備

For i = 1 To 3
    rdf = 1   '乱数を発生させるルーチンを実行するフラグ
    While rdf = 1
        qn(i) = Int(Rnd() * mx) + 1 'データナンバーを選ぶ
        w = 0
        For j = 1 To 3           '正答と偽答が同じでないかチェックする
            If qn(i) = Worksheets("控室").Cells(q + 1, 1 + j) Then
                w = w + 1
                Else
                w = w + 0
            End If
        Next j
        If w = 0 Then
        rdf = 0
            Else
            rdf = 1
        End If
    
    Wend
    
    Worksheets("控室").Cells(q + 1, 1 + i).Value = qn(i)
Next i

    For mq = 1 To q - 1          '前に出た問題かどうかをチェックする
        mqn = Worksheets("控室").Cells(mq, 2)
        If mqn = qn(1) Then
            mf = 1
            Else
            mf = 0
        End If
        If mf = 1 Then
            mq = q - 1
        End If
    Next mq
    mqf = mf
Wend

For i = 1 To 3'正答1つ偽答2つの表示順の番号を乱数で決める
    rdf = 1  '乱数を発生させるルーチンを実行するフラグ
    While rdf = 1
        odn(i) = Int(Rnd() * 3) + 1
        w = 0'同じ番号がないかチェックした結果を入れる
        For j = 1 To 3
            If odn(i) = Worksheets("控室").Cells(q + 1, 4 + j) Then
                w = w + 1
                Else
                w = w + 0
            End If
        Next j
        If w = 0 Then
        rdf = 0
            Else
            rdf = 1
        End If
    Wend
    
    Worksheets("控室").Cells(q + 1, 4 + i).Value = odn(i)'表示順を記録
                             'する
Next i

End Sub

'ここまで−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

    *Alt + F11 でVBAモジュール画面を出し、上のマクロをコピー&
    ペーストで貼り付けてください。

 このマクロプログラムは、サンプルファイルに入っているものを少し修正し
ています。すでにダウンロードしている方は、これと差し替えておいてくださ
い。変った所は、 rf=1 という使用しないフラグがあったのでそれを削除し
ただけですが・・・。

 今回はここまでとします。次回はテストページ、答え合わせページ、トレー
ニングページを説明します。

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

編集後記:最後までお読み頂きありがとうございます。

衆議院の展開はある意味、予想通りでした。棚から牡丹餅で手に入った首相の
座を、麻生氏が簡単に手放して解散に踏み切る可能性は100に一つもありま
せん。もしあるとすれば、公明党の手を借りたとしても、与党ブロックが間違
いなく選挙に勝つという予想が確実な場合でしょう。

現在の政党支持の流れは基本的に自民退潮民主上げ潮です。党首同士の支持率
が五分五分で、麻生人気は決定打にならないと解ったとたん、麻生氏は解散は
しないと決心したに違いありません。

タイミングよくアメリカ発の金融危機に端を発した世界同時恐慌(これは恐れ
ではなくすでに恐慌に突入しています)です。選挙より経済対策、これは口実
ではありません。政権担当者としては一刻も猶予を許されない課題には違いあ
りません。情勢は麻生氏に味方しました。

この重大な課題を選挙と引き換えにしようとした民主は大きなミスをおかしま
した。国会を論戦の場にしようとせず、選挙で論争しようとするのは、いつも
ながらの民主の癖ですが、緊急を要する課題には生ぬるく、ましてや全く論戦
しようとせずに採決に応じたのは国民をバカにしています。まじめに緊急課題
を政府と協力して解決する姿勢なくして、国民の支持は得られません。せっか
くの機会をむざむざ捨ててしまいました。

麻生氏は、できれば21年9月の任期満了までは持ちこたえたい、と思ってい
るでしょう。悪評紛々の政権投げ出しではなく、任期が切れるから選挙をす
る、それまでの間に民主との差を引き離して、祖父に倣って長期政権を狙う。
筋書きだけは読めそうな気がします。

民主党は上げ潮ムードに甘えているだけでは、いつまでたっても政権に就くこ
とはできません。あれだけ警察沙汰になる人を抱えていれば支持したくてもで
きなくなります。党内を清潔にすること、勝とうと負けようと国会を国民のた
めの論争の場とするためにリーダシップをとること、官僚機構を再構築する覚
悟を持つこと、こんなことのできる党であるという期待を持って、「一度民主
に政権を持たしてみては」と思っている人もいます。

どうせ同じようなもんだから「民主でもいいんでないの」と思われて政権もら
うとしたら、惨めというしかありません。

     *      *      *      *

海の向こうのアメリカでは、史上初、黒人大統領の出現です。

リンカーンが最初の奴隷解放宣言をしたのは1862年、アメリカ合衆国とし
て法的に奴隷制を廃止したのは65年でした。アフリカ系アメリカ人としての
苦難はこの時から始まります。いくら法律が平等を謳っても、現実のアメリカ
社会が平等な隣人として彼らを受け容れる条件は整っていません。

最初は兵士として受け容れられるだけの「平等」でした。あからさまな差別が
アメリカ社会を覆います。音楽、ボードビル、スポーツとアウトロー、少しで
もましな生活をしたいと思えば、「実力」だけがものを言う世界しか開かれて
いませんでした。それらの少数の「成功者」を支えたのは、じっと我慢し続け
ている黒人大衆でした。

2度の世界大戦といくつかの地域紛争の過程で、兵士としての黒人は社会の中
で重要性を獲得して来ました。(これは兵士としての彼らが、駐留先の市民に
対し無法を働いたということとは別の問題です。)

奴隷解放宣言から100年経って、「彼らは差別を許さない」という政治的主
張掲げて戦います。1964年に公民権法が制定され、運動は前進の足がかり
をつかみます。黒人の社会的、経済的地位を向上させるために、役所や企業、
大学に黒人を優先的に(若しくは白人と同数)採用することを義務付ける政策
が取られる(この部分Wikipediaより)一方、黒人運動の方は過激グループに
より先鋭化していきましたが、ベトナム戦争の終結と前後して沈静化します。

幾多の犠牲を払いながら、この40年間、黒人は社会の重要部分に地位を占め
てきました。そしてついに大統領の座を獲得しました。いまや黒人は、黒人と
してではなく、アメリカの国民として活動する地位を確保しました。リンカー
ンの就任からから数えて148年、アメリカにとってこれは19〜20世紀の
総決算といえるでしょう。

この選挙はもう一つの重要な選択をしました。それは、女性を大統領には選ば
なかったということです。様々な背景は存在したでしょうが、人種の違いを乗
り越えたアメリカは、男女の違いには厳しかった。少なくとも民主党はその立
場を取りました。

アメリカにおいて女性解放はまだ途上であり、21世紀の課題として残されて
います。

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

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

メルマガ情報

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

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

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

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

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

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