- ベストアンサー
商品番号ごとのバリエーションを結合する方法
- 商品番号ごとのバリエーションを結合する方法について説明します。
- A列に異なる商品番号、B列にバリエーション(色名)が書かれた列があります。同じ商品番号に複数のバリエーションが割り振られている場合、それぞれのバリエーションを結合する方法を紹介します。
- 実際のファイルでは一つの商品番号に20種類のバリエーションがある場合もあります。その場合はどうすればいいかも解説します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>再度確認ですが、もう一つ横に本体のカラーだけでなく、脚カラーというもう一つのバリエーションがあった場合でも応用できますでしょうか? 回答No.1の数式はC列が使われていないものとしていますのでC列に他の情報を既に入力しているのであれば未使用の列に振り替えて頂ければ良いと思います。 数式からどのような処理をしているかを読み取れないと仕様が変わったときに自己解決できません。 従って、このサイトに質問するだけでなく自習でレベルアップするように心掛けてください。 尚、VBAでの処理について検証してみましたので結果を提示します。 コードは次のようになります。 但し、連結文字列の保存先はあなたの都合で変更してください。 Sub Sample() max = Cells(Rows.Count, 1).End(xlUp).Row j = 1 Cells(j, "C") = Trim(Cells(j, "B")) For i = 2 To max If Cells(i, "A") <> "" Then If Trim(Cells(i, "A")) = Trim(Cells(j, "A")) Then If InStr(Cells(j, "C"), Trim(Cells(i, "B"))) = 0 Then Cells(j, "C") = Cells(j, "C") & "/" & Trim(Cells(i, "B")) End If Else j = i Cells(j, "C") = Trim(Cells(i, "B")) End If End If Next i End Sub
その他の回答 (3)
商品番号ですが、色とデザイン・サイズで極端に 1 A:黒:S 2 A:黒:M 3 A:赤:S 4 A:緑:L みたいに考えるんですが、これではダメで、品種20、色10、サイズ なら 10043 みたいな商品番号で管理します。 2桁目と3桁目から「黒」だけ抽出したり、4桁目と5桁めから商品を抽出したりできます。 今は、商品(データ)種別と色から判別しようとしてます。
- bunjii
- ベストアンサー率43% (3589/8249)
>関数でどのようにすればよろしいのでしょうか? 商品番号が整列されているのであれば上から順に文字列の連結をすれば良いと思います。提示のデータのA1="001"、B1=" ブラック"でA2="001"、B2=" ホワイト"とし、以下提示の状態であればC1に =TRIM(A1) 、C2に =IF(A1=A2,C1&"/"&TRIM(B2),TRIM(B2)) と設定します。 C2セルを下へ必要数コーすれば順次連結された文字列がC列にできますので商品番号の切れ目に目的の文字列が出来ています。 目的の処理は関数よりVBAで処理した方が簡単でしょう。 VBAのコードは検証が必要なので暇を見て検証した結果を提示します。
- aokii
- ベストアンサー率23% (5210/22062)
A2セルに001、B2セルにブラック、が記載されているとして、まずは、A列を基準に並べ替えてから、 C2セルに以下の式を入れて下にドラッグコピーし、 =IF(A2=A1,C1&"/"&B2,B2) D2セルに以下の式を入れて下にドラッグコピーしてみてくだい。 =IF(A2=A3,"",C2)
補足
問題なくできましたが、IF文の関数をあまり使わないのでこの式の意味を教えていただけますでしょうか? また、この式は横の列にカラーではない別のバリエーションがあっても応用できますでしょうか?
補足
再度確認ですが、もう一つ横に本体のカラーだけでなく、脚カラーというもう一つのバリエーションがあった場合でも応用できますでしょうか?