ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.4200285 excelかaccessで、同じ種類のものを一つとして総数をカウントする方法
質問者:wiswis 只今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は必要な場合、入手可能。
困り度:
  • 困っています
質問投稿日時:
08/07/24 11:55
この質問に対する回答は締め切られました。

回答良回答20pt

ANo.3 「データ」「ピボットテーブル・・・」を選択して
行見出しにA列とB列の項目、データにB列の項目をデータの個数で集計すればいいと思います。
B列のソフト名が微妙に違う場合は、グループ化してまとめれば集計できます。
回答者:mshr1962
種類:アドバイス
どんな人:経験者
自信:自信あり
回答日時:
08/07/24 14:58
この回答への補足グループ化の集計方法は出切るようになりました。
が、目的のライセンスのカウントは優先順位が関係してくるため、私が質問した"一纏め"でカウント、というのではどうやらだめなようです。(泣)
でもこれはこれで使えそうな感じです。勉強になりました。
ありがとうございました!
この回答へのお礼回答ありがとうございます。
ピボットテーブルを少しいじってみました。
これで出来そうな感じです。
ただグループ化が少し上手く出来ないので、そこはちょっと勉強して、出来たら又報告しますね。

回答良回答10pt

ANo.2 重複データを削除することは以前答えたのですが、いつか覚えていませんので再掲します。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
回答者:pascal3141
種類:回答
どんな人:一般人
自信:参考意見
回答日時:
08/07/24 13:28
この回答への補足訂正:ライセンスは4つ必要→5つ必要でした。
この回答へのお礼回答ありがとうございます。
下のお礼にも書いたのですが、質問の書き方が悪かったです…。
それぞれ
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つ必要)

お答え頂いたコードは、他でとても役に立ちました。
ありがとうございます。

回答

ANo.1 B列を選択して、編集>置換
検索する文字列:'
置換後の文字列:(何も入力しない)
で、すべて置換をクリック。
そうすれば"'"は外れるでしょう。

あとは、データ>フィルタ>フィルタオプションで重複を省くとか。
回答者:n-jun
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
08/07/24 12:23
この回答への補足回答ありがとうございます。
この回答へのお礼すいません、説明が足りなかったようです。
ソフト1,ソフト1'というのはあくまで例なので、実際は
Microsoft Office Professional 2007
Microsoft Office Professional Edition 2003
等といったソフトで、
office 2007のライセンスがあれば2003のライセンスは要らないので、二つ纏めて1つとして数えたい、ということです。