2012年5月25日金曜日

クラウドで売上管理表を作成する

今回、勤務表と在庫管理表に続き、売上管理表をGoogleSpreadsheetで作成したいと思います。

§ 概要設計(まず、どんなものを作るのか?)

(1)月別の分類別の集計表とグラフを作成する

(2)月別の商品別の集計表とグラフを作成する

(3)月別の納入先別の集計表とグラフを作成する

と、この3点に集約します。


§ 売上データの作成


                          (少し小さいですが、ダブル・クリックすると大きくなります)

データの項目は、No.(伝票No)・商品名・日付(年月日)・月度・納入先・分類・単価・数量・金額の9種類です。

金額は数式:単価数量で自動計算します。



月度、これは月別に集計する際に必要となります。日付から月のみを関数MONTHで表示させます。



MONTH日付データの入ったセル

となります。


§ 集計表作成のポイント

集計にはビボット・テーブルという機能がありますが、この方法ではデータが更新させる(データ範囲を変更する)と、その都度操作しなければなりません。





そこで、データベース関数のDSUMを使用します。DSUMなら一度設定しておいたら、後は勝手に更新してくれます。

「 DSUMとは、データベース内の指定された条件を満たす数値の集計です。 」





§ 月別の分類別の集計表とグラフを作成する



分類別の集計表のフォーマットを作ります。縦に分類名(ここでは、パソコン・DVD・プリンタ)を横は月度(4月~7月)とします。


集計表の横にもう1つ表をつくります。この表には、上段:項目欄に月度と分類を入れ、下段:データ欄には、実際の月度と分類名を入れます。ここでは、4とパソコン、4とDVD・・・・・・7とDVD、7といプリンタの順に入力します。


四月の分類パソコンの集計をセルD5に表示したい場合は、D5をクリックして次の数式を入力します。



=DSUM(売上データ!A1:I25,売上データ!I1,P4:Q5)

・全データベース:売上データ!A1:I25
・フィールド(計算対象となる列):売上データ!I1 <  ここでは、”金額”です >
・検索条件が設定されているセル:
P4:Q5 <”月度”、”分類”という項目も検索条件に入ります>

このように設定していきます。例えば、5月度のDVDを集計するなら、
=DSUM(売上データ!A1:I25,売上データ!I1,X4:Y5)

6月度のプリンタを集計するなら、
 =DSUM(売上データ!A1:I25,売上データ!I1,T6:U7)


4月から7月までの集計の設定ができたら、その集計をもとにグラフを作成します。




[挿入]-[グラフ]よりグラフ・エディタが表示されます。
・グラフの設定
(1)種類
今回はデフォルトの縦クラフ
(2)グラフのタイトル
月別分類別売上集計
(3)データ(データ範囲)
商品別売上表'!C4:G7 
(4)見出の表示
C列・4行目を見出しとして使用する 



                    ↓



このようにして、月別の商品別の集計表と月別の納入先別の集計表も作成します。





となります。

GoogleSpreadsheetの売上管理表のサンプルをGoogleのテンプレートギャラリーに公開しました(もちろん無料です!!)。

ギャラリーのカテゴリーはビジネスで、名前は「uriage_shukei」です。

もしよろしければ、使用してください。

[テンプレートギャラリー]-[公開テンプレート]から検索「「uriage_shukei」表示されます。



(参考HP)

 
 
 
 

2012年5月18日金曜日

クラウドで在庫管理表を作成する

今回はクラウドの一翼を担うGoogleSpreadsheetで、在庫管理表を作成したいと思います。以前、私のHPで「VBAを使わずにExcelで在庫管理表を作成する」というページを公開しました。その延長線上に、「クラウドで在庫管理表を作成する」が存在します。というか、エクセルで作成したサンプルがGoogleSpreadsheetに移植することができたのです。少し手直ししなければならないところがありましたが、殆どの機能はGoogleSpreadsheetでも働きました。

まずは、エクセルの方で説明したページがありますので、そちらをご覧ください。その後、GoogleSpreadsheetでの修正点を解説します。

「VBAを使わずにExcelで在庫管理表を作成する ~ 復刻版 ~」


ご覧頂けたでしょうか ・・・・・・・・・・


・GoogleSpreadsheetでの修正点

修正点は,データのリスト形式の選択、オートフィルタおよびセル列の非表示です。

エクセルでは、データの入力規則という機能があり、リスト形式で仕入先と納入先と選択できまた。ところが、GoogleSpreadsheetに移植後にリストがなくなりました。それで、いろいろ調べてみました。

GoogleSpreadsheetでは、[データ]-[確認]-[データの検証]の条件をリストのアイテムにします。






ラジオボタンから「範囲からリストを作成」を選んで、その横に希望するセル番地を選択します。

オートフィルタと列の非表示は、もう一度設定のし直しです。




オートフィルタは、表の項目欄(例えば、商品コードや商品番号等)を選択して、[データ]-[フィルタ]を選びます。




と、各項目にリストマーク(▼)が表示され、それを抑えると上記のようなリストがでます。


最後に列の非表示ですが、これは非表示する列の頭(アルファブット)のところをクリックして、その列全体が選択された(その列のみ色が変わる)ことを確認して、マウスの右をクリックして「列の表示」を選択します。




これで終わりです。

GoogleSpreadsheetの在庫管理表のサンプルをGoogleのテンプレートギャラリーに公開しました(もちろん無料です!!)。




(ダブルクリックすると、大きくなります)

ギャラリーのカテゴリーはビジネスで、名前は「zaiko」です。

もしよろしければ、使用してください。

[テンプレートギャラリー]-[公開テンプレート]から検索「zaiko」表示されます。



(参考HP)

 
 

 
 
 
 

クラウドで勤務計画表を作成する

クラウドの一翼を担うGoogleSpreadsheetのことを、私はGSpreadあるいは単にGSと呼んでいます。
文字で書くとやたら長い感じがするからです。
で、このGSpreadで簡単な勤務表を作成してみましょう。

まずどのようなものを作るか、概要設計です。

(1)年月を入力欄に入力すると、表の日付と曜日が自動的に変化する。
日付の変化とは、2月4月6月9月11月は”小の月”ですので、それに合った表示をする。

(2)勤務記号はリスト表示で行う。
いちいち手書きで記号を入力するのではなく、リストボックスより選択する。

(3)土曜日は”青”、日曜日は”赤”に文字を自動的に変える。

(4)各集計ができるようにする。


ざっとこなものです。

「年月を入力欄に入力すると」とは、以下のようなイメージです。






                               (画像をダブルクリックすると、拡大して表示されます。)

では、日付と曜日がどうすれば自動的に変わるのかやってみましょう。

この勤務表は30名分の計画が作成できるようになっています。その勤務表の下にもうひとつ表を作ります。これは日付と曜日を特定するための仕掛けです。




44行目はたんに数字を1~31まで配列します。最大31日あるからです。

45行目”=DATE($AM$2,$AO$2,C44)”は年月入力欄で入力した数値と44行目に配列した数値1~31で日付を作成するということです。ですから、セルC45には2012年8月1日が入ります。D45は2012年8月2日であり、E45は2012年8月3日・・・・・AG45は2012年8月31日となります。

<補足>
セルAM2に年に当たる数字2012が、セルAO2に月に当たる数字8が入力されています。
"$"が文字や数字の前に付くと固定化する役割があります。$AM$2をシート内でドラッグダウン・アップしても変化しません。

次にその下、46行目は45行目で作成した日付の月の部分でけを表示させます。

 =MONTH(C45) がこれにあたります。


で、少し過去に遡りますが、2012年の2月分を作成しましょう。










これを見て頂ければお分かりだと思いますが、2012年の2月30日及び2月31日は存在しなく、3月1日と3月2日になります。ここに最後の2日は2月ではないと識別できます。つまり。「小の月」を見分ける仕掛けになります。




47行目は最後3日だけのための仕掛けです。2月は殆ど28日で終わるからです。


 =IF(AE46=$AO$2,1,0)とは、「もしセルAE46とセルAO2の値が等しいなら1を、そうでないなら0を入れなさい」というこです。

これを2月で見てみると、




最後の2日が"0(ゼロ)”になります。これを勤務表の日付と曜日欄に反映させます。

その前に曜日を表示させます。


 =CHOOSE(WEEKDAY(F45)、"日"、"月"、"火"、"水"、"木"、"金"、"土")

45行目で設定した年月日をWEEKDAY関数で曜日の値に変換します。もしこの関数で返される値が1なら日曜日、2なら月曜日、・・・7なら土曜日となります。単に、WEEKDAY(F45)ですと"7"ということになります。しかし数字だけ返されても仕方ないので、CHOOSE関数でWEEKDAY関数の返数と配列数の同じものを選択します。ですから、今回の場合は7番目の配列の値返すということになり、""が入ります。




=IF(AF47=1、CHOOSE(WEEKDAY(AF45)、"日"、"月"、"火"、"水"、"木"、"金"、"土")、"")

という長ったらしい文章は、噛み砕いていいますと、「最後の3日分は、47行目の値が1の時に曜日を表示させ、それ以外の時(つまり0:ゼロ)は表示しない」ということです。

(ж) このようにscriptプログラムを使わずとも、関数のみ曜日を表示することができます。


2012年2月は次の通りになります。




次に、勤務記号はリスト表示で行うというものですが、メニュー・バーより[データ]-[確認]をクリックします。



   ↓


・データの検証ダイアログが表示されます。セル範囲には勤務記号をリストで表示したい範囲を入れます。条件のところを”リストのアイテムに変更します。ラジオボタンを「範囲からリスト作成」にします。その横のテキストボックスには、勤務記号の元データとなるセルをいれます。



これでドロップダウン・リストになりました。


土曜日は”青”、日曜日は”赤”に文字を自動的に変える方法は、条件付き書式で行います。







選択したセルで、文字が”日”なら文字を赤くし、文字が”土”なら青くします。

各集計は、COUNTIF関数で行います。


最後にこのサンプルを、テンプレートギャラリーで公開しています。少しScriptでプログラム作りました(もちろん無料です!!)。




  ↓





尚、パターンの入力を使用される時は、選択セルを勤務表の勤務記号を使用範囲に入れてください。

名称は、work_table


( テンプレート・ギャラリー )

https://docs.google.com/templates?q=work_table&sort=hottest&view=public


(参考HP)

 
 
 
 

2012年5月12日土曜日

エクセルVBAについて

VBAとは Visual Basic for Application の略で、マイクロソフトのオフィースに搭載されているプログラム機能のことです。エクセルの作業を自動化するために広く用いられていますが、本家のVisual Basicに比べれば見劣りするところはあります。
VBAはエクセルの1機能であり、それそのものではありません。ただ、その重要度は増してきています。
エクセル97以前はモジュールシートを追加してプログラムを書き込んでいましたが、以後はVBE(Visual Basic Editor)という本家Visual Basic顔負けの機能が搭載されました。
もちろんエクセルだけでなく、アクセスやワードひいてはアウトルックでも使用可能です。


(簡単なジャンケンゲームのサンプル)

Sub Sample()
    Dim com As Integer
    Dim you As Integer
   
     com = Int(3 * Rnd)
     you = InputBox("ジャンケン、ポン!! (グー=0:チョキ=1:パー=2)")
    
     If com = you Then
        MsgBox "引き分けです・・・・"
     ElseIf (com = 0) And (you = 1) Then
         MsgBox "相手はグー、あなたの負けです・・・"
     ElseIf (com = 0) And (you = 2) Then
         MsgBox "相手はグー、あなたの勝ちです・・・"
     ElseIf (com = 1) And (you = 2) Then
         MsgBox "相手はチョキ、あなたの負けです・・・"
     ElseIf (com = 1) And (you = 0) Then
         MsgBox "相手はチョキ、あなたの勝ちです・・・"
     ElseIf (com = 2) And (you = 0) Then
         MsgBox "相手はパー、あなたの負けです・・・"
     ElseIf (com = 2) And (you = 1) Then
         MsgBox "相手はパー、あなたの勝ちです・・・"
     End If
   
End Sub

実行すると、以下のボックスが表示されます。グーなら0、チョキなら1、パーなら2。好きな番号を入力してOKボタンを押します・


 




・エクセルで作成したジャンケンゲームをダウンロードできます。


またGoogle Spreadsheet Scriptでも同じようなものがつくれます。


これを実行すると・・・・


エクセルのVBAと同じく、InputBoxが表示され数字の”0(ゼロ)”:グーを入力しました。



と、勝ち負けのMsgBoxが表示されます。今回は相手がチョキだったので、私が勝ちました。


function janken_pon() {

    var you = Browser.inputBox("ジャンケン、ポン !!      (グー:0 チョキ:1 パー:2)");

    var com = Math.floor(Math.random() * 3);

    
    if(you == com){Browser.msgBox("引き分けです・・・・");}
  else if((com==0) && (you==1)){
      Browser.msgBox("相手はグーで、あなたの負けです・・・・");} 
  else if((com==0) && (you==2)){
      Browser.msgBox("相手はグーで、あなたの勝ちです・・・・");} 
  else if((com==1) && (you==2)){
      Browser.msgBox("相手はチョキで、あなたの負けです・・・・");} 
  else if((com==1) && (you==0)){
      Browser.msgBox("相手はチョキで、あなたの勝ちです・・・・");} 
  else if((com==2) && (you==0)){
      Browser.msgBox("相手はパーで、あなたの負けです・・・・");} 
  else if((com==2) && (you==1)){
      Browser.msgBox("相手はパーで、あなたの勝ちです・・・・");} 

}

Google Spreadsheetでの実行の仕方は、





MenuBarの[ツール]-[スクリプトエディタ]より




無題のプロジェクトを開いたら、背景色を橙色で塗ったプログラムのところをコピーして貼り付けください。


( 追伸 )「janken_pon」scriptをスクリプトギャラリーに登録・公開することができました。

メニュー・バーの[ツール]-[スクリプトギャラリー]を選択してください。






すると、スクリプトギャラリーのダイアログが表示されます。左にある分類の中から「エンターテイメント」を選択し、右上のテキスト・ボックスに「janken_pon」と入力して隣の検索ボタンを押します。
テキスト・ボックスに下に「janken_pon」の説明文が表示されます。説明文の下にインストール・ボタンがありますので、そこからインストールしてください(無料です!!)。

ご自由にインストール願います・・・・・・・・



Kenggyとコンピュータ

皆さんはご存知ですか? ポケコンや関数電卓を・・・・・・・・
ノートパソコンやタブレット・スマホなどの携帯型端末に代わりに、電卓型のコンピュータのようなものがありました。俗にプログラム電卓なんて云われていました。このポケコン、いまのスマホ位のサイズなのでカバンのなかに入れてよく学校にもって行きました。自分でプログラムを作るのが楽しくて、よく夜更かししたものです。

(簡単なBASICプログラム)  
10 N = 1
20 B = 0
30 input "kingaku = " ;A
40 B = B + A
50 print "kaisuu = " ;N
60 print "goukei = " ;B
70 N = N + 1
80 goto 30
90 end

単純な金額合計をするプログラムです。
入力した回数も表示するようになっています。
これをN88Basicで実行すると、




となります。
(ポケコンもうないので、N88BasicでRUNさせました。)

この後、シャープのMZシリーズ(データはカセットテープに保存)やNECのPC88や98シリーズのパソコン(5.2インチFD)をカジりながら、会社で使用したワープロを経て、WIN3.1からWIN95 → WIN7へと移行していきました。

パソコンが進化していき、より便利なツールになってきました。誰もが簡単にパソコンを操作できる時代になったのです。

しかし、私のようにお手製仕掛を使わないと納得できない者には、面白くないところがあります。