人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルの関数を使って商品のサイズ、色にそれぞれ区別する記号番号を付けていくのに苦労しています。
この度は私の質問に目を留めて頂きありがとうございます。
作業については次の通りで 画像の上が作業前、下が作業後の状態です。

A列に商品種類名称番号が商品の数ごとにならんでいます。
B列にはサイズ名、D列にカラー名をそれぞれ並べています。
C列にB列のサイズ名を区別するための番号、E列にD列のカラー名を区別する番号を付けていく作業を現在手作業で行っています。

C列のサイズ番号(記号)、E列のカラー番号(記号)ともに A列にまとめている商品種類ごとに個別のアルファベットと番号をあてていっています。
画像下図の作業結果のように単純にその商品のサイズが3種類ならa,b,c、色種類が5種なら1,2,3,4,5 というように付けています。

商品種類が3000以上、商品数は15000種類を超えるため、関数などで置き換えて短時間で行えないかと模索していますがなかなか思うようにいきません。
置き換える手段がございましたらご教授いただけると幸いです。

もちろんサイズ名部分、カラー名部分と分けてでも結構です。よろしくお願い致します。

1382531158
●拡大する

●質問者: hatarakuojisan2011
●カテゴリ:ビジネス・経営 コンピュータ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● Mook
ベストアンサー

関数でもできるとは思いますが、マクロの例です。

Sub Sample()
 Dim dicSize
 Set dicSize = CreateObject("Scripting.Dictionary")

 Dim dicColor
 Set dicColor = CreateObject("Scripting.Dictionary")
 
 Dim r As Long
 Dim product As String
 For r = 2 To Cells(Rows.Count, "A").End(xlUp).Row
 If Cells(r, "A").Value <> product Then
 dicSize.RemoveAll
 dicColor.RemoveAll
 product = Cells(r, "A").Value
 End If
 
 If dicSize.Exists(Cells(r, "B").Value) = False Then dicSize(Cells(r, "B").Value) = Chr(97 + dicSize.Count)
 Cells(r, "C").Value = dicSize(Cells(r, "B").Value)
 
 If dicColor.Exists(Cells(r, "D").Value) = False Then dicColor(Cells(r, "D").Value) = dicColor.Count + 1
 Cells(r, "E").Value = dicColor(Cells(r, "D").Value)
 Next
End Sub

ALT+F11 で開いたウィンドウで、挿入⇒標準モジュールを選び
そこへ上記コードをコピーしウィンドウを閉じます。

EXCELに戻って ALT+F8 で Sample を選んで実行です。


hatarakuojisan2011さんのコメント
マクロというものへの敷居が高く、頭の隅にはありましたがお教えいただいたもので必要を満たしていただけたのであらためて驚嘆です。 ひじょうに感謝です。 ありがとうございました。

2 ● lang_and_engine

質問なさった内容は,表計算ソフトを使っていると必ず生じるニーズです。

ですから,そのために VLOOKUP という関数が準備され,一般的に使われています。

EXCELの関数の,いちばん基礎の部分だと思って下さい。したがってマクロは必要ありません。


サンプルと使い方:
http://www11.plala.or.jp/koma_Excel/contents3/mame3023/mame302301.html
「得意先を入力すると,それに対応する地区が自動的に入力される。」
「商品名を入力すると,それに対応する金額が自動的に入力される。」


今やりたいことは,
「サイズ名を入力すると,サイズ記号が自動的に入力される。」
「カラー名を入力すると,カラー記号が自動的に入力される。」
というものですよね。

Excelを使う上での必須知識ですので,どうぞお試しを。


lang_and_engineさんのコメント
>hatarakuojisan2011さん, 私の回答で指摘が漏れている部分を,コメント欄で うぃんど さんが補足して下さいました。ご参照ください。 黒ならいつも1,Mならいつも2 のようなシンプルなルールを作ることができれば,表の作成はとても楽になります。 それができない場合,Excelに標準装備された関数では,表を作るのが大変になってしまいます。マクロをご利用ください。

hatarakuojisan2011さんのコメント
私の質物にご回答いただきありがとうございます。 表記がわかりにくく申し訳ございませんでした。実はもっとサイズ名、カラー名はメーカーサイドの表記をこの表に取り入れ、別のソフトで利用するための商品認識用に記号番号を振ってく作業に使っています。ひとつひとつに統一性を今回の番号割り振りにてはじめて行うというところです。 お教えいただきましたVLOOKUP関数はあらためて表内の管理で利用させていただきます。 ありがとうございました。

lang_and_engineさんのコメント
S,M,Lなどではなく,実際にはもっと複雑で,メーカーごとの表記を使う必要がある という事でしょうか。シンプルなルールにはできないのですね。 メーカ別・なおかつ商品別に表記が異なるとすると 手作業が多くなる可能性もありますが,頑張ってください。 回答1さんのマクロで必要が満たせたならよかったです。 ※VLOOKUPの参考ページ Excel表で,VLOOKUP関数に複数条件を指定したいケースの対処法 http://d.hatena.ne.jp/TipsMemo+computer-technology/20131024/p1 >この1つの条件なら,必ずこの値。 >というふうに,「辞書式」に対処できるような場合であれば,どんどんVLOOKUPを使うべきだ。 >例えば,「北海道なら1」とか。 >だから,このVLOOKUP関数を使えるような「シンプルなルール」を作ることが,表作成の上で重要になる。 >こういう「シンプル化」を試みないと,表の作成は複雑になる。 >だが,VLOOKUP関数をどうしても適用できないケースが実際に存在する。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ