- ベストアンサー
excelかaccessで、同じ種類のものを一つとして総数をカウントする方法
只今excel勉強中です。 会社のPCが持つofficeソフトで、ライセンスが重複しているものがかなりあるので、データを抽出してexcelに落とし、目で必要なライセンス数を確認しているのですが、何せ膨大な数があるので、時間がかかっています。 A列 B列 PC-a ソフト1 PC-a ソフト1' PC-b ソフト2 PC-c ソフト3 PC-c ソフト3' PC-c ソフト3'' 上記のような場合、 PC-cのソフト1と1'や、PC-Cのソフト3,3',3''は重複しているものとして、まとめて一つとカウントするので、ソフトのライセンスは3つ必要、ということになります。 このプロセスをどうにか簡略化する方法はないでしょうか? ちなみにPCの名前が重なるものだけを横の列に =IF(OR(A2=A3,A2=A1),1,"") で数字をつけ、オートフィルタをかけて目視で確認、という手順でやっています。 複雑なので、具体的なやり方でなくどのような方法があるかだけでも、教えて頂けたら嬉しいです。 【環境】 OS: Windows XP Excel2003 Access2003は必要な場合、入手可能。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
「データ」「ピボットテーブル・・・」を選択して 行見出しにA列とB列の項目、データにB列の項目をデータの個数で集計すればいいと思います。 B列のソフト名が微妙に違う場合は、グループ化してまとめれば集計できます。
その他の回答 (2)
- pascal3141
- ベストアンサー率36% (99/269)
重複データを削除することは以前答えたのですが、いつか覚えていませんので再掲します。VBAを使います。 このコードは1列目の重複データ削除で動くようにしてありますが、質問の場合は2列目で実行すればいいようですので、コードのなかのRetu=2にすればできます。このコードは、シートタブ右クリック、コードの表示ででてくるシートにコピペ。動かすときは、「ツール」「マクロ」「マクロ」「実行」です。 Sub GyouDelete() Dim myLastLow As Long Dim i, r As Long dim Retu as integer '比較列セット Retu=1 '画面のちらつきをなくす Application.ScreenUpdating = False 'シートの行数カウント r = ActiveSheet.Rows.Count '1列目の最下行の数字を見つける myLastLow = Cells(r, Retu).End(xlUp).Row '最下行から上へ重複データ削除 For i = myLastLow To 3 Step -1 If Cells(i, Retu).Value = Cells(i - 1, Retu).Value Then Cells(i, Retu).EntireRow.Delete End If Next i End Sub
お礼
回答ありがとうございます。 下のお礼にも書いたのですが、質問の書き方が悪かったです…。 それぞれ PC-a Microsoft Office Professional Edition 2003 PC-a Microsoft Office Professional 2007 PC-b Microsoft Office XP Standard PC-c Microsoft Office Outlook 2000 PC-c Microsoft Office Access 2003 PC-c Microsoft Office Excel 2003 という感じになっていて、 PC-aの場合、office2003は2007のライセンスを持っていればいいので、纏めて一つとして数えたい、ということです。(つまり上記の場合ライセンスは4つ必要) お答え頂いたコードは、他でとても役に立ちました。 ありがとうございます。
補足
訂正:ライセンスは4つ必要→5つ必要でした。
- n-jun
- ベストアンサー率33% (959/2873)
B列を選択して、編集>置換 検索する文字列:' 置換後の文字列:(何も入力しない) で、すべて置換をクリック。 そうすれば"'"は外れるでしょう。 あとは、データ>フィルタ>フィルタオプションで重複を省くとか。
お礼
すいません、説明が足りなかったようです。 ソフト1,ソフト1'というのはあくまで例なので、実際は Microsoft Office Professional 2007 Microsoft Office Professional Edition 2003 等といったソフトで、 office 2007のライセンスがあれば2003のライセンスは要らないので、二つ纏めて1つとして数えたい、ということです。
補足
回答ありがとうございます。
お礼
回答ありがとうございます。 ピボットテーブルを少しいじってみました。 これで出来そうな感じです。 ただグループ化が少し上手く出来ないので、そこはちょっと勉強して、出来たら又報告しますね。
補足
グループ化の集計方法は出切るようになりました。 が、目的のライセンスのカウントは優先順位が関係してくるため、私が質問した"一纏め"でカウント、というのではどうやらだめなようです。(泣) でもこれはこれで使えそうな感じです。勉強になりました。 ありがとうございました!