• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルの関数で商品を区別する記号番号をつける方法)

エクセル関数で商品に区別符号をつける方法

kagakusukiの回答

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.4

 今仮に、質問者様の添付画像にあるような表がSheet1に存在しているものとします。  又、Sheet1のF列に廃版となった商品であるか否かを区別するために、取扱いの有無を記入する欄を追加するとともに、Sheet2のA列を作業列として使用するものとします。  まず、Sheet1のF列にも表の枠線を設定して下さい。  次に、Sheet2のA2セルに次の関数を入力して下さい。 =IF(INDEX(Sheet1!$A:$A,ROW())="","",INDEX(Sheet1!$A:$A,ROW())&"☆"&INDEX(Sheet1!$B:$B,ROW())&"☆"&COUNTIF(A$1:A1,INDEX(Sheet1!$A:$A,ROW())&"☆"&INDEX(Sheet1!$B:$B,ROW())&"☆*")+1&"★"&INDEX(Sheet1!$D:$D,ROW())&"★"&COUNTIF(A$1:A1,INDEX(Sheet1!$A:$A,ROW())&"☆*★"&INDEX(Sheet1!$D:$D,ROW())&"★*")+1)  次に、Sheet2のA2セルをコピーして、Sheet2のA3以下に(Sheet1において表の枠が引かれている行の行数を上回るのに十分な行数となる様に)貼り付けて下さい。  次に、Sheet1のC2セルに次の関数を入力して下さい。 =IF(OR(INDEX($A:$A,ROW())="",INDEX($B:$B,ROW())=""),"",IF(COUNTIF(Sheet2!$A$1:INDEX(Sheet2!$A:$A,ROW()),INDEX($A:$A,ROW())&"☆"&INDEX($B:$B,ROW())&"☆1★*"),IF(COUNTIF(INDEX(Sheet2!$A:$A,ROW()),"*☆1★*"),CHAR(96+COUNTIF(Sheet2!$A$1:INDEX(Sheet2!$A:$A,ROW()),INDEX($A:$A,ROW())&"☆*☆1★*")),INDEX($C:$C,MATCH(INDEX($A:$A,ROW())&"☆"&INDEX($B:$B,ROW())&"☆1★*",Sheet2!$A:$A,0))),"【作業列の関数に欠損があります】"))  次に、Sheet1のC2セルをコピーして、Sheet1のC3以下に貼り付けて下さい。  次に、Sheet1のE2セルに次の関数を入力して下さい。 =IF(OR(INDEX($A:$A,ROW())="",INDEX($D:$D,ROW())=""),"",IF(COUNTIF(Sheet2!$A$1:INDEX(Sheet2!$A:$A,ROW()),INDEX($A:$A,ROW())&"☆*★"&INDEX($D:$D,ROW())&"★1"),IF(COUNTIF(INDEX(Sheet2!$A:$A,ROW()),"*★1"),COUNTIF(Sheet2!$A$1:INDEX(Sheet2!$A:$A,ROW()),INDEX($A:$A,ROW())&"☆*★1"),INDEX($E:$E,MATCH(INDEX($A:$A,ROW())&"☆*★"&INDEX($D:$D,ROW())&"★1",Sheet2!$A:$A,0))),"【作業列の関数に欠損があります】"))  次に、Sheet1のE2セルをコピーして、Sheet1のE3以下に貼り付けて下さい。  以降は、Excelのバージョンによってやり方が異なって来るのですが、Excelのバージョンが不明ですので、取り敢えずはExcelのバージョンがExcel2007以降のものである場合の方法を回答致します。  次に、以下の操作を行って、Sheet1のE2以下のセルに入力規則を設定して下さい。 Sheet1のE2セルを選択   ↓ Excelウィンドウの上の方にある[データ]タブをクリック   ↓ 現れた[データの入力規則]ボタンをクリック   ↓ 現れた選択肢の中にある[データの入力規則]をクリック   ↓ 現れた「データの入力規則」ダイアログボックスの[設定]タブをクリック   ↓ 「入力値の種類」欄をクリック   ↓ 現れた選択肢の中にある[リスト]をクリック   ↓ 現れた「元の値」欄に次の様に入力 無し,有り   ↓ 「データの入力規則」ダイアログボックスの[OK]ボタンをクリック   ↓ Sheet1のE2セルをコピーして、Sheet1のE3以下に貼り付け  次に、以下の操作を行って、Sheet1のB列~D列の2行目以下のセルに入力規則を設定して下さい。 Sheet1のA2セルを選択   ↓ [ホーム]タブ内の「スタイル」グループの中にある[条件付き書式]ボタンをクリック   ↓ 現れた「スタイル」グループの中にある[条件付き書式]ボタンをクリック   ↓ 現れた選択肢の中にある[ルールの管理]をクリック   ↓ 現れた「条件付き書式ルールの管理」ダイアログボックスの中にある[新規ルール]ボタンをクリック   ↓ 現れた「新しい書式ルール」ダイアログボックスの「ルールの種類を選択して下さい」欄の中にある[数式を使用して、書式設定するセルを決定]をクリック   ↓ 現れた「次の数式を満たす場合に値を書式設定」欄の中に =INDEX($F:$F,ROW())="無し" と入力   ↓ 「新しい書式ルール」ダイアログボックスの[書式]ボタンをクリック   ↓ 現れた「セルの書式設定」ダイアログボックスの[フォント]タブをクリック   ↓ 現れた「色」欄をクリック   ↓ 現れた背景色のサンプルの中にある薄い灰色の四角形をクリック 「文字飾り」欄の[取り消し線]と記されている箇所をクリックする事でチェックを入れる   ↓ 「セルの書式設定」ダイアログボックスの[OK]ボタンをクリック   ↓ 「新しい書式ルール」ダイアログボックスの[OK]ボタンをクリック   ↓ 「条件付き書式ルールの管理」ダイアログボックスの「適用先」欄をクリック   ↓ Sheet1のA2セルからSheet1のD列における表の枠がある最終行の所にあるセルまでの範囲をまとめて選択   ↓ 「条件付き書式ルールの管理」ダイアログボックスの[適用]ボタンをクリック   ↓ 「条件付き書式ルールの管理」ダイアログボックスの[OK]ボタンをクリックック  これで、サイズ番号やカラー番号が自動的に決められる様になります。  尚、廃版となった商品に関しましては、商品名を削除する事は絶対にしないで下さい。  その代わりに、E列に「無し」と入力する事で区別して下さい。(「無し」と入れますと、自動的に取り消し線が引かれるとともに、表示が薄くなります)

fishman55
質問者

補足

細かく設定までご教授いただき感謝しております。 関数でここまで出きるのだと驚くとともに奥深さと習熟の必要性を強く感じております。 当方が使っているExcelのバージョンはExcel2003 SP3で、共通の方法で行える部分であるサイズ記号とカラー記号を付けていくところまで実現できております。 お教えいただいた以下の部分で「条件付き書式」にて選択肢の[ルールの管理]が見つけられず、以降が進んでいない状態です。 ------------------------------- Sheet1のA2セルを選択   ↓ [ホーム]タブ内の「スタイル」グループの中にある[条件付き書式]ボタンをクリック   ↓ 現れた「スタイル」グループの中にある[条件付き書式]ボタンをクリック   ↓ 現れた選択肢の中にある[ルールの管理]をクリック ------------------------------- 作業の内部実情まではお伝えしていなかったのですが、深いところまでご配慮いただき感謝しております。 実は販売サイト用プログラムから吐き出したCSVを今回のようにエクセル上で表示させ記号の割り振りを行っています。在庫管理そのものを行っていないため商品削除等の操作まで考えていなかったのですが、これから同じようにCSVデータを利用する際に、前データとの参照の際に有効になってくると思います。 実現、即使用できるためものをお教えいただいて非常に感謝致しております。

関連するQ&A

  • エクセルの関数、お願いします<(_ _)>

    AのシートのE列に数百種類の記号が入力されています。 BのシートのC列に都度、記号を入力した際に、AのシートのE列にその記号があれば「入力済み」と表記されるには、どのような関数をどのように使用すればよろしいでしょうか? 宜しくお願いします。

  • 何種類の商品があるか数える関数

    A,C,D列に商品の製造番号が入っています。中には重複しているものがいくつかあるのですが、E列に全部で何種類の製造番号があるか調べる関数はありますか?

  • ひとつも売れてない商品を抽出する関数!

    お世話になります。 エクセルで関数によって色づけをしたいのですが やり方がわからないのでどなたか教えて頂けないでしょうか。 ----------------- 以下のような列があります。 A列 B列 C列 D列 ID サイズ 在庫数 判定結果 IDは商品番号を示していて、データは以下のようになります。 A列 B列 C列 D列 ID サイズ 在庫数 判定結果 A 70cm 5 A 80cm 4 A 90cm 2 B 110cm 4 B 120cm 4 C 90cm 3 C 100cm 3 C 110cm 3 C 120cm 3 C 130cm 3 上記が示しているのは ・Aという商品はサイズが3サイズあり、在庫数はそれぞれ5,4,2着ずつ。 ・Bという商品はサイズが2サイズあり、在庫数はそれぞれ4,4着ずつ。 ・Cという商品はサイズが5サイズあり、在庫数はそれぞれ3,3,3,3,3着ずつ。 今回抽出したいのはBやCのように、各サイズの数が同一のものです。 つまり、「各サイズの在庫が同一ということは多分1着も売れてない」という 性質の商品を抽出したいわけです。 (※各サイズが等しく売れているものも抽出されますがそこは目視で判断します) 商品によって、サイズ分布が違うので行数が変わってきますし、 仕入れ数も違うため、「この数字と等しいということは売れていない」という 判断も出来ません。 この状況で関数を使ってD列にB商品やC商品のような性質の商品に 色付けをしたいと考えているのですが、適切な関数はありますでしょうか? ご回答、どうぞ宜しくお願いいたします。

  • エクセルで A列に商品名 B列に商品番号 C列に管理者 が入っています

    エクセルで A列に商品名 B列に商品番号 C列に管理者 が入っています。 A B C あ 001 佐藤 い 002 鈴木 う 003 田中 え 004 伊藤 お 005 三木 以下600行くらい続いています。 商品名は重複していません。 D列を空列にしE列に商品名をいくつか並べたときに、 F列とG列に商品番号と管理者を表示させたいのですが、 どの関数を使えばいいのかよくわかりません。 環境はエクセル2003です。

  • エクセル 複数行ある同一商品を1行にまとめるには?

    同一内容が入力された複数行の合計を出す方法を教えてください。     エクセルの表でA列に商品名、B列に色の種類、C列~E列にサイズごとの個数がある、まったく同じ商品が、複数行にランダムに掲載されています。 A列、B列で同一の情報を持つ商品について、C列~E列のサイズごとの合計を出したいのです。 例)商品名、色、サイズ個数(C列:Sサイズ、D列:Mサイズ、E列:Lサイズの順です。) A1:Tシャツ B1:ホワイト C1:5 D1:4 E1:3   A2:Tシャツ B2:ブラック C2:3 D2:5 E2:5 A3: Tシャツ B2:ホワイト C3:3 D3:3 E3:2 A4: Tシャツ B2:ブラック C4:3 D4:2 E4:3 各商品が300行程あり、オートサムではやりきれません。 すべての各商品(A列、B列が一致するもの)を1行ごとにまとめたシートを作成するにはどうしたら良いでしょうか?

  • エクセルの関数

    A列に顧客番号(1~300)、B列に顧客名、C列に都道府県、D列に電話番号、E列にグループ(A or B or C)が記入されている データがあります。 例えば、『C列の都道府県が"東京都"』&『E列のグループが"B"』のデータ全ての『A列の顧客番号』と『B列の顧客名』を一覧で求めたい のですが、どのような関数を使えば良いでしょうか? ちなみに、オートフィルターは使用したくありません。 宜しくお願いします。

  • エクセル 関数を教えて下さい。

    ちょっと複雑なのですが、こういう場合の関数の式はどうすれば良いか解る方がおりましたら教えて頂きたいのですが、宜しくお願い致します。 列AではAまたはBを選択し、列Bでは列AのA,Bそれぞれにa,b,c,d,eのいずれかを選択したときに、列Cに列A・列Bで選択したのもに当てはまる記号・数字を表示させるといった関数なのですが、何度挑戦しても引数が限界を超えている等になり出来ません。 もしかすると、根本的に間違っているかもしれません。ちなみにIFを使っていました。 列A  列B  列C A     a     × A     b     2.3.4 A     c     2.3.4 A     d     1.3.4 A     e     2.3.4 B     a     × B     b     2.3.4.10.11.12 B     c     2.3.4.10.11.12 B     d     1.3.4.9.11.12 B     e     2.3.4 列A・列Bを選択すると、列Cに上記の記号・数字を自動表示させたいです。 以上、宜しくお願い致します。

  • ひとつも売れてない商品を抽出する関数!(改)

    お世話になります。 エクセルで関数によって色づけをしたいのですが やり方がわからないのでどなたか教えて頂けないでしょうか。 ----------------- 以下のような列があります。 A列 B列  C列   D列 ID サイズ 在庫数 判定結果 IDは商品番号を示していて、データは以下のようになります。 A列 B列  C列   D列 ID サイズ 在庫数 判定結果 A  70cm   5 A  80cm   5 A  90cm   0 B  110cm  4 B  120cm  4 C  90cm   3 C  100cm  3 C  110cm  3 C  120cm  3 C  130cm  3 D 50cm 0 D 60cm 0 D 70cm 0 上記が示しているのは ・Aという商品はサイズが3サイズあり、在庫数はそれぞれ5,5,0着ずつ。 ・Bという商品はサイズが2サイズあり、在庫数はそれぞれ4,4着ずつ。 ・Cという商品はサイズが5サイズあり、在庫数はそれぞれ3,3,3,3,3着ずつ。 ・Dという商品はサイズが3サイズあり、在庫数はどれも0着で売切れ。 今回まず抽出したいのはBやCのように、各サイズの数が同一のものです。 つまり、「各サイズの在庫が同一ということは多分1着も売れてない」という 性質の商品を抽出したいわけです。 (※各サイズが等しく売れているものも抽出されますがそこは目視で判断します) 商品によって、サイズ分布が違うので行数が変わってきますし、 仕入れ数も違うため、「この数字と等しいということは売れていない」という 判断も出来ません。 この状況で関数を使ってD列にB商品やC商品のような性質の商品に 色付けをしたいと考えているのですが、適切な関数はありますでしょうか? ※A商品は多分仕入れが5着ずつで90cmのサイズだけ売れています。  残りのサイズは1着も売れていないということになりますが、  希望しているのはどのサイズも1着も売れていないというものなので  A商品は抽出されてほしくありません。  (この場合も各サイズが同じ数売れている時に抽出されるのはOKです。   最後に目視で除外します。) B,C商品には、同じID内の一番上の行のD列に「売れてない」と表示されてほしいです。 最後に、D商品は、逆に全て売り切れているという商品ですので  「完売」という色を付けたいです。 これも同じID内の一番上の行のD列に「完売」と表示されてほしいです。 ご回答、どうぞ宜しくお願いいたします。

  • エクセルで商品を振り分ける方法ありますか?

    すみません、エクセル関数を使ってシート別に商品を一括して振り分けることはできますでしょうか? 内容としては、以下のように商品名が単語になっていない場合に、 桃やみかんといったキーワードを抽出して振り分ける形になります。 また、VBAでは知識がありませんので、後々いろいろな形に変更できる 関数で行いたいのですが、ご教示頂けませんでしょうか? シート1:商品一覧(商品データ)  A列(商品名)      B列(商品コード)    C列(金額)  新鮮な桃20個セット    14568        ¥3,450  美味しいみかん1ケース  23456        ¥2,980  山形直送!さくらんぼ   87666        ¥4,500    ・    ・    ・ シート2:桃(”桃”が入っている場合に振り分けられるようにしたいです。)  A列(商品名)      B列(商品コード)    C列(金額)  新鮮な桃20個セット    14568        ¥3,450    ・    ・    ・ シート3:みかん(”みかん”が入っている場合に振り分けられるようにしたいです。)  A列(商品名)      B列(商品コード)    C列(金額)  美味しいみかん1ケース  23456        ¥2,980    ・    ・    ・ シート4:さくらんぼ・・・・・ といったようにしたいのですが、ご教示いただけませでしょうか? シートは予め必要分だけ作っておきます。 何卒宜しくお願い申し上げます。

  • エクセル関数

    エクセル関数を教えてください。 下記のシフト表のようなものを作成しているのですが、 【Sheet1】    A列    B列  C列   D列 ・・・・  1 氏名    4/8   4/9   4/10・・・・ 2 勤務者名  ●   △    ■ B列以降は連続した日付で 2行目は出勤日に記号を入力します。 記号は仕事種類によって違うので、種類はいろいろあります。 ちなみに、【Sheet1】のひな形は変更不可です。 この表を元に【Sheet2】に勤務者名を入力すると、 最初に出勤した日と、最後に出勤した日を表示させたいのです。 IFやVLOOK関数を使うのかな?と思いいろいろやってみたのですが、 うまくできませんでした。。。 ご協力よろしくお願いします。