アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんばんわ。
http://oshiete1.goo.ne.jp/qa5404464.html
↑でエクセルの分類付けについていろいろ教えていただきました。

今回はまた別のエクセルで似たような分類付けをするのですが、
上記URLで教えていただいた関数で行うと件数が多すぎてエクセルが応答なしになることがあります。大体5万件以上のときが多いです。

現状の作業をマクロで行いたいのでアドバイスをください。

シートの構成ですが、1シート(シート名は作業用)のみにデータはまとまっています。
A列は製品番号
B列は製品名(ハードディスクやメモリなどPC周辺機器全般です)
C列は分類名として関数を使ってB列の分類付け。
となっています。各列の1行目は見出しです。

分類数は現状20種類以上です。
また今回のデータには未分類扱いのデータもあります。
それは削除せずに分類名を未分類をしなければなりません。

教えてほしいのは、
(1)D列から右側の作業列を使わずにマクロで一気にC列にB列の分類名を入力するやり方。
(2)分類名と同じシートを作成して各シートに値をコピペ(A列とB列のみ)
例えばCPUの分類ならシート:CPUに値をコピペするといった具合です。

===C列に入れる分類名と分類条件===
(1)分類名:未分類
分類条件:B列に"AAA"、"BBBB"、"CCCCC"という値がある。10種類あります。
"AAA"を含むでなく、完全一致の場合は未分類にします。

(2)分類名:CPU
分類条件:分類名が未分類でなく、B列に"GHz"か"AMD "か"Intel(R)"を含む。

(3)分類名:HDD
分類条件:分類名が未分類でなく、B列に"ハードディスク"か"ハードドライブ"を含む。

(4)分類名:メモリ
分類条件:分類名が未分類でなく、B列に"DDR"を含む、"メモリ"を含む。

(5)分類名:FDD
分類条件:分類名が未分類でなく、B列に"フロッピ"を含む。

(6)分類名:DVDROM
分類条件:分類名が未分類でなく、B列に"DVD-ROM"を含む。

(7)分類名:DVDスーパーマルチ
分類条件:分類名が未分類でなく、B列に"スーパーマルチ"を含む、"ブルーレイ"は含まない。

(8)分類名:ブルーレイ
分類条件:分類名が未分類でなく、B列に"ブルーレイ"を含む、"スーパーマルチ"は含まない。

(9)分類名:ブルーレイスーパーマルチ
分類条件:分類名が未分類でなく、B列に"ブルーレイ"を含む、"スーパーマルチ"を含む。

(10)分類名:CDRW
分類条件:分類名が未分類でなく、B列に"RW"を含む、"コンボ"は含まない。

(11)分類名:コンボ
分類条件:分類名が未分類でなく、B列に"コンボ"を含む。

(12)分類名:DAT
分類条件:分類名が未分類でなく、B列に"DAT"を含む、"カートリッジ"は含まない。

(13)分類名:OS
分類条件:分類名が未分類でなく、B列に"Windows"を含む、"リカバリ"は含まない。

(14)分類名:グラフィックス
分類条件:分類名が未分類でなく、B列に"NVIDIA"を含む、"RADEON"を含む、"グラフィック"を含む。

(15)分類名:モニター
分類条件:分類名が未分類でなく、B列に"ハード"を含まない、"型"を含む、"インチ"を含む。

(16)分類名:パラレル
分類条件:分類名が未分類でなく、B列に"パラレル"を含む。

(17)分類名:1394
分類条件:分類名が未分類でなく、B列に"1394"を含む。

(18)分類名:入力装置
分類条件:分類名が未分類でなく、B列に"キーボード"を含む、"マウス"を含む、"パッド"は含まない。

(19)分類名:電源
分類条件:分類名が未分類でなく、B列に"電源"を含む、"標準"は含まない。

(20)分類名:規格
分類条件:分類名が未分類でなく、B列に"エネルギー"を含む。

(21)分類名:保証
分類条件:分類名が未分類とモニターでなく、B列に"年"を含む、"時間"を含む

===ここまで===

上記の分類付けに当てはまらないものもあるのですが、それは空白のままにします。どのような分類にするかは検討中です。

記録マクロでやるにも編集が難しくて自力ではすぐには無理そうでした。

お手数ですがよろしくお願いします。

A 回答 (3件)

コードがある程度の件数までは正常に動き5万件以上でおかしくなるというのはコードの組み方にもよるでしょうがエクセル2003などでしたら行は65536行までですのでその制限をオーバーすることも考えられますね。

    • good
    • 0
この回答へのお礼

やはりきちんとマクロの仕組みがわかっていないと難しいですね。

ありがとうございました。

お礼日時:2009/11/06 22:27

この処理は一回だけ処理するようなものでしょうか、それとも毎月、毎週に行う処理なのでしょうか?


今回一回だけなら面倒でも手動でautofilter辺りでやるのがいいと思います。
また毎週のように行うというのであればマクロでやるしかないのですが
条件が複雑なうえ今後も分類が変わる可能性も見えるのでディシジョンテーブルのようなもので条件整理の必要がありそうです。

ただ、分類コードみたいなものを導入すべき事例のように思います。
    • good
    • 0
この回答へのお礼

週に1、2回の作業になります。

新しく始まったばかりの作業なので、まだはっきりとした条件定義などは定まってない状態です。

お礼日時:2009/11/06 22:25

問題が2つあります。


1 分類が複雑
2 件数が多い
>記録マクロでやるにも編集が難しくて自力ではすぐには無理そうでした。
解決法はあるのですが、分かってくれるかどうかこれが3つ目
一応の回答らしきものだけ提示します。

1ワークシートを使って分類名決定する。
作業用のワークシートを用意します
B1を”製品名”を入れるセルにします
4行目 B,C,Dに"GHz"か"AMD ""Intel(R)"
以下5行目以降同様に
○または×を含む
場合BからF列に入れます
○、×を含みかつ△を含まない
○、×をBからF列△をG~K列
○、×を含みかつ△を含む
○、×をBからF列△をG~K列
以降未分類以外を21分類まで入力
A33から下に1から25と連番
B34に=IF(B4="",FALSE,NOT(ISERROR(SEARCH(B4,$B$1))))
これを横に10列(K列)までコピー
L34に=OR(B34:F34) M35に=OR(G34:K34)
O列は=IF(N34,AND(L34,NOT(M34)),AND(L34,M34))
以上をB列からO列を53行目までコピー
N列はA列の番号を見ながら
○を含みかつ×を含まないという条件のとき=true()
○を含みかつ×を含むという条件のとき=false()
これでO列の該当する分類の行がTRUEになります(未分類は別)
P列は分類名を入力("未分類"、”CPU"など25は” ”(全角の空白))
E60から下に未分類の項目"AAA"、"BBBB"、"CCCCC"などを入力
B59に =MATCH($B$1,$E$60:$E$69,0) ’未分類になかったら#N/Aとなる
B60に =IF(ISERROR(B59),IF(ISERROR(B60),25,B60),1) true1がある列の番号が表示される。
B61に =IF(ISERROR(B59),IF(ISERROR(B60),25,B60),1)
B59、B60を参照して大刀する行番号が表示される(該当なしは25)
B62に=VLOOKUP(B61,A33:P57,16)
これでB62に分類名が表示される。
かなり広い表なので提示できませんが忠実に作ってもらえれば分かると思います。

後はマクロになりますが
一件ずつ作業用シートのB1に製品名を転記してB62の分類名を取得する
という作業を繰り返す。
速度のためには再計算を止めて範囲指定再計算をする工夫も必要。
    • good
    • 0
この回答へのお礼

お礼が遅くなり申し訳ありません。

実際にやってみましたところ、上記の分類条件でもひっかからないパターンの製品がちらほらありまして、分類条件が絞りきれない状態です。

社内で検討したところ、一部はメーカーのサイトで確認しないといけない項目もあるようなので、しばらくは分類付けは手作業になりそうです。

せっかくすごいやり方を教えていただいたのに残念ですが、他の作業でも使うことがあるかもしれないので大変ありがたいです。
考え方の参考になりました。

本当にありがとうございました。

お礼日時:2009/11/11 01:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!