課題IDの重複を取り除く方法と集計方法について

このQ&Aのポイント
  • 月単位で追加したデータ毎に課題IDの重複を取り除く方法を模索しています。
  • また、重複のない課題IDの集計方法についても具体的な方法を知りたいです。
  • 今現在使用している数式では、ピポットテーブル上で集計されない課題IDが発生してしまっています。
回答を見る
  • ベストアンサー

月単位で追加したデータ毎に課題IDの重複を取り去り

タイトル=【重複行を1としてカウント 月が重複した総数を求める】でkkkkkmさんには大変お世話になりました、nnirosanです。 実は、今実施しております課題ID数をピポットテーブル上で集計する時に、ご回答頂いていました下記のご教示通りの結果となりまして、 対処方法を模索しているのですが、具体的な方法が分からず困っております。 2022/09/02 22:30 回答No.13 kkkkkmさん 『4月と5月で同じパターンのデータがあれば5月のデータは無いこととして「0」になります。 そういう事が無いのであればいいですが。』 =IF(OR(AND(V$1>3,$Q2>V$1)),0,IF(AND(V$1>3,V$1<=12,OR($Q2=1,$Q2=2,$Q2=3)),0,IF(AND(V$1=1,OR($Q2=2,$Q2=3)),0,IF(AND(V$1=2,$Q2=3),0,IF(COUNTIFS($Q$2:$Q2,MONTH($E2),$D$2:$D2,$D2,$L$2:$L2,$L2,$M$2:$M2,$M2,$P$2:$P2,$P2)=1,1,0))))) ・課題IDの重複を取り去る為の式は、今現在、下記の数式を使用しております。  下記の式では、ある課題IDが4月~9月分データ中に複数ある場合、4月~8月分では結果は『0』、9月分で1行『1』が出ます。  ピポットテーブル上で4月~8月分の課題ID数の集計を求めた時、上記のある課題IDは集計されない事になってしまっています。  =IF(OR(AND(AU$1>3,$F2>AU$1)),0,IF(AND(AU$1>3,AU$1<=12,OR($F2=1,$F2=2,$F2=3)),0,IF(AND(AU$1=1,OR($F2=2,$F2=3)),0,IF(AND(AU$1=2,$F2=3),0,IF(COUNTIFS($C$2:$C2,$C2,$M$2:$M2,$M2,$Q$2:$Q2,$Q2)=1,1,0)))))   ・4月~8月分について、課題IDの重複を取る為に下記の式を試して見ましたが、旨く出来ませんでした。  =IF(AND(AU$1>3,($F2<=8)),IF(COUNTIFS($C$2:$C2,$C2,$M$2:$M2,$M2,$Q$2:$Q2,$Q2)=1,1,0)) ・重複無しの課題IDの集計については、下記のように、1か月ずつ追加したデータ毎にピポットテーブル上で集計を出したいのですが、具体的な方法がお分かりでしたら、ご教示頂けると大変助かります。  4月分で重複無しの課題IDの集計。  4月~5月分の重複無しの課題IDの集計。  4月~6月分の重複無しの課題IDの集計。  4月~7月分の重複無しの課題IDの集計。  4月~8月分の重複無しの課題IDの集計。  4月~9月分の重複無しの課題IDの集計。     |  4月~来年3月分の重複無しの課題IDの集計。

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1618/2457)
回答No.1

現状の式は以前とセル範囲が違うと思われますので具体的にどうやればいいのか分かりませんが 最後に月を確認している部分を追加してみてください。 式の最後の以下の部分を修正してください。 IF(COUNTIFS($C$2:$C2,$C2,$M$2:$M2,$M2,$Q$2:$Q2,$Q2)=1,1,0) ↑この部分を以下のような状態にしてください。 MONTH($E2)のE2に現状の日付が入っているセルを指定 Q2に =MONTH(E2) で月を取得しているところがあったと思いますので $Q$2:$Q2を現状の月を取得しているセルを指定しください。 それ以降のセル指定は課題IDなど重複を確認したいセルを指定してください。 IF(COUNTIFS($Q$2:$Q2,MONTH($E2),$D$2:$D2,$D2,$L$2:$L2,$L2,$M$2:$M2,$M2,$P$2:$P2,$P2)=1,1,0))

nnirosan
質問者

お礼

大変お世話になっております。 質問にかみ砕いたご教示を頂きまして、誠に有難うございました。 丁寧な説明で良く理解致しました。 データを日付順に並べて置けば、ご教示頂いた重複判定の数式を用いて課題総数が正しく求められる事を確認しました。 kkkkkmさんには、マクロの自動実行など、自分には到底実現出来なかった事をご教示頂き、心より感謝を申し上げます。 お陰様で、4月より今現在まで仕事を続ける事が出来ております。本当に命拾いをしました。 かみ砕いて、何時もお優しくご教授下さり本当に有難うございました。

nnirosan
質問者

補足

大変お世話になっております。 kkkkkmさんには、沢山の事をご教授頂き、心より感謝申し上げます。 早速のご教示ありがとうございました。 あれから、担当者が変わり課題数の求め方も変化しまして、部署毎の所属区分毎で重複無しの課題数を求める事になりました。 課題IDの集計は、下記の通りに行います。  4月分で重複無しの課題IDの集計。  4月~5月分の重複無しの課題IDの集計。  4月~6月分の重複無しの課題IDの集計。  4月~7月分の重複無しの課題IDの集計。  4月~8月分の重複無しの課題IDの集計。  4月~9月分の重複無しの課題IDの集計。     |  4月~来年3月分の重複無しの課題IDの集計。 以下の式をデータの最後の列(AU列)へ挿入し課題IDの重複判定(0,1)をしますが、E列の利用日は日付順(4月~9月と)に並べてから下記の式を実行すると、正確な課題数の集計が出ました。 しかしながら、以下の式が本当に正しいのか、自分には判断する力がまだ有りません。 面倒で大変恐縮なのですが、お分かりでしたらご教示頂けると大変助かります。 =IF(OR(AND(AU$1>3,$F2>AU$1)),0,IF(AND(AU$1>3,AU$1<=12,OR($F2=1,$F2=2,$F2=3)),0,IF(AND(AU$1=1,OR($F2=2,$F2=3)),0,IF(AND(AU$1=2,$F2=3),0,IF(COUNTIFS($C$2:$C2,$C2,$M$2:$M2,$M2,$Q$2:$Q2,$Q2)=1,1,0))))) ピポットテーブルでは、フィルター=(月)、列=(所属区分)、行=(部署、部ループ)、値=(合計/課題ID-4)で課題ID数を集計します。 下記はデータの例題になります。 C列=部署 E列=利用日 F列=月(=MONTH(E2)関数で利用日から月を求める) G列=開始時刻 H列=終了時刻 I列=利用時間 M列=所属区分 O列=利用区分 Q列=課題ID ,,C列,,E列,F列,G列,H列,I列,,,,M列,,O列,,Q列,,,,,,,,,,,,,,,,,,,,,,,,,,,,,  ,,Aグループ,,2022/4/1,4,9:00,17:00,8,,,,管理部,,使用不可,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,B グループ,,2022/4/11,4,12:00,17:00,5,,,,SSS,,構内利用,,5067,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,B グループ,,2022/5/13,5,9:00,13:00,4,,,,SSS,,構内利用,,5067,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,B グループ,,2022/4/18,4,9:00,12:00,3,,,,AAA,,外部利用,,8029,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,Dグループ,,2022/4/18,4,15:00,18:00,3,,,,AAA,,外部利用,,5030,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,Dグループ,,2022/8/29,8,10:00,13:00,3,,,,SSS,,構内利用,,5337,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,Cグループ,,2022/8/29,8,13:00,16:00,3,,,,SSS,,構内利用,,5337,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,Cグループ,,2022/6/30,6,13:00,16:00,3,,,,WWW,,部署利用,,9337,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,Aグループ,,2022/3/31,3,13:00,16:00,3,,,,CCC,,内部利用,,5129,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,Aグループ,,2022/8/31,8,16:00,17:00,1,,,,WWW,,部署利用,,9337,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,Aグループ,,2022/5/27,5,11:00,11:30,0.5,,,,WWW,,部署利用,,5103,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,Cグループ,,2022/5/5,5,12:30,16:00,3.5,,,,SSS,,構内利用,,5125,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,Cグループ,,2022/7/6,7,13:30,13:45,0.25,,,,CCC,,内部利用,,5129,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,Cグループ,,2022/7/28,7,9:30,10:00,0.5,,,,管理部,,使用不可,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,Eグループ,,2022/7/29,7,11:15,11:45,0.5,,,,CCC,,内部利用,,5129,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,Eグループ,,2022/8/19,8,13:30,14:30,1,,,,CCC,,内部利用,,5177,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,Eグループ,,2022/9/6,9,20:00,21:00,1,,,,SSS,,構内利用,,5176,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,Gグループ,,2022/9/6,9,21:00,21:30,0.5,,,,SSS,,構内利用,,5176,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,Gグループ,,2022/6/7,6,11:00,11:45,0.75,,,,CCC,,内部利用,,5333,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

その他の回答 (1)

  • kkkkkm
  • ベストアンサー率65% (1618/2457)
回答No.2

たとえば4月と5月で同じパターンのデータがあれば5月のデータは無いことになってしまっているという話ではないのでしょうか。 お分かりだとは思いますが、とりあえず式の意味を記載してますので、それで正しいかどうかはご自身で判断してください。 IFは左から判定されて条件の結果が「真」の場合「真」の結果を実施し、以降の「偽」の部分は無視されます。 IF(OR(AND(AU$1>3,$F2>AU$1)),0,IF(AND(AU$1>3,AU$1<=12,OR($F2=1,$F2=2,$F2=3)),0,IF(AND(AU$1=1,OR($F2=2,$F2=3)),0,IF(AND(AU$1=2,$F2=3),0, ここまでで重複をチェックしない月(6月なら7月以降)を除外(0にする)すると考えています。 どれかに引っかかると以降の重複確認の式は実施されません。 IF(OR(AND(AU$1>3,$F2>AU$1)),0, 1行目が4月以降で1行目の月よりF列の月が大きい場合除外(0にする)、以降の式は無視 IF(AND(AU$1>3,AU$1<=12,OR($F2=1,$F2=2,$F2=3)),0, 1行目が4月から12月まではF列の1月から3月は除外(0にする)、以降の式は無視 IF(AND(AU$1=1,OR($F2=2,$F2=3)),0, 1行目が1月ならF列の2月と3月は除外(0にする)、以降の式は無視 IF(AND(AU$1=2,$F2=3),0, 1行目が2月ならF列の3月は除外(0にする)、以降の式は無視 IF(COUNTIFS($C$2:$C2,$C2,$M$2:$M2,$M2,$Q$2:$Q2,$Q2)=1,1,0))))) 単にCOUNTIFS($C$2:$C2,$C2,$M$2:$M2,$M2,$Q$2:$Q2,$Q2)を各行に展開して実施すると、C列M列Q列を一纏めとして重複のあるデータの行に上から順にそれぞれ纏めたデータごとにカウントアップされた値が入ります。 値の「1」以外は重複したデータですので除外するために「0」にしています。 なお、現在OKWAVEでの回答は控えていますので以後回答ができないかもしれません。

nnirosan
質問者

お礼

大変お世話になっております。 質問にかみ砕いたご教示を頂きまして、誠に有難うございました。 丁寧な説明で良く理解致しました。 データを日付順に並べて置けば、ご教示頂いた重複判定の数式を用いて課題総数が正しく求められる事を確認しました。 kkkkkmさんには、マクロの自動実行など、自分には到底実現出来なかった事をご教示頂き、心より感謝を申し上げます。 お陰様で、4月より今現在まで仕事を続ける事が出来ております。本当に命拾いをしました。 かみ砕いて、何時もお優しくご教授下さり本当に有難うございました。

関連するQ&A

  • 重複行を1としてカウント 月が重複した総数を求める

    下記の質問タイトルで大変お世話になっております。 『ピポットテーブ 重複行を1としてカウントしたい』 『重複行を1としてカウント』 本日も、同じタイトルの仕事で困った事が御座いまして、質問をさせて頂きました。 ピポットテーブル上で課題IDの集計は、月毎のグループ毎の所属区分毎の利用区分毎に集計すると認識し、課題IDの重複無しを月毎で『1』とする数式をご教示頂いておりました。 しかし、私の認識違いで、5月分以降より月が重複した課題ID数を求めるとの事です。 年度始めの4月分の課題IDの重複無しを『1』とする数式は下記のご教示で問題ないのですが、 =IF(COUNTIFS($Q$2:Q2,MONTH(E2),$D$2:D2,D2,$L$2:L2,L2,$M$2:M2,M2,$P$2:P2,P2)=1,1,0) ピポットテーブルで使用するテーブルデータの5月分以降については、 下記のように重複した月の重複無しを『1』とする数式をそれぞれの月で11列新たに必要になるのかなと想像します。 上記の方法以外にやり方をお分かりでしたら、ご教示頂けると大変助かります。 5月分は、4月分~5月分の、課題IDの重複無しを『1』とする数式 6月分は、4月分~6月分の、課題IDの重複無しを『1』とする数式 7月分は、4月分~7月分の、課題IDの重複無しを『1』とする数式 来年3月分は、今年4月分~来年3月分の、課題IDの重複無しを『1』とする数式 以上 宜しくお願い致します。

  • 重複があるデータが何種類あるか、を条件付でカウント

    EXCEL2003で質問です。 http://okwave.jp/kotaeru.php3?q=1827923 の応用編です。 次のようなリストをつくりました。 A  |B  |C   小泉 重複  1月 竹中     1月 小池     3月 小泉 重複  1月 竹中     2月 竹中     2月 Cが「1月」の場合のみ、Aの項目が複数存在した場合に 「重複」と表示させる関数を、B列に埋め込むことが無事できました。 =IF(AND(C1="1月",SUMPRODUCT(($A$1:$A$6=A1)*($C$1:$C$6="1月"))>1),"重複","") anserwd:shiotan99さま さて、この応用です。 ■課題  「重複」の出たuserが何人いるか?を集計。  重複データのカウント方法は過去の質問を参照しましたが、この場合にあてはめる力が私にはまだありませんでした。  お力貸していただくとありがたいです。  よろしくおねがいします。

  • excel 重複のデータだけコピーアンドペーストしたい

    エクセルにID、氏名、住所、Emailなどの項目があるデータがあります。 その中には氏名が重複しているものがあるので、重複しているデータだけを別のシートにコピーアンドペーストをしたいのですが、うまくいきません。 重複分は削除せず、重複しているデータすべてをコピーアンドペーストをしたいと考えています。 よろしくお願いします。

  • ピポットテーブ 重複行を1としてカウントしたい

    何時も、大変お世話になっております。Excelの初心者です。 ピポットテーブルのクロス集計を利用して、A列~AS列のセルに入力された データから月毎の集計を出したいのですが、重複するデータの場合でも1とカウントしたいのですが、 やり方がわかりません。何方かご教示頂けると大変助かります。 ピポットテーブルでデータ修正をする前に、データ上で重複の処理をすべきなのでしょうか? ピポットテーブルの集計の時に、重複した個数を1とカウントする事は出来ないのでしょうか? 今回、やりたい事は、 月毎(今現在のデータ=4月分、5月分、6月分)に、利用区分毎で更に所属区分毎に分けて、 下記のP列の課題IDの個数の合計を求めるのに、その月に同じ課題IDが複数ある場合は1とカウントさせて、ピポットテーブル上でその月の課題IDの集計をさせる事です。 課題IDの集計を月単位で上記の条件でピポットテーブルで出すと、重複行もそのままカウントされてしまうので、困っています。 集計に使用するデータ項目は以下の通りとなります。 ・E列(項目=利用日)             <項目の詳細>   各機器の貸し出し日を日単位で記載しています。(2022/7/10)                                                         ・L列(項目=所属区分)  <項目の詳細>   大学、民間、管理部署、構内、大企業、中小企業の何れかを記載しています。 ・ N列(項目=利用区分)    <項目の詳細>    使用不可、構内利用、外国利用、国内利用、使用不可の何れか載しています。 ・P列(項目=課題ID)    <項目の詳細>    空白もあるデータです。55AB1234、55RE2345、JPMXP1222NM0053、HHAPPYのように数字とアルファベットを組み合わせたIDや数字のみのIDやアルファベットのIDを記載しています。

  • 重複データーの集計、削除

    どなたかご教授下さい。 下記のようにD列に重複する行があればI列に集計し、行削除するマクロを作成しました。 さらに、重複する基準となる列を複数(D列,F列,G列)に増やしたいのですが、上手く出来ません。 宜しくお願い致します。 Sub test() Dim i, j For i = 19 To Cells(Rows.Count, 2).End(xlUp).row - 1 For j = Cells(Rows.Count, 2).End(xlUp).row To i + 1 Step -1 If Cells(i, 4).value = "" Then Exit Sub If Cells(i, 4).value = Cells(j, 4).value Then Cells(i, 9).value = Cells(i, 9).value + Cells(j, 9).value Rows(j).Delete End If Next Next End Sub

  • python

    もしも...と.t もしくは .oもしくは .nもしくは.q もしくは.sもしくは.fもしくは.jが同じ行に含まれていたらという条件分岐を書きたいのですが以下のようでは上手くいきません。どのように書いたらよいでしょうか。よろしくお願いします。 if "..."in line and ".t "or ".o"or ".n"or".q "or".s"or ".f "or ".j "in line:

  • エクセルの集計計算について

    データ集計の計算で現在 =SUM(IF($F$7:$F$1000=3202,IF(MONTH($Q$7:$Q$1000)=1,$R$7:$R$1000,0)))という式を用いて月ごとの合計数を 取り込んでいます。 F列 係コード  Q列 完成月  R列 完成数量 1課1係では上記の計算式でうまくいったのですが、2係、3係となった場合にうまくいきません 今回お知恵を拝借したいのが、F列に複数の係が混在しているところは、以下の式を作り計算させましたが、なぜか総数が計算されてしまいます。式のどの部分に問題があって、どのように修正すれば言いか教えてください。 1つの課の中に3202という係と3302という二つの係ということで以下の式にしました =SUM(IF(OR($F$7:$F$1000=3202,$F$7:$F$1000=3302),IF(MONTH($Q$7:$Q$1000)=1,$R$7:$R$1000,0))) 2つの係の合計を出したいのです。 また3つの係がある場合はどのように変更すればいいのか教えてください。 よろしくお願いします

  • VBAで1月から12月まで月単位でのカウント

    タイトル  発売日 タイトルA 1月1日 タイトルB 1月2日 タイトルC 1月2日 タイトルD 2月1日 タイトルE 2月10日 タイトルF 3月3日 タイトルG 3月20日 タイトルH 3月21日 タイトルI  3月21日 : タイトルZ 12月31日 というデータがあるとします。 これを一月単位(1月=3件、2月=2件、3月=4件、…12月)で集計したいのです。 どのようにVBAで記述すればいいのでしょか。 for文で、 Sub test() For 1月 To 12月 if(1月発売日 == ゲーム発売日) Then      1月カウント合計 = 1月カウント合計 + 1    End if Next End Sub で書けばいいかなと思っているのですが、 (1)For文の1月から12月の各月カウント記述方法が不明 (2)if文で、1月1日~1月31日 が 1月発売日の条件と一致させて、「 1月カウント合計 = 1月カウント合計 + 1」 カウントさえる記述方法が不明。 どなたかご教授お願いします。

  • 【エクセル】重複データを見つける?関数

    前月の実績を表した以下の様な統計表が1シートであります。   A  B  C  D  E  F … 1 xx  6  aa  3  zz  6 2 aa  3  yy  2  aa  3 3 zz  6  bb  4  bb  4 4 yy  2  cc  1  xx  6 5 ・ この表の見方は、A列とB列、C列とD列・・・とペアになっていてA&B列が某月の1日、C&D列が某月の2日…を表しています。 xxとかaaというのがIDみたいなもので、その右のセルの数字は、その月に合計で何回メールを送信したかを表しています。 上の表で具体的に説明しますと、ID「xx」は今月合計で6回メールを送信したということを表しています。ID「aa」だと3回ということです。 また表を縦に見て、某月1日にメールを送ったのはID「xx」「aa」「zz」「yy」だという事も表しています。 注意して欲しいのは、ID「xx」が某月1日に6回メールを送ったのではなく、某月一ヶ月間の合計で6回送ったという事を表しているということです。 この表を使ってやりたいことは、某月にメールを送信した回数の多いIDベスト10を知りたいのです。 実際にはこの表は膨大(1シート内ですが)で数千のIDがある事に加え、更にIDが重複して(上の表だとID「xx」が1日と3日にある)しまっているために、ベスト10を調べるのに目視で確認している状況です。 (ある列を並び替えて回数の多かったIDが他の列で重複していないか一つずつ確認しています・・・) こういった表で、簡単に上位が判る関数などの方法があれば教えていただきたく質問しました。 どうぞ宜しくお願いします。 説明がわかりにくかったかもしれません。 補足致しますのでわかりにくかった点がございましたらご指摘ください。

  • エクセルでIF関数を使った5歳区分の表記について

    はじめまして、仕事の集計で年齢区分を出すために四苦八苦しております。教えてください。 C列に性別、f列に年齢を入れてあります。 そこで別のセルに下記の関数を入れて75歳未満で男なら1、女なら2そうでなければ空欄を!といれたらそのとおり答えを返してもらえます =IF(AND($C9="男",$F9<75),1,IF(AND($C9="女",$F9<75),2,"")) ここまでは良かったのですが、これを男女別5歳区分で出すときに =IF(AND($C9="男",70<$F9<75),1,IF(AND($C9="女",70<$F9<75),2,"")) と 「70<$F9<75」のように入力してみましたら何もでてこない状態でおてあげです。 65~69の答えはAセル、70~74の答えはBセルという入力方法で後でカウントイフで1と2を集計しようと考えていますが 今使っているIF関数へのアドバイスと、ほかに良い方法がありましたら教えてください。

専門家に質問してみよう