2014年7月17日木曜日

クラウドで請求書・納品書を作成する

さて、今回は請求書と納品書をクラウド(GoogleSpreadsheets)作成してみたいと思います。
これから、このページではGoogleSpreadsheetsのことをGシートと略します。
(面倒くさがりなもので・・・・・・・ !!)

ご期待にどの程度副えるのかわかりませんが ? ? ?
このページが皆様の仕事に少しでもお役に立てれば幸いかと存じます。

                                                kenggy

尚、このサイトは私が以前に公開した「VBAを使わずにExcelで請求書と
納品書を作成する」をGooglespreadsheets版に移植したものです。



★ 概要設計(どんなものをつくるか)


〇 日付と得意先名を基にデータを抽出する



まず、上のデータ(売上データ)をご覧ください。 これはある架空の会社の売上情報をGシートに入力したものです。

( あくまでも架空の情報です ・・・ )
で、この情報を基に請求書や納品書に必要な情報のみを抽出させるといった仕組を考えます。


○FILTER関数について

Gシートで元データから必要なデータのみ抽出させる方法として、filter関数という
機能があります。

まず簡単なデータでやってみましょう。
日付・名前・数値というデータがあります。






上のサンプルで、2014/01/03~2014/01/26までのデータを抽出させたいとします。
セル番地E2(開始日)、F2(終了日)といったところです。

抽出結果をセルH2より表示させるには

=FILTER(A2:C10、A2:A10>=E2、A2:A10<=F2)

--------------------------------------------------------------------

     =FILTER(範囲、条件1、条件2、・・・・・・・)

--------------------------------------------------------------------


となります。(詳細は、関数のヘルプを参照ください)

実際の結果が次の通りになります。






で、日付を2014/0101~2014/01/28に変化させると・・・・




と、データが増えます。

ただ条件が不一致の場合





とエラー表示になります。

こんな場合は条件の修正が必要となります。










〇では売上情報でやってみましょう。

データレコード数は2200、A2からF2200にインプットされています。

      


請求書・納品書の場合は、条件(得意先)が1っ増えで、3っとなります。

また抽出結果としてほしい項目は、日付・商品名・単価・数量・金額です。



本当は、

 =filter(AND(A2:A2200,C2:F2200),A2:A2200>=J3,A2:A2200<=J3,B2:B220=K3)


と一まとめにしたかったのですが、うまくいきませんでした。

そこで、残念ながら2分割する方法を採用しました。



=filter(A2:A2200,A2:A2200>=I3,A2:A2200<=J3,B2:B2200=K3)  ← セルO3へ入力

=filter(C2:F2200,A2:A2200>=I3,A2:A2200<=J3,B2:B2200=K3)  ← セルP3へ入力

上記数式をセルO3に下記数式をセルP3に入力します。開始日と終了日、得意先名を抽出条件欄に入力すると、抽出結果表示欄に必要とするデータ(日付~金額)が表示されます。
また得意先名は、固定なので最終列に列挙し、それをリスト形式で選択する方法をとります。





                                ↓




   リストを作成する方法は、メニュー・バー「データ」→「確認」より”データの検証”
  というダイアログが表示されます。条件のところを「リストを範囲で指定」にし、横
  に条件となる範囲を指定します(ドラッグでも可)






↓





 あとは、この抽出したデータを基に請求書と納品書を作成すればよいのです。


 では、実際にやってみましょう。
 
 例)「食所あんどう」さんの2014/1/1~2014/1/31のデータ





                           ↓

 

              (画像をクリックすると拡大します)


また。一日だけのデ-タ(納品書)を作成する場合は、抽出条件の日付(開始日・終了日共)
に希望する日付を入力してください。両方とも入力しないと、エラーになります。


両方共入力すると、







★ 請求書&納品書のフォーマットを作り抽出したデータとリンクする

       
              (画像をクリックすると拡大します)

  ここのところは、別シートに抽出したデータを単純にリンクさせるだけのことです。
  もし詳細の解説が必要でしたら、「VBAを使わずにExcelで請求書と納品書
  を作成する」をご覧ください。



★ まとめ

(1)      売上情報(データベース)をシートに作る
(2)      その情報を基に関数フォルタで、必要なものだけ抽出する
(3)      抽出したデータと請求書及び納品書のフォーマットをリンクさせる

  と、まあこれくらいで如何でしょうか?

  まだ、ダメですか・・・

  堪忍してください!!!

   最後に、Gシートで作成した請求書&納品書のサンプルを下からダウンロード






2013年6月25日火曜日

プログラムを作ろう!!

今回は、十進BASICでプログラムを作ってみた。




10進数から2進数に変換するプログラムです。

どういうふうになるかと、与えられた数値を2で割って行き余りが0(ゼロ)になるまで続ける。

仮に数字9を入れて見ましょう。





まずプログラムの実行です。メニューバー[実行(R)]→[実行(R)]をクリックします。


INPUTBOXに9と入力します。




すると、割り算が開始され、解が得られます。

答えは1001(余りの上から下へ)となります。

でもGoogleSpreadsheetsでは、こんな厄介なことをしなくても簡単に導き出せます。












関数DEC2BINです。




シートのセル上に、=dec2bin(A2)に入力するだけで解が得られます。
(A2ではなく、直接数字9を入力してもOKです)

*十進BASICはフリーウェアーです。
 Basicを基礎から勉強しようとする方には最適です。
 もしよろしければ、ダウンロードしてみてください。


2012年7月2日月曜日

Kenggyとエクセル

私とエクセルの出会いは、会社内でワープロからパソコンWINDOWSに移行されたのがキッカケでした。ワープロでロータス1-2-3を使っていたので、エクセルの違和感はありませんでした。
ただ単に表やグラフを作成するだけでは飽き足らず、作業の自動化(=プログラム)に取り込むようになりました。これが俗にいうEUC(End User Computing)というやつです。エクセルではVisualBasicというプログラム言語を使います。昔勉強したBasicを改良した感じ(より人間の書く文章に近い)のプログラム言語です。難を云えば、すべて英語の文章になります。でも難解な単語は殆どありませんので、すぐに慣れると思います。

同僚からも、こをいう作業を自動化してほしいという依頼があり悪戦奮闘することもしばしばありました。そんな中、このプログラムはもう少し工夫すれば汎用性が出でくるのではないかという声が出るようになり、その声に押されながら更なる追求を始めました。
そしてその成果を発表することにしました。広く多くの方々に使って頂くためです。

現在のところ、ベクター(Vector)に十数本登録しています。
すべてフリーソフト(無料)です。ご自由にダウンロードしてください。

(ベクターのアドレス)
http://www.vector.co.jp/vpack/browse/person/an030525.html


2012年7月1日日曜日

クラウド(GoogleSpreadsheet)で株価情報を取得する

今回はクラウドの一翼を担うGoogleSpreadsheetで、株価情報を取得したいと思います。

*関数GoogleFinanceについて

GoogleSpreadsheetのみで使用可能な関数、GoogleFinanceはシート上に株価情報を取込む時に使用します。


https://support.google.com/docs/bin/answer.py?hl=ja&answer=155178
(GoogleFinanceの日本語ヘルプ)

◎関数公式
=GoogleFinance(銘柄名及び銘柄コード、株価や出来高等)

例1:トヨタ自動車の株価を取込みます。
   =GoogleFinance (7203,"price")
・銘柄コード7203:トヨタ自動車
・price:株価



例2:パナソニック(旧松下電器)の出来高を取込みます。
   =GoogleFinance (6752,"volume")
・銘柄コード6752:パナソニック
・volume:出来高



例3:ソニーの今日から30日前の終値を取込みます。
   =GoogleFinance (6758,"close",Today()-30,Today())
・銘柄コード6758:ソニー
・close:終値
・Today():今日
・Today()-30:今日から30日前

*値の種類
・open:始値
・close:終値
・high:高値
・low :安値
・volume:出来高
・all   :すべて




注)期間を設定する場合は、開始日、終了日の順に入力します。
    =GoogleFinance(銘柄名及び銘柄コード、株価等、開始日、終了日)


例4:NECの2012年5月1日から2012年6月20日までのすべて(始値・終値・安値・高値・出来高)を取込みます。
   =GoogleFinance (6701,"all","2012/05/01","2012/06/20")
・銘柄コード6701:NEC(日本電気)
・all:すべての値


(画面をクリックすると拡大します)




そこで、「get_stock_info」という名前のファイル作成しました。

                                                (画面をクリックすると拡大します)



セル番地A1に、「=GoogleFinance(H4、I4、J4、K4)」と入力します。いままで直接入力していたところ、わかり易いように各セル(H4~K4)に分けます。


Cord欄(H4)には銘柄コード等を、Value欄(I4)には値の種類(open~all)、Date:Start(J4)欄は開始日、Date:End(K4)欄には終了日を入力します。

                                                (画面をクリックすると拡大します)

またValue欄は6種類しかないので、リスト表示しました。



為替レートの情報を取得したいときは、米ドルの場合「Currency:usdjpy」という文字をCord欄(H4)に入力して下さい。ユーロ等も取得できるように表にしておきました。

最後に、このサンプルをGoogleのテンプレートギャラリーに公開しました。

[テンプレートギャラリー]-[公開テンプレート]から検索「get_stock_info」で表示されます。
この下のアドレスをクリックして下さい。
 
 


(参考HP)

 
 
 
 

2012年6月22日金曜日

クラウドで「ABC分析」表を作成する

今回はクラウドの一翼を担うGoogleSpreadsheetで、在庫管理手法の1っ”ABC分析”表を取り上げたいと思います。

☆ABC分析とは
ABC分析 とは、「重点分析」とも呼ばれ在庫管理などで原材料、製品(商品)等の管理に使われる手法である。製造業などで何千・何万とある原材料・製品を管理運用するうえで、管理工数的にも資産運用上もより効率的に管理するために原材料・仕掛り・製品をそれぞれの所要金額の大小でクラス分けし、それぞれに異なった管理手順を適用する。 その際考慮するのは単価ではなく、単価x数量の金額である。言い換えると高額の物でも殆ど動きがないものより、低価格でも大量に動く材料のほうが重要度が高いということである。 この金額を大きいほうから並べていくと最初の10~20%の点数で所要金額の80~90%を占める、逆に金額の低いほうは点数こそ多いがその総金額が全体に占める割合は僅かである。

A;重要管理品目、B:中程度管理品目、C:一般管理品目 に仕分けをする為の分類である。

クラスの分割は概ね、A 10%、B 20%、C 70%のような割合で分類される。 点数のすくないAクラスを分析管理することが対金額効果が高い。
(ウィキペディアより)




☆分析表の作成



まず上図のような、商品があるとします。在庫金額は、原価 X 在庫数で求められます。

[データ]-[範囲を並べ替え]を使用して、在庫金額の降順(大きい方順)に並べ替えます。


↓




(注)降順は、Z→Aのラジオボタンを選択してください。


並べ替えると、上記画像の背景色が青色の範囲のようになります。

次に、並び替えたデータを新しいワークシートにコピーします。



在庫金額の一番下の列に合計欄を作り、 "=SUM(B2:B11)" を入力します。



続いて在庫金額の横に、金額構成比・累計構成比・ランクの項目を新設します。

(1)金額構成比  商品個別の在庫金額 ÷ 在庫金額の合計 × 100 


もし商品がc002なら、 "=B7/$B$12*100"  となります。

注: $(ドルマーク)はドラッグする時に、ドルマークの付いた文字や数字を固定します。        < 絶対参照といいます >

(2)累計構成比  商品の金額構成比 + 直上の累計構成比


商品c003の累計構成比を表す数式はC3+D2となり、商品a002ならC4+D3です。


(3)ランク  累計構成比の値<=70 → A : 70<値<=80 → B : 値<=81 → C

      「  累計構成比の値が70以下ならランクはA、70を越え80以下ならランクはB、 
81以上ならランクはCとします。」

注)以上・以下はその数値も含みます。



       商品c003のランクを表す数式は =IF(D3<=70,"A",IF(D3<=80,"B","C")) です。

      商品a002なら =IF(D4<=70,"A",IF(D4<=80,"B","C")) ということになります。


今回はABCの分岐点を70・80・90で行いましたが±10の範囲で数値はかえられます。


    *このサンプルケースで解ったこと


↓




最後に、このページのサンプルをGoogleのテンプレートギャラリーに公開しました。

[テンプレートギャラリー]-[公開テンプレート]から検索「ABC分析表」で表示されます。
この下のアドレスをクリックして下さい。

 
 

(参考HP)

 
 
 
 

2012年6月14日木曜日

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

「クラウドで在庫管理表を作成する」の続編として、このページを公開致します。

前回の在庫管理表は、以下ようなものでした。

入出庫表にデータを入力すると、在庫一覧表の現在庫数が自動的に更新される。
例えば、Aという商品が本日10個出庫されたとします。このことを入出庫表にデータ入力するだけで、在庫一覧表の現在庫数が自動的に-10少ない数字に更新されるというものです。

 



↓





(今回の改善点)
前回の在庫表では、現在庫数(入庫数 - 出庫数)のみを表示していましたが、それだけでは真の在庫状況は理解できません。

*在庫状況をより詳細に表示するために以下の項目を入出庫表に追加しました。


(画像をクリックすると大きく鮮明になります)


・引当数とは納入先より注文(受注)が入ったが、まだ出荷日等の関係で出庫されていない(出庫予約)状態にある品物の数量。

・発注数とは仕入先に注文をしたが、まだ納期等の関係で入庫されていない(入庫予約)状態にある品物の数量。

受注によって引当された在庫はいうならばロックオン状態ですので、それを別の受注に使用できません(緊急の場合を除いて・・・)。ですから、従前の現在庫とこの度設定する在庫を区分します。

また、以前の入出庫表では発注状態(発注しているかどうか)を表示する欄がなく、二重発注する可能性がありました。

これら2項目を追加することで、入出庫の前段階も理解できます。


*在庫一覧表の方にも、新たに項目を設定します。



・有効在庫数=現在庫数 - 引当数 (実際に使用可能な在庫数)

・有効残数=(現在庫数+発注数) - 引当数 (発注の要否に必要)         

              (画像をクリックすると大きく鮮明になります)

上の画像で、表の6行目商品コード:B003商品番号:B-3000-666の欄を見てください。

現在庫数15となっているので、15全部使用できるかというそれはできません。引当(受注)が10あり、実際に使用できる在庫数は5となります。つまりこれが有効在庫数なのです。

商品の発注においてもそうです。現在庫数の増減だけで管理していたものが、新たなファクターである有効残数で行うことにより発注のタイミングが正確なものとなります。

もう一度、表の6行目商品コード:B003商品番号:B-3000-666の欄を見てください。
現在庫数15となっていて発注点も10なので、発注する必要ありません。ところが引当数が10で、有効な数量は5しかありません。このタイミングで発注となります。



*引当数の設定方法

↓

                   (引当数の条件配列)


=DSUM(入出庫表!$C$7:$M$100,入出庫表!$K$7,$P$7:$P$8)
引当数の設定は、前回の在庫管理表作成のページでもお話したように、関数DSUMで行います。
DSUM(全データの範囲、集計するフィールド(ここでは引当数)の番号か文字列、条件配列)
条件配列:商品コード、A001 (上記画像参照)


*発注数の設定方法


↓

                   (発注数の条件配列)

=DSUM(入出庫表!$C$7:$M$100,入出庫表!$L$7,$R$7:$R$8)

DSUM(全データの範囲、集計するフィールド(ここでは発注数)の番号か文字列、条件配列)
条件配列:商品コード、A003 (上記画像参照)



*入出庫処理

 ◎入庫処理
  商品が発注 → 入荷したときは、発注数の欄をゼロ(又は空欄)にして、入庫数の欄に数字を入力します。例えば発注数10の商品が入荷した場合は、発注数欄の10をゼロ(又は空欄)にして、代わりに入庫数の欄に10を入れます(下記画像参照)。


 ◎出庫処理
  商品が引当 → 出荷したときは、引当数の欄をゼロ(又は空欄)にして、出庫数の欄に数字を入力します。例えば引当数5の商品が出荷した場合は、引当数欄の5をゼロ(又は空欄)にして、代わりに出庫数の欄に5を入れます(下記画像参照)。



 (注)商品が入出庫した後に受注日や発注日が知りたい場合は、備考欄に何月何日受注・発注と記入されではいかがでしょうか。

何故このような複雑なシステムを作成するかというと、その日に発注した商品が即入荷されて、即日すべて出荷されるなら、入荷数と出荷数さえ管理するればこと足ります。ことろが、実際は商品の入荷には納期がかかるものがあります。また受注においても、納入先の事情(計画)というものがあって納入日を指定してきます(どの会社も最小限の在庫数で対応しています)。それでこのようなもの作成しました。

最後に、このページのサンプルをGoogleのテンプレートギャラリーに公開しました(もちろん無料です!!)。

[テンプレートギャラリー]-[公開テンプレート]から検索「zaiko2」で表示されます。
この下のアドレスをクリックして下さい。



 
(参考HP)