タグ別アーカイブ: Excel

AmazonのSellerCentralから取得した情報をExcelで処理してみる

FBAがスゴク便利で、ちょいちょいAmazonに出品する機会がある。

そのなかで、Amazonの集客力を利用して赤字で在庫を処分する、というケースも想定される。

この場合、SellerCentralの「Amazon出品コーチ」が指示してくれる「在庫の補充を推奨する商品」では、さすがに自動的に弾いてくれるという事はない。

これは単純に過去の販売数量と在庫数あたりから補充の推奨を促しているだけなので、赤字でも格安で処分に走った商品なのか、今が旬の売れ筋商品なのかまでは気を遣ってくれない。当たり前だけど。

そこで、今回はExcel君に頑張ってもらった。

目的としてはFBA在庫として拡販・処分販売を行っていく商品の選別というのが第一。

そこで参照する、SellerCentralからダウンロードできるレポートで必要なのは

「レポート」→「ビジネスレポート」→「詳細ページ 売上・トラフィック」のCSVデータ
 ※ 直近30日の売上データを参照したい

「在庫」→「出品レポート」→「出品詳細レポート」のTAB区切りなtxtファイル
 ※ 現在価格や出品者側の在庫数を参照したい

「レポート」→「フルフィルメント」→「在庫受領レポート」
 ※ FBA納品日や数量を参照したい

「レポート」→「フルフィルメント」→「在庫健全性レポート」
 ※ 「売上・トラフィック」のCSVと被るが、過去30日、90日、または保管手数料などを参照したい

「SKUと自社で使用している販売管理ソフトなどで登録されている商品コード等との紐付けファイル」
 ※ こればかりは会社によって事業所によって異なると思う。
   AmazonでのSKUから、直接、仕切や社内在庫が検索できるなら不要。
   しかし、SKUがそのまま社内で使用している販売管理システムで通用するわけではないと思うので、
   今回は、SKUと社内で使用中の管理システムとを橋渡ししてやるためのリストを作った。
   データベースでいうところのリレーションというやつかしらね?

という、これら5つのファイルを用意する。

とはいっても、4つはAmazonが自動的に作ってくれるもの。

もう1つはSKUと自社システムとの紐付けファイルだけど、これは結局、運用するExcelファイルにシートとして用意して随時入力する方式とした。
(SKUと自社システムの管理コードが完全一致ならメチャ楽、ということなんだけど、逆をいえば、SKUと自社システムの管理コードとに全く関連がないと、全て手作業で入力しなければならないという可能性がなきにしもあらず)

で、出来上がったのがこんな画面。

fba_01


当たり障りのないデータを用意してみたつもりだけど、モザイクがうざくてすみません。

要は、これで現在価格と粗利、損益分岐点(ボーダー)、FBAへ最後に納品した日とその数量、納品アラート、過去30日間・90日間の販売数、ほぼリアルタイムに近い直近30日間の販売数、それらから求める月間予想粗利あたりがパッと見でわかる。
(粗利とはいっても販売手数料とFBA送料はさっ引いてるので、わりと純利益に近いかも)

で、わりと面倒なのがFBAへの納品手続き。

一つの商品を納品するならまだしも、複数の商品を納品しようとしたら「納品プランファイルをアップロード」という機能を使うと超便利。

その為に、ユーザーフォームを作って、出荷を推奨するデータのみに絞り、そこから本当に出荷すべき商品を「納品プランファイル」として作成するようにした。

こんな画面で作成時間のわりに、以外と使いやすかったりする。

fba_02


この画面だと「粗利率 1.99%」みたいになってる2919行目の商品は、もうやめてもいいよね。
3005行目も5%切ってるし、直近の30日間で2個しか売れてないとか、販売する意味ないよね。

そんな感じで「納品推奨」の中から「本当に納品すべきもの」を絞り込んでリストを作る。

納品したい商品にチェックを入れて、納品したい数量を入力して、「納品プランファイル作成」ボタンを押す。

出来上がったファイルをAmazonにアップロードすれば、後は「配送ラベル」を出力して、

混在在庫なら、商品を梱包し、

混在在庫じゃなければ、それぞれの商品にラベルを貼って梱包し、

発送すれば完了。

SellerCentralって確かに便利なんだけど、FBAに納品すべきかどうかを判断するのには、いくつかのレポートを見たり、在庫状況を確認したり、手数料を確認したり、なんだかんだでステップ数があるので、こうしてExcelにでもしておくと便利。

FBAへの出荷はおかげで漏れがなくなってきたかな。

Excel vba でIEを操作してみる 【 IEがすでに起動しているかどうかの判別 】

Dim ie_obj As Object
Dim ObjShell As Object
Dim ObjWindow As Object
Dim WinExist As Boolean
Dim WinPage As String

WinExist = False
Set ObjShell = CreateObject(“Shell.Application”)
For Each ObjWindow In ObjShell.Windows
  If TypeName(ObjWindow.Document) = “HTMLDocument” Then
    WinExist = True
    Set ie_obj = ObjWindow
    If ie_obj.locationName = “Google” Then
      WinPage = “opend”
    End If
  End If
Next
‘ WinExist、IEが起動していたらTrueにするが、最初はFalse

‘ For Each でウィンドウがある限り繰り返し処理
‘ そのウィンドウのドキュメントタイプがHTMLかどうか
‘ HTMLならIEなのでWinExistにTrueを代入
‘ 見つけたIEをオブジェクトに代入
‘ さらに、そのロケーションネーム(タイトル)がGoogleかどうか
‘ GoogleならWinPageを”opened”にする

WinExist や WinPage なんてのはあってもなくても良いけど、

「IEが起動していなければ立ち上げる」とか
「IEは起動しているけど、目的のページ(タイトル)ではないから移動する」とか

そんな条件分岐に使ったりしても良いかと。

また、「locationName」を「locationURL」とすればURLを取得できるので、特定のURLを探し出したりすることもできる。

他にも

ie_obj.Name
ie_obj.Path
ie_obj.FullName
ie_obj.Width
ie_obj.Height
ie_obj.Left
ie_obj.Top
名前(Internet Explorer と入る)
パス(ディレクトリ名まで)
フルパス(ファイル名まで)
ウィンドウの横幅
ウィンドウの高さ
ウィンドウの左端からの位置
ウィンドウの上端からの位置

といった感じで情報を取得できる。

Excel vba でIEを操作してみる 【 とにかくまずはIEを起動 】

下記3行で、IEは起動する。

Set ie_obj = CreateObject(“InternetExplorer.Application”)
ie_obj.Visible = True
ie_obj.Navigate2 “http://www.google.co.jp”

基本的にはこれだけなんで、簡単。

ここで Navigate2 というのをつかっているけど、Navigate というのももちろんある。
が、特に理由がなければ 2 を使った方が良いでしょう。
後々「新規タブで開きたい」なんて時には 2 でないとできないことがあるので。

ちなみに、新規タブで開くには

ie_obj.Navigate2 “http://www.google.co.jp”, 2048

と第二引数に「2048」を指定する。(16進数で「&H800」とかでもいい)
また、ここを「4096」(16進数では「&H1000」)にすると、新規タブで開くけど、非アクティブな状態になる。

 
 
そのほか、知っていると便利なオプションがいくつか

「objIE.Visible = True / False」
 IEの表示・非表示設定。Trueで表示。
 IEの操作開始時はFalseにしておいて、一通りそうさが終わったらTrueにすると良いかも。
 まぁ、自動でIEが操作されて画面が遷移していくのを眺めてるのも面白いけどね。

「objIE.FullScreen = False」
 フルスクリーン表示にするかウィンドウ表示にするか。
 デフォルトはFalseでウィンドウ表示。フルスクリーンにしたければTrueに。

「objIE.Top = 100」
「objIE.Left = 100」
「objIE.Width = 800」
「objIE.Height = 600」
 位置情報の指定。そのまま、ですな。

「objIE.Toolbar = True / False」
 ツールバーの表示・非表示を設定。デフォルトはTrueで表示する。

「objIE.MenuBar = True / False」
 メニューバーの表示・非表示を設定。デフォルトはTrueで表示する。
 ただ、IE7以上では見かけ上、メニューバーが表示されない。
 「Alt」を押すとでてくるので、あえてこれをFalseにするのは対象がIE6の時くらいかな?
 尚、ツールバーを非表示にすると、メニューバーも自動的に非表示設定になる。
 メニューバーをTrueにしてもツールバーがFalseだと表示されない。
 
「objIE.AddressBar = True / False」
 アドレスバーの表示・非表示を設定。デフォルトはTrueで表示する。
 これもツールバーを非表示にすると自動的に非表示設定になる。
 しかし、ツールバーをFalseにした後に、アドレスバーをTrueにすれば表示できる。
 (各順番が逆になると当然表示されない)

「objIE.StatusBar = True / False」
 ウィンドウ最下部のステータスバーの表示・非表示設定。デフォルトはTrueで表示する。