- ベストアンサー
重複したものを削除する関数みたいなもの
A-001 A-001 A-002 A-003 B-001 B-002 A-001 C-001 C-002 とあったときに仮に9個の製品コードであるとして、 A-001は3回でてきていますので種類としては7種類の 製品コードということになります。 質問1:様々ある素材のうち重複しているものは1つだけカウントして上記の7というような値を求める関数がありますか? 質問2:もともとの素材を重複している分は削除し、以下のように素材そのものを重複していないものだけにする方法はありますか? A-001 A-002 A-003 B-001 B-002 C-001 C-002
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
回答1 =SUMPRODUCT(1/COUNTIF($A$1:$A$9,A1:A9)) 回答2 「データ」「フィルタ」「フィルタオプションの設定」で 「重複するレコードは無視する」にチェックして「OK」 でお望みの表示になります。 後は範囲をコピーして別のシートに貼り付けるなどすればいいかと...
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
>関数がありますか >関数みたいなもの、はありますか 厳密に表現すると、「ありません」。 もともとは関数は数値処理をするのが目的かと思います。 文字列のセルのデータを「移動」は不得手です。 VBA等で処理すべき問題だと思います。 しかしVBAになじみのない方は、関数に拘ります。 関数は普通のVBAに比べ良い点もあります。 それで意を汲んで、 (A)関数式を組みあわせて処理する (B)中間作業的な情報を固定する必要があって、作業列を1列使う (C)別列(別シートでも良い)に出す、 という許容条件のもとにならできます。 (B)(C)は必須と思います。他の解き方を見たことなし。小生は過去に類似質問に何回も答えてます。 (データ例)Sheet1のA2:A10 A-001 A-001 A-002 A-003 B-001 B-002 A-001 C-001 C-002 第1行は空けておくこと。必須。 作業列としてD列を使う。 (関数式)D1に0をいれる。 D2に式=IF(COUNTIF($A$2:A2,A2)=1,MAX($D$1:D1)+1,"") といれて、最下行まで複写する。 D列結果は0 1 2 3 4 5 6 7 で初出のコードの累計が出る。 (関数式2) Sheet2に行き、A2(A1でも良い、式が変わる)に関数式 =INDEX(Sheet1!$A$1:$A$30,MATCH(ROW()-1,Sheet1!$D$1:$D$20,0),1) をいれてSheet1のD列の最大数7+1(A2から始めたので)まで式を複写する。 (結果)Sheet2のA2:A8に A-001 A-002 A-003 B-001 B-002 C-001 C-002 となる。 未入力行にデータが増えることを見越して、式複写を余分にするとき、エラー表示が出るが、それを防ぐ関数式は省略。
お礼
お教えいただきありがとうございました。 約3年ぐらい分からずに悩みつづけていました。 本当に大感謝!!!! よかった!!!! 大!大!助かりました!!!!!! 本当にありがとうございました。
重複抜きでカウントするだけなら =SUMPRODUCT(1/COUNTIF(セル範囲,セル範囲)) でできます。
お礼
お教えいただきありがとうございました。 約3年ぐらい分からずに悩みつづけていました。 本当に大感謝!!!! よかった!!!! 大!大!助かりました!!!!!! 本当にありがとうございました。
> 質問2: 1行目に タイトル行を挿入して適当な名前を入力 範囲を選択して[データ]→[フィルタ]→[フィルタオプションの設定] [指定した範囲]にチェック [リスト範囲]と[抽出範囲]を指定して [重複するレコードは無視する]にチェック入れて[OK] で重複している分を削除して抽出範囲に表示します。
お礼
お教えいただきありがとうございました。 約3年ぐらい分からずに悩みつづけていました。 本当に大感謝!!!! よかった!!!! 大!大!助かりました!!!!!! 本当にありがとうございました。
お礼
お教えいただきありがとうございました。 約3年ぐらい分からずに悩みつづけていました。 本当に大感謝!!!! よかった!!!! 大!大!助かりました!!!!!! 本当にありがとうございました。