- ベストアンサー
エクセルで製品番号から生産日をチェックする方法
- 質問者はOffice(Excel)のビギナーであり、製品の番号(製造番号)から生産日を確認する方法を知りたいとしています。
- 現在は製造番号と生産日の表を見ながら手作業で入力していますが、関数を使用して自動判別できる方法を模索しています。
- IF関数とLEFT,RIGHT関数を組み合わせて試したが、種類が多くなると複雑でうまくいかなかったため、簡単にチェックできる方法を知りたいとしています。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (3)
- kagakusuki
- ベストアンサー率51% (2610/5101)
回答番号ANo.3です。 それから、もし、御使用されているExcelのバージョンが、エクセル2007よりも前のバージョンである場合には、COUNTIFS関数やSUMIFS関数が使えませんので、Sheet2のB2セルに入力する関数は、次の様なものになります。 =IF(SUMPRODUCT((Sheet1!$A$1:INDEX(Sheet1!$A:$A,MATCH(10^5,Sheet1!$B:$B))=LEFT(A2,4))*(Sheet1!$B$1:INDEX(Sheet1!$B:$B,MATCH(10^5,Sheet1!$B:$B))<=REPLACE(A2,1,4,)*1)*(Sheet1!$C$1:INDEX(Sheet1!$C:$C,MATCH(10^5,Sheet1!$B:$B))>=REPLACE(A2,1,4,)*1))=0,"該当無し",INDEX(Sheet1!$D:$D,SUMPRODUCT(ROW(Sheet1!$B$1:INDEX(Sheet1!$B:$B,MATCH(1E+99,Sheet1!$B:$B)))*(Sheet1!$A$1:INDEX(Sheet1!$A:$A,MATCH(1E+99,Sheet1!$B:$B))=LEFT(A2,4))*(Sheet1!$B$1:INDEX(Sheet1!$B:$B,MATCH(1E+99,Sheet1!$B:$B))<=REPLACE(A2,1,4,)*1)*(Sheet1!$C$1:INDEX(Sheet1!$C:$C,MATCH(1E+99,Sheet1!$B:$B))>=REPLACE(A2,1,4,)*1))))
お礼
バージョンでの違いまで補足いただき、ありがとうございます。正直、出てくる関数が多すぎて私にはなかなか理解が難しいですが、此れを機に勉強したいと思います。
- kagakusuki
- ベストアンサー率51% (2610/5101)
まず、適当なシート(例えばSheet1)に、製造番号と生産日の関係を表す、次の様なリストを作成して下さい。 A列 B列 C列 D列 1行目 記号 先頭番号 末尾番号 生産日 2行目 AABB 00001 10000 2000 3行目 AABB 10000 99999 2005 4行目 ACBB 00001 10000 2007 5行目 ACBB 10000 99999 2010 この時、B列とC列には、以下のような操作を行って、セルの書式設定を[ユーザー定義]の[00000]として下さい。 B列の最上部にある「B」と記されているマスにカーソールを合わせてから、マウスの左ボタンを押しっ放しにし、そのままカーソルを右隣にある「C」と記されているマスまで移動させてからボタンを放す ↓ 選択範囲を示す黒い太枠の内側にカーソルを合わせてマウスを右クリック ↓ 現れた選択肢の中から、[セルの書式設定]を選択してクリック ↓ 現れた[セルの書式設定]ウィンドウの[表示形式]タグをクリック ↓ [分類]欄の中にある[ユーザー定義]を選択してクリック ↓ [種類]欄に 00000 と入力 ↓ [セルの書式設定]ウィンドウの[OK]ボタンをクリック それから、D列の生産日のデーターは、 2000年製 の様な文字列データーではなく、 2000 の様な数値か、或いは 2000/1/1 の様な日付のデーターとして下さい。 又、生産日のデーターは、西暦年を表す数字と、年月日まで記された日付のデーターを、混在させたりはせず、必ずどちらかに統一して下さい。 次に、別のシート(例えばSheet2)の A1セルに 製造番号 B1セルに 生産日 と入力して下さい。 次に、Sheet1のリスト中の生産日のデーターが日付で入力されている場合には、以下の様な操作を行って、Sheet2のB2セルの書式設定を[日付]として下さい。(尚、生産日のデーターが日付ではなく、年数を表す整数値で入力されている場合には、セルの書式設定は変更せずに[標準]のままとして下さい) Sheet2のB2セルセルにカーソルを合わせてマウスを右クリック ↓ 現れた選択肢の中から、[セルの書式設定]を選択してクリック ↓ 現れた[セルの書式設定]ウィンドウの[表示形式]タグをクリック ↓ [分類]欄の中にある[日付]を選択してクリック ↓ [ロケール]欄が現れない場合には次の操作に進み、現れる場合には、[ロケール]欄の中にある[日本語]を選択してクリックしてから、[カレンダーの種類]欄の中にある[西暦]を選択してクリック ↓ [種類]欄の中にある 2001/3/14 という様な形式で記されている日付をを選択してクリック ↓ [セルの書式設定]ウィンドウの[OK]ボタンをクリック そして、御使用されているExcelのバージョンが、エクセル2007以降のバージョンである場合には、Sheet2のB2セルに次の様な関数を入力して下さい。 =IF(COUNTIFS(Sheet1!$A:$A,LEFT(A2,4),Sheet1!$B:$B,"<="&REPLACE(A2,1,4,)*1,Sheet1!$C:$C,">="&REPLACE(A2,1,4,)*1)=1,SUMIFS(Sheet1!$D:$D,Sheet1!$A:$A,LEFT(A2,4),Sheet1!$B:$B,"<="&REPLACE(A2,1,4,)*1,Sheet1!$C:$C,">="&REPLACE(A2,1,4,)*1),"") 後は、Sheet2のA2セルに製造番号を入力すると、Sheet2のB2セルに生産日が表示されます。
- kmetu
- ベストアンサー率41% (562/1346)
たとえば A列 B列 C列 AABB 00001 2000年製 AABB 09999 2000年製 AABB 10000 2005年製 AABB 99999 2005年製 ACBB 00001 2007年製 ACBB 09999 2007年製 ACBB 10000 2010年製 ACBB 99999 2010年製 という表を作成して(B列は文字列としてください) F1に製品番号があるとした場合 =VLOOKUP(RIGHT(F1,5),INDIRECT("B" & MATCH(LEFT(F1,4),A:A,0) & ":C" & MATCH(LEFT(F1,4),A:A,0)+3),2) で製造年が取り出せます。 +3 はAABBなど同一データの数-1 としてください。例の場合同一は4なので3にしています。
お礼
早速のご回答ありがとうございました。 INDIRECTやMATCHなどあまりなじみがない関数も勉強できました。
お礼
ありがとうございます。 いろんな方法がありますが、これが一番シンプルにできました。