コスト削減において、もっとも大きいな削減は人件費となりますが、通常の業務を少しDXすることでコスト削減を図ることが可能です。
■社内DXの依頼内容
お客様に送る郵送物を、封入物の重さによって印刷会社1・2・3に分類しコスト削減を図りたい。
■社内DXの条件
・封入物はA~Eの5種類
封入物A:2g
封入物B:3g
封入物C:5g
封入物D:10g
封入物E:15g
・郵送物の重さによって印刷会社を変える
15g未満:印刷会社1
35g未満:印刷会社2
35g以上:印刷会社3
・リストは横方向に順不同で封入物が記載されている
■諸元
・封入物のリストから重さを検索する
・検索には連想配列(Dictionaryオブジェクト)を使用して検索を高速化する
・封入物の総重量によって印刷会社を1~3で設定
■作成方法
1.シート「リスト」に顧客情報と封入物のリストを用意(今回は項番1~100でセット)
2.シート「封入物リスト」に封入物名と重さのリストを用意
3.実際にマクロを書いていく
Sub Insatsu_List()
Dim y As Long '/--行周回用のカウンタ--/'
Dim x As Integer '/--列周回用のカウンタ--/'
Dim dicFunyu As Object '/--封入物の連想配列用オブジェクト--/'
Dim strKey As String '/--検索用キー格納--/'
Dim lngOmosa As Long '/--重さを格納--/'
Dim strKaisha As String '/--印刷会社名--/'
'/--オブジェクトを連想配列(Dictionary)としてセット--/'
Set dicFunyu = CreateObject("Scripting.Dictionary")
'/--連想配列作成--/'
For y = 2 To 6
strKey = Sheets("封入物リスト").Cells(y, 1).Value
lngOmosa = Sheets("封入物リスト").Cells(y, 2).Value
'/--連想配列に検索キー(strKey)と値(lngOmosa)を格納--/'
dicFunyu.Add strKey, lngOmosa
Next y
'/--リスト内のデータに重さ、印刷会社を記入--/'
For y = 2 To 101
lngOmosa = 0
For x = 3 To 7
strKey = Sheets("リスト").Cells(y, x).Value
lngOmosa = lngOmosa + dicFunyu.Item(strKey)
Next x
Sheets("リスト").Cells(y, 8) = lngOmosa
Select Case lngOmosa
Case Is < 15
strKaisha = "1"
Case Is < 35
strKaisha = "2"
Case Is >= 35
strKaisha = "3"
End Select
Sheets("リスト").Cells(y, 9) = strKaisha
Next y
Set dicOmosa = Nothing
End Sub
■マクロ解説
1.連想配列の作成
'/--オブジェクトを連想配列(Dictionary)としてセット--/'
Set dicFunyu = CreateObject("Scripting.Dictionary")
'/--連想配列作成--/'
For y = 2 To 6
strKey = Sheets("封入物リスト").Cells(y, 1).Value
lngOmosa = Sheets("封入物リスト").Cells(y, 2).Value
'/--連想配列に検索キー(strKey)と値(lngOmosa)を格納--/'
dicFunyu.Add strKey, lngOmosa
Next y
・Set dicFunyu = CreateObject("Scripting.Dictionary")
dicFunyuというオブジェクトをDictionaryとしてセットします。
※Officeの365とか、なぜか旧Verと参照設定が異なる場合があるので、基本参照設定を使わないで作成しています
・dicFunyu.Add strKey, lngOmosa
連想配列に検索キー(strKey)と値(lngOmosa)を代入します。
ルールとしては必ず検索キー1に対して値1となること。
Excel関数のVlookupとかみたいに検索キー1つに対して複数の値をとることはできません。
※アイデア次第でやる方法はいくつかありますが別の機会に。
2.重さの取得
strKey = Sheets("リスト").Cells(y, x).Value
lngOmosa = lngOmosa + dicFunyu.Item(strKey)・strKey = Sheets("リスト").Cells(y, x).Value
strKey に封入物名を代入します。
・lngOmosa = lngOmosa + dicFunyu.Item(strKey)
検索キー(strKey)からItem(値)を取り出します。
いかがでしょうか。
このように、少しのアイデアで十分に社内DXが実現できるようになります。
■社内DX案件紹介
【社内DX案件紹介】データの期間によってレコードを分割しファイル出力する




0 件のコメント:
コメントを投稿