93 第 9 章 マクロ マクロとは,Excel でのプログラムのことである. 簡 単 なプログラムをいく つか 書 いてみよう.また, 自 分 専 用 の 関 数 も 定 義 してみよう. 直 接 は 統 計 処 理 に 関 係 ないプログラムもあえて 掲 載 したが, 将 来 マクロを 自 作 する 際 に 役 立 つ はずである.
94 第 9 章 マクロ 9.1 セルに 色 をつける 例 題 9.1 コントロール (Ctrl) キーを 押 しながら r を 押 すことで, 選 択 したセルを 赤 色 にするマクロを 作 成 せよ. [ 解 法 例 ] < 新 しいマクロの 定 義 > <マクロの 実 行 結 果 > 図 a 図 b <マクロの 編 集 > 図 c
9.1 セルに 色 をつける 95 [ 説 明 ] ² マクロとは 一 言 で 言 えば,Excel のプログラムのことである.Excel のプロ グラミング 言 語 は Visual Basic である.したがって,マクロ 作 成 とは Visual Basic 言 語 によるプログラム 作 成 になるが,この 例 に 見 るように,マウスやキー ボードによる 一 連 の 作 業 を 自 動 的 にプログラムしてくれる 機 能 がある. ² 新 しいマクロの 定 義 ツール -> マクロ -> 新 しいマクロの 記 録 の 順 に 選 択 する.ダイアログボッ クスが 現 れるので,マクロ 名 を red にし,[Ctrl +] の 欄 に 小 文 字 で r と 入 れ る.そして OK ボタンを 押 す ( 図 a 参 照 ). ² マクロの 記 録 開 始 ( 左 下 のステータスバーが,マクロ 記 録 中 の 表 示 になる.) ここでは 1 つの 操 作 だけを 記 録 しよう. 適 当 なセルを 選 んでから,ツールバー -> 図 形 描 画 の 中 の 塗 りつぶしの 色 ボタンで 赤 色 を 選 択 し,マクロを 終 了 する.マクロを 終 了 するには ツール -> マクロ -> 記 録 終 了 とする. ² マクロの 実 行 適 当 にセルを 選 択 した 後,Ctrl キーを 押 しながら r キーを 押 してみよ.セル が 赤 色 で 塗 りつぶされる ( 図 b 参 照 ). ² マクロの 編 集 (Visual Basic Editor, VBE) ツール -> マクロ -> マクロ -> 編 集 の 順 に 選 んで 自 動 的 に 記 録 されたマク ロを VBE で 編 集 できる ( 図 c 参 照 ). 次 が, 自 動 的 に 作 成 されたマクロ red の 内 容 である.Sub red() で 始 まり, で 終 わっている. Sub red() ' ' red Macro ' マクロ 記 録 日 : 2001/3/15 ユーザー 名 : 白 石 修 二 ' ' Keyboard Shortcut: Ctrl+r ' With Selection.Interior.ColorIndex = 3.Pattern = xlsolid End With ² Alt キー+f11 キーで Excel と VBE の 切 り 替 えができる.
96 第 9 章 マクロ 9.2 四 則 演 算 例 題 9.2 2 つの 数 の 和 と 差, 積 と 商 を 計 算 せよ. [ 解 法 例 ] [ 説 明 ] ² 2 つの 入 力 データを 受 け 取 って, 足 し 算, 引 き 算, 掛 け 算, 割 り 算 の 結 果 を 出 力 するプログラムである.プログラムの 始 まりは,Sub sisoku() で, 終 わ りは である.Sub sisoku() と の 間 に 処 理 したい 内 容 を 書 く.sisoku がプログラム 名 である. プログラムの 基 本 形 Sub プログラム 名 (). プログラムの 中 身 を 書 く.. プログラムは 基 本 的 には 書 いてある 順 番 に,すなわち 上 から 下 へ,そして 左 か ら 右 への 順 番 に 実 行 される.
9.2 四 則 演 算 97 プログラム 例 Sub sisoku() ActiveSheet.UsedRange.Clear x = Val(InputBox("x の 値 を 入 力 してください.")) Cells(2, 1) = "x=": Cells(2, 2) = x y = Val(InputBox("y の 値 を 入 力 してください.")) Cells(3, 1) = "y=": Cells(3, 2) = y Cells(1, 1) = " 入 力 データ x, y" Cells(5, 1) = " 出 力 結 果 " wa = x + y: sa = x - y: seki = x * y: sho = x / y Cells(7, 1) = "x+y=": Cells(7, 2) = wa Cells(9, 1) = "x-y=": Cells(9, 2) = sa Cells(11, 1) = "x*y=": Cells(11, 2) = seki Cells(13, 1) = "x-y=": Cells(13, 2) = sho ² ActiveSheet.UsedRange.Clear は Excel の 画 面 をクリアする. x = Val(InputBox("x の 値 を 入 力 してください.")) で 入 力 用 の 窓 が 出 て くるので 入 力 データを 入 れる. 入 力 データが 変 数 x に 代 入 される.InputBox の 返 す 値 は 文 字 列 なので,Val で 数 値 に 変 換 している.Cells(i,j) は i 行, j 列 のセルを 表 す.セルはデータの 入 出 力 に 使 われる.Cells(2, 1) = "x=" は 2 行 1 列 のセルに 文 字 列 "x=" を 入 力 する.Cells(2, 2) = x は x の 値 を 2 行 2 列 のセルに 入 力 する.wa = x + y は x と y を 足 した 結 果 を 変 数 wa に 代 入 している. 掛 け 算 には *, 割 り 算 には / を 用 いる.1 行 に 文 を 続 けて 書 く 場 合, 文 の 区 切 りとして,コロン : を 用 いる. ² Basic プログラム 作 成 方 法 Excel を 起 動 した 後,ツール -> マクロ -> マクロ の 順 に 選 択 し,マクロ 名 の 所 に sisoku と 入 力 し,Enter キーを 押 す.そうすると,Sub sisoku() End Sub の 書 かれたノートが 出 てくるので,プログラム 例 を 入 力 してみよう. 入 力 が 終 わったら Excel の 方 に 戻 り sisoku のプログラムを 走 らせてみよう. ² プログラム 実 行 方 法 ツール -> マクロ -> マクロ の 順 に 選 択 し,プログラム 名 sisoku を 選 択 し た 後, 実 行 ボタンを 押 す. ² プログラムを 含 む Excel を 再 起 動 する 場 合, マクロを 有 効 にする を 選 択 する.
98 第 9 章 マクロ 9.3 関 数 のグラフを 書 く 例 題 9.3 y =sinx と y =cosx のグラフを 書 け.( 2¼ x 2¼) [ 解 法 例 ]
9.3 関 数 のグラフを 書 く 99 [ 説 明 ] ² 関 数 f のグラフ (x; f(x)) を 書 くためには 適 当 な 大 きさのサンプルデータ (x i ;f(x i )) を 生 成 し,そのデータをグラフウィザードに 渡 して 書 いてもらう. プログラム 例 Sub graph() ActiveSheet.UsedRange.Clear Cells(1, 1) = "x": Cells(1, 2) = "sin(x)": Cells(1, 3) = "cos(x)" For i = -20 To 20 x = i / 10 * 3.14159 Cells(22 + i, 1) = x Cells(22 + i, 2) = Sin(x) Cells(22 + i, 3) = Cos(x) Next i ² 第 1 列 のセルに x 座 標 のデータ,2 列 に sin(x) のデータ,3 列 に cos(x) の データを 繰 り 返 し 文 For を 用 いて 生 成 する.データの x 座 標 の 範 囲 は, 2¼ から 2¼ の 間 にしている. For i = -20 To 20 は i の 値 を -20 から 20 まで 1 つずつ 増 やしながら Next i までにある 処 理 を 41 回 繰 り 返 す. For は 繰 り 返 し 実 行 するときに 用 いる ( 定 回 反 復 ). For i = a To b 処 理 内 容 Next i グラフの 書 き 方 データの 範 囲 をマウスで 選 択 し,グラフウィザードを 用 いる.
100 第 9 章 マクロ 9.4 サイコロの 目 例 題 9.4 サイコロを 振 り,サイコロの 目 が 一 様 に 出 ているか 調 べよ. [ 解 法 例 ] [ 説 明 ] ² プログラム saikoro を 実 行 してマウスでサイコロを 振 る 範 囲 を 指 定 する. 乱 数 を 発 生 させる 関 数 Rnd を 用 いて,サイコロを 作 る.サイコロを 投 げた 後, サイコロの 目 が 一 様 に 出 ているかどうかヒストグラムを 書 いて 確 認 しよう. <ヒストグラム 作 成 法 > ツール -> 分 析 ツール -> ヒストグラム の 順 に 選 択 する.ヒストグラムの 窓
9.4 サイコロの 目 101 が 出 てくるので, 入 力 範 囲 をマウスで 選 択 し,データ 区 間 (1 から 6 の 目 が 書 い てある 部 分 ) もマウスで 選 択 する.(データ 区 間 は, 実 行 例 で 見 るように 適 当 な 場 所 に 目 の 種 類 を 書 いておく.) 出 力 先 は 適 当 なセルを 1 個 選 択 する.このと き,グラフ 作 成 の 項 目 をチェックする. 頻 度 表 からグラフウィザードを 用 いて グラフを 書 くこともできる. プログラム 例 Sub saikoro() Dim c As Range Dim p As String ActiveSheet.UsedRange.Clear p = "サイコロを 振 る 範 囲 を 指 定 せよ." Set c = Application.InputBox(prompt:=p, Type:=8) c.select ctx = Selection.Columns.Count cty = Selection.Rows.Count Cells(1, 1) = "サイコロを" & ctx * cty & " 回 投 げました." For Each x In Selection x.value = Int(6 * Rnd + 1) Next x ² Dim c As Range は c がセル 変 数 であることを,Dim p As String は p が 文 字 列 変 数 であることを 表 す.Set c = Application.InputBox(prompt:=p, Type:=8) とすると,マウスで 選 択 されたセルが c に 入 る.Type:=8 は InputBox の 返 り 値 がセルであることを 意 味 する.c.Select はサイコロを 投 げるセル 範 囲 ( 処 理 範 囲 ) を 選 択 する.Selection.Columns.Count は 現 在 選 択 されてい るセル 範 囲 の 列 の 数 をカウントする.Selection.Rows.Count は 行 の 数 をカ ウントする.For Each x In Selection は 選 択 した 範 囲 の 各 セル x に 対 して,サイコロを 振 る.サイコロは 乱 数 生 成 関 数 Rnd を 用 いて,Int((6 * Rnd) + 1) で 作 ることができる.Rnd は 0 以 上 1 未 満 の 実 数 を 生 成 するので, 0 6 Rnd 5:999,1 6 Rnd + 1 6:999 となり,Int で 少 数 部 分 を 切 り 捨 てている.x.value= はサイコロの 目 をセル x の 値 (value) とする. サイコロの 目 に 色 を 付 けたいときは, 例 えば,x.Interior.ColorIndex = 1 のように 使 う.(セル x の 内 部 (Interior) の 色 (ColorIndex) を 1 とする.)
102 第 9 章 マクロ 9.5 ソート 例 題 9.5 同 じ 種 類 の 13 枚 のトランプカードをよく 切 り 1 枚 ずつ 並 べよ.そのランダ ムなカード 列 を 小 さい 順 番 に 並 べ 替 えよ.また, 並 べ 替 えの 途 中 経 過 がわか るようにせよ. [ 解 法 例 ] [ 説 明 ] ² 2 つのプログラム rnd1 と srt1 からなる.rnd1 はトランプを 切 って 並 べる プログラムである.また,rnd1 は プログラム srt1 を 呼 び 出 している.srt1 はトランプを 小 さい 順 番 に 並 べるプログラムである.トランプカードは 1 から 13 までの 数 字 で 表 している. 定 数 n と 配 列 card(i) は 2 つのプログラムで 共
9.5 ソート 103 通 に 使 うのでプログラムの 外 で ( 先 頭 で) 定 義 している. まず,card(i) に カード i を 入 れ,それをシャッフルする.シャッフルに は, 整 数 乱 数 j =Int((i-1)*Rnd+1) を 用 いる. 最 初,1 から 12 までの 間 の 乱 数 j を 生 成 し,その 位 置 j のカードと 13 番 目 のカードを 入 れ 換 える. 次 に, 1 から 11 までの 間 の 乱 数 を 生 成 し,その 位 置 のカードと 12 番 目 のカードを 入 れ 換 える. 後 同 様 の 手 続 きを 繰 り 返 す. 今 度 はシャッフルされたカードを 小 さい 順 番 にソートしよう.ここで 述 べる ソート 法 は 効 率 はそれほどよくないが, 単 純 明 快 なソート 法 の 1 つである.カー ド 列 を 右 の 方 から 隣 同 士 のカードの 大 小 関 係 を 調 べながら 左 の 方 へ 見 て 行 く. このとき, 左 隣 のカードが 大 きいときは, 入 れ 換 える.この 操 作 を 高 々12 回 繰 り 返 すと, 小 さい 順 番 にカードが 並 ぶ.( 実 際,13 枚 のトランプを 並 べて 上 の 手 順 で 入 れ 替 えてみよ.) また,ソートの 途 中 経 過 を 色 を 付 けて 表 示 するよう にしている. プログラム 例 Const n = 13 Dim card(n) Sub rnd1() ActiveSheet.UsedRange.Clear Columns("a:z").ColumnWidth = 3 For i = 1 To n card(i) = i Next i Cells(2, 2) = "トランプをよく 切 って 並 べます." For i = n To 2 Step -1 j = Int((i - 1) * Rnd + 1) tmp = card(i): card(i) = card(j): card(j) = tmp Next i For i = 1 To n Cells(4, 3 + i) = card(i) Cells(4, 3 + i).interior.color = RGB(256-16 * card(i), 256-16 * card(i), 256-16 * card(i)) Next i srt1 Sub srt1() Cells(6, 2) = "トランプを 小 さい 順 番 に 並 べます. 途 中 経 過 を 白 黒 の 濃 淡 で 表 示." For i = 1 To n - 1 For j = n To i Step -1
104 第 9 章 マクロ If card(j-1) >card(j) Then tmp = card(j): card(j) = card(j - 1): card(j - 1) = tmp End If Next j For k = 1 To n Cells(7+i,3+k).Interior.Color = RGB(256-16*card(k),256-16*card(k), 256-16*card(k)) Next k Next i Cells(21, 2) = " 小 さい 順 番 にソートされました." For i = 1 To n Cells(23, 3 + i) = card(i) Next i ² Const n = 13 は 2 つのプログラムで 使 われる n が 13 という 定 数 であるこ とを 意 味 する.Dim card(n) as Integer は card(1) から card(13) まで 13 枚 の 整 数 の 入 るメモ 用 紙 を 用 意 する.Columns("a:z").ColumnWidth = 3 でセル a から z の 列 幅 を 3 文 字 幅 に 設 定 している.For i = n To 2 Step -1 とすると,i の 値 は n から 始 まって,n-1, n-2 と 1 つずつ 減 っていく. If card(j-1) >card(j) Then は 条 件 文 といわれ, 左 隣 のカードが 大 きいな らば Then と Endif で 挟 まれた 部 分 を 処 理 せよという 意 味 である. If は 条 件 判 定 で 用 いる If 条 件 式 Then 条 件 式 が 真 のときだけ 実 行 される EndIf 条 件 式 が 偽 のときは,Then と EndIf で 挟 まれた 部 分 は 実 行 されない. tmp = card(i):card(i)=card(j):card(j)=tmp が card(i) と card(j) を 入 れ 換 える 方 法 である (スワップという).Cells(4,3+i).Interior.Color = RGB(256-16*card(i), 256-16*card(i), 256-16*card(i)) の 部 分 が, セルに 色 を 付 ける. 色 は 白 黒 の 濃 淡 で 表 している.
9.6 ボタン 作 成 105 9.6 ボタン 作 成 例 題 9.6 次 のコマンドボタンを 作 成 せよ. (a) ボタンを 押 すと 音 が 出 る.(b) 日 付 を 表 示 する.(c) 時 刻 を 表 示 する. [ 解 法 例 ] [ 説 明 ] ² ボタンを 作 成 するには, 表 示 -> ツールバー -> フォーム の 順 に 選 択 する. フォームツールバーが 出 てくるのでボタンをクリックして, 適 当 な 位 置 までド ラッグしてボタンを 作 る. ² にボタンにマクロを 新 規 登 録 する.ボタンを 右 クリックして,マクロの 登 録 を 選 択.ダイアログボックスが 現 れるので 新 規 作 成 を 選 ぶ.VBE が 起 動 する ので 次 のマクロを 入 力 する.(a) マクロ oto を 入 力 する.beep で 音 を 出 すこ とができる.ボタンの 名 前 に 関 しては,ボタンを 右 クリックしてテキストの 編 集 を 選 択 して 文 字 列 を 入 力 する.(b)hizuke,(c)jikoku についても 同 様 にす る.Date は 日 付,Time は 時 刻 を 表 す.& は 文 字 列 を 連 結 する. Sub oto() For i = 1 To 4: For j = 1 To 60000: Next j: beep: Next i Sub hizuke() MsgBox " 今 日 は" & Date & "です." Sub jikoku() MsgBox " " & Time & " "
106 第 9 章 マクロ 9.7 ダイアログボックス 例 題 9.7 RGB カラー 生 成 ダイアログボックスを 作 れ. [ 解 法 例 ] <ダイアログボックス> <ユーザフォームとツールボックス> [ 説 明 ] 図 a 図 b ² 図 a のような RGB カラーダイアログボックスの 作 成 手 順. 1. フォームの 作 成 ツール -> マクロ -> Visual Basic Editor の 順 に 選 択 すると,エディタが 起 動 するので, 挿 入 -> ユーザフォーム を 選 ぶ. 空 のユーザフォーム (ダイアロ グボックス) とツールボックスが 表 示 される ( 図 b 参 照 ). ツールボックスからスクロールバーとボタンなど (これらをコントロールと いう) をドラッグし,ダイアログボックスにドロップする.ドロップした 後, 図 a のように 整 形 する.ダイアログボックスには,RGB の 3 つのスクロールバー と 4 つのテキストボックス,OK とキャンセルの 2 つのコマンドボタンそして 3 つのラベルがある. ボタンに 名 前 (caption) を 付 けるには,ボタンを 2 回 ゆっくりとクリックす る.また,コントロールには 自 動 的 にオブジェクト 名 が 付 く.CommandButton1,
9.7 ダイアログボックス 107 ScrollBar1 など. コントロールをユーザフォームに 貼 り 付 けた 後, 適 切 かどうか 実 行 -> Sub/ ユーザフォームの 実 行 を 選 択 し 確 認 してみよ. 2. コントロールの 初 期 値 設 定 プロパティウィンドウで 設 定 する. 例 えば,ダイアログボックス 上 の 赤 のス クロールバーを 選 択 し, 右 ボタンを 押 す.メニューから,プロパティを 選 択 す る.プロパティウィンドウが 出 てくるので, 次 の 設 定 をする ( 図 c 参 照 ). <プロパティウィンドウ> 図 c <スクロールバーの 初 期 設 定 例 > Max 256, Min 0, LargeChange 5,BackColor を 赤 色 などにする. <テキストボックスの 初 期 設 定 例 > Value を 0, Locked を True にする.すなわち, 色 の 初 期 値 を 0 にし,テキ ストボックスに 勝 手 に 書 き 込 みできないようにロックしている. 3. イベントプロシジャの 作 成 コントロールを 操 作 したときの 動 きを 決 めるためのプログラム (イベントプロ シジャ) を 書 く.ダイアログ 上 の 各 コントロールをダブルクリックすると,コー ドウィンドウが 表 示 されるのでそれぞれ 処 理 内 容 を 書 く.ここでは,3 つのス クロールバーと 2 つのコマンドボタンに 対 してそれぞれプログラムを 書 く.
108 第 9 章 マクロ <イベントプロシジャの 基 本 形 > Private Sub コントロール_イベント 名 (). 処 理 内 容. 例 えば,ここで 用 いるコマンドボタンのイベント 名 は,Click である.ボタ ンをクリックしたときどのようなことをしたいかを Private Sub と の 間 に 書 く.スクロールバーのイベント 名 としては Change と Scroll の 2 つ を 用 いてる. イベントプロシジャ 'OK ボタン Private Sub CommandButton1_Click() Unload Me Range("a1").Select ' キャンセルボタン Private Sub CommandButton2_Click() Unload Me Selection.Clear ' 赤 のスクロールバー Private Sub ScrollBar1_Change() tmp1=rgb(scrollbar1.value,scrollbar2.value,scrollbar3.value) Selection.Interior.Color=tmp1 TextBox1.Value = ScrollBar1.Value TextBox4.BackColor = tmp1 Private Sub ScrollBar1_Scroll() tmp1=rgb(scrollbar1.value,scrollbar2.value,scrollbar3.value) Selection.Interior.Color=tmp1 TextBox1.Value = ScrollBar1.Value TextBox4.BackColor = tmp1 ' 緑 のスクロールバー Private Sub ScrollBar2_Change() tmp2=rgb(scrollbar1.value,scrollbar2.value,scrollbar3.value) Selection.Interior.Color=tmp2 TextBox2.Value = ScrollBar2.Value TextBox4.BackColor = tmp2
9.7 ダイアログボックス 109 Private Sub ScrollBar2_Scroll() tmp2=rgb(scrollbar1.value,scrollbar2.value,scrollbar3.value) Selection.Interior.Color=tmp2 TextBox2.Value = ScrollBar2.Value TextBox4.BackColor = tmp2 ' 青 のスクロールバー Private Sub ScrollBar3_Change() tmp3=rgb(scrollbar1.value,scrollbar2.value,scrollbar3.value) Selection.Interior.Color=tmp3 TextBox3.Value = ScrollBar3.Value TextBox4.BackColor = tmp3 Private Sub ScrollBar3_Scroll() tmp3=rgb(scrollbar1.value,scrollbar2.value,scrollbar3.value) Selection.Interior.Color=tmp3 TextBox3.Value = ScrollBar3.Value TextBox4.BackColor = tmp3 Unload Me はダイアログボックスの 終 了 である.Me はフォームを 意 味 する. Range("a1").Select はセル A1 を 選 択 する. Selection.Clear は 選 択 範 囲 をクリアする. TextBox1.Value = ScrollBar1.Value はテキストボックスにスクロール バーの 値 を 入 れる. TextBox4.BackColor = RGB(ScrollBar1.Value, ScrollBar2.Value, ScrollBar3.Value) はテキストボックスの 背 景 色 をセルと 同 じ 色 にする. 4. メインルーチンの 作 成 挿 入 -> 標 準 モジュールを 選 択 し, 次 のメインルーチン main1 を 書 く. Sub main1() Dim c As Range Dim p As String ActiveSheet.UsedRange.Clear p = " 塗 りつぶす 範 囲 を 指 定 せよ " Set c = Application.InputBox(prompt:=p, Type:=8) c.select UserForm1.Show UserForm1.Show でフォームを 表 示 (show) する.UserForm1 はフォームの オブジェクト 名 である.
110 第 9 章 マクロ 9.8 関 数 作 成 例 題 9.8 生 年 月 日 を 入 力 し,その 日 が 何 曜 日 であるかを 求 める 関 数 を 作 れ. [ 解 法 例 ] [ 説 明 ] ² 組 み 込 み 関 数 の 他 に, 自 分 で 関 数 を 定 義 することができる.マクロ 作 成 方 法 と 同 じで,ツール -> マクロ -> Visual Basic Editor の 順 に 選 択 する.エディ タが 起 動 するので, 挿 入 -> 標 準 モジュール を 選 ぶ. 次 のプログラム 例 を 入 れ てみよう. 入 力 が 終 わったらセーブして,Excel の 方 に 移 動 して, 適 当 なセル に 例 えば,=zellar(1999,11,3) と 入 力 してみよ. 関 数 の 基 本 形 function fname( 引 数 ) 本 体 end function 関 数 値 は fname に 入 れる.
9.8 関 数 作 成 111 プログラム 例 Function zellar(y, m, d) If m = 1 Or m = 2 Then y = y - 1 m = m + 13 End If dm = y + y Y= 4 - y Y= 100 + y Y= 400 w = (dm + (13 * m + 8) Y= 5 + d) Mod 7 Select Case w Case 0 zellar = " 日 曜 日 " Case 1 zellar = " 月 曜 日 " Case 2 zellar = " 火 曜 日 " Case 3 zellar = " 水 曜 日 " Case 4 zellar = " 木 曜 日 " Case 5 zellar = " 金 曜 日 " Case 6 zellar = " 土 曜 日 " End Select End Function ² いくつかの 選 択 肢 がある 場 合 は,Select が 便 利 である.Select Case w の w の 0 から 6 までの 値 に 応 じて, 例 えば 0 の 場 合 (Case 0) は, 日 曜 日,1 の 場 合 (Case1) は 月 曜 日 と 表 示 するようにしている. a Or b は a,b いずれかまたは 両 方 ともが 真 のとき, 真 となる 論 理 式 である. a Y= b は a を b で 割 ったときの 整 数 商 を 表 す.a Mod b は a を b で 割 ったとき の 余 りを 表 す. < Zellar の 公 式 > 1,2 月 を 前 年 の 13,14 月 とする. 次 式 によって, 閏 年 による 曜 日 のずれ dm と 曜 日 w を 求 める. 通 常,1 年 で 曜 日 は 1 日 ずれるが, 閏 年 を 換 算 すると y 年 で dm 日 ずれる. dm = y + y Y= 4 - y Y= 100 + y Y= 400 w = (dm + (13 * m + 8)Y= 5 + d) Mod 7