質問 |
||
| 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つとして数えたい、ということです。 |