• 締切済み

エクセルについて

今、エクセルで在庫表を作っています。こちらでテクニックを伺ってうまくできてきたのですが、上司からさらにリクエストをされてしまって困っています。お手数ですが教えてください。シートはマクロを使って、カーソルを動かすとその列、行が色が変わるように設定されています。 (1)シートのある項目の列、または行を色をつけたいのですが、マクロを設定しているとそれができません。教えてください。 (2)エクセルの検索を使ってある項目を探したいときに、そのセルに動くだけでなく、色が変わるようにしたいのですが・・・・ (3)また、ある一列を上から順番に、番号を振っているんですね。しかし、途中で在庫が切れたり、その品自体を買わないようにしたとき、その項目はへります、それと同時にその番号もなくなります。今の状況は、その穴が抜けただけなんですね。そうではなく、自動的に削除、挿入したら勝手に上から番号がつくようにする数式はどうしたら良いですか?例でいうと、2りんごを削除したら、自動的に右側のように番号が訂正されるようにしたいのです。 EX)1 みかん      1みかん   2 りんご    → 2めろん   3 メロン    → 3すいか   4 すいか      4もも

みんなの回答

  • matsu_jun
  • ベストアンサー率55% (146/265)
回答No.2

普段このような場で苦言を呈するのを良しとせずにいますが、今回はあえて言わせていただきます。 まずはこれをご覧ください。「質問のマナー」とありますね。 http://service.okweb.jp/community/guide/manner_3.html 「教えてgoo」を利用されている場合、このページへのリンクはありませんが、 本サービスを提供している元ページである「OKWeb」に貼られています。 そこに書かれている項目を上から順になめていきましょう。 「質問のタイトルは質問の内容が一目で分かるものにしましょう」 QNo.1397609 「エクセルのテクニック!!!!!」 QNo.1398108 「エクセルについて」 QNo.1401553 「エクセルについて」 エクセルの何を知りたいのか、上のタイトルからは全く見えてきません。 Office系ソフトのカテゴリーには、一通り目を通してご解答されている方が たくさんおりますので、とりあえず目を通していただけることが多いでしょうし、 実際前の2つはそうして解答をいただいておりますので(ちなみに私もQNo.1397609にて 解答させていただきましたが)問題ないのかもしれませんが、もう少しお考えください。 「回答者に対しては常に感謝の気持ちを持って接しましょう」 強制ではありませんが、ご質問の際には丁寧な言葉遣いで謙虚にご質問されているあなたが お礼の一言もないというのは少々不思議です。 私の解答にお礼が付いていないので腹を立てているのではと思われるのなら それも構いませんが、せめてすぐに同カテゴリで類似の質問をするのであれば お礼の気持ちを示しておいた方が得だと思います。 誰だって喜んでいただける方に解答をしたいでしょうから。 「質問を分割して投稿しないようにしましょう」 > (1)シートのある項目の列、または行を色をつけたいのですが・・・(略) って、あえて新しく質問するような内容ですか? 前の質問の補足欄で聞くべき内容ではないでしょうか? 前の質問を締め切ってから上司にリクエストを受けたのなら仕方ありませんが、 それなら前回どのように解決したかが分かるように、せめて質問番号(この場合ならQNo.1398108) くらいは書いておくべきです。 ローカルルールだのネチケットだの、確かに煩わしいとは思いますが、 上で私が言っていることは、そういうネット上の約束事以前の 極めて当たり前のことだと思うのですが、いかがでしょうか? さて、解答ですが、 (1) 条件付書式を設定していなければ、以下のマクロで解決します。 Private Sub Worksheet_SelectionChange(ByVal Target As Range)   Cells.FormatConditions.Delete   Target.EntireRow.FormatConditions.Add Type:=xlExpression, Formula1:="TRUE"   Target.EntireRow.FormatConditions(1).Interior.ColorIndex = 34 End Sub このマクロは、条件付書式を利用します(マクロの冒頭で、元の水色を消去します)ので、 他に条件付書式を利用したい時は利用できません。 前回の質問でKenKen_SP様が仰っているように、多用すると処理が重くなることを ご承知の上、ご利用ください。 (2) QNo.1398108の解答や、上の解答を利用すれば、検索時に行が彩色されるはずです。 もしかして、「普段のカーソル移動は行を塗りつぶして、検索の時はセルだけを塗りつぶす」 ということですか?そうであれば、Ano.1のrio_d様の仰るとおり、できません。 いや、できますが、通常の検索と同程度の機能を持たせようとすると、フォームの作成など ここで紹介できる範囲を超えてしまうというのが正確な言い方でしょう。 最も簡単な妥協方法としては、上の解答で示したマクロの「End Sub」のすぐ上に、   Target.FormatConditions(1).Interior.ColorIndex = 5 という1行を追加し、選択したセルだけを、その行のほかのセルと別の色で塗り分ける というのが考えられます。 (3) rio_d様の解答どおりだと思います。   =ROW()-(ナンバリングを開始したい行)+1 ということですね。 耳に痛いことを偉そうに発言したこと、お詫び申し上げます。

gnabila
質問者

お礼

大変失礼いたしました。 前回の締め切りをしてから上司にリクエストされ、かつ、私事でもいろいろあり、(個人的に家族と仕事で問題なことがあり・・)かなり切羽詰った状況だったのでこのような形になってしまいました。 私はパソコンが本当に苦手で、自分でもヘルプや色々使って調べているのですが・・・・言葉を知らない(たとえば、マクロ)ために結果的にヘルプさえも満足に使いこなすことができないどうしようもない人間なんです。パソコンというものですら、このように礼儀もわきまえず使いこなすことができません。本当に申し訳なくてなんと謝ったらよいでしょうか。 自分の失礼に対して深く反省しております。なんとお詫びをして良いか・・・・。本当に申し訳ございませんでした。 本日、会社に辞表を出してきました。 最後の仕事だと思ってがんばっていたのですが、結果的に皆さんを不愉快な気持ちにさせてしまったと思います。 本当に申し訳ありませんでした。以後、このようなことがないようにこちらへの投稿はジャンルを問わずしないように心がけたいと思います。 本当に申し訳ありませんでした。

  • rio_d
  • ベストアンサー率47% (71/149)
回答No.1

こんばんは。 タイヘンな状況はわかるんですが、ちょっと言いたいことが。 いきなり不躾な発言させてください。 色々とご質問されていますが、あなたご自身では実現方法等を考えていらっしゃいますでしょうか? 正直、あまり方法をご自身で考えていらっしゃらないような気がしたものでして。 私の勘違いならごめんなさい。 あと、前回の質問でマクロを作ってもらったかと思うんですが、そこの質問番号は関連項目として書いておいて頂けるとありがたいです。 ちなみにここ↓ http://oshiete1.goo.ne.jp/kotaeru.php3?q=1398108 では。スレ汚しすみませんでした。 (1) 現在のマクロでは、セルを移動したあと、移動前の行&列の色をリセットするような仕組みになっていますよね(xlnoneで設定)。 そこで、色をリセットしたあと、リセットしたセルの中から色をつけたいセルのみを抽出して、再度色を塗ればよいかと思います。 もっとラクな方法もありまして、「書式設定シート」のようなシートを新たに作っておき、書式設定シートの内容を「書式のみ貼付け」でぺったんこする手もあります。 ・セル移動   ↓ ・「書式のみ貼り付け」(シート内全セル色の初期化)   ↓ ・新しい位置の行列の色付け シート内に色つきセルがある時に、お使いになっているような行列識別マクロを入れる場合は、このような方式に改造した方がラクだと思います。 (2) 「エクセルの検索機能」とマクロとをリンクさせることは出来ないと思います。 「検索機能」で設定した検索ワードをVBAが拾えないと思われますので。 これについては、エクセル標準の検索機能ではなく新たな検索機能をVBAで作ったほうが良いと思います。 フォームを作って、検索ワードを入力させて、あとは普通の検索を行い、該当のセルに色をつけるようにすれば良いかと思います。 検索の方法は、マクロを記録しつつエクセル標準の検索機能を使えばバッチリかと。 あと注意点として、色をつけたセルをいつ、どのようにしてリセットするかも考慮しなければなりません。これは、自作の検索フォームを閉じた時に実施すればよいかと思います。 (3) 「1みかん」で1セルですか?「1」「みかん」というセルですか? それにより回答が変わります。 セルが別々ならこんなイメージになります。 __|_A_|__B__| : :  : 6 | 1 | みかん 7 | 2 | りんご 8 | 3 | めろん 9 | 4 | すいか 10| 5 | もも こんな構成の場合ですと、  A6←『=ROW()-5』  A7←『=ROW()-5』   : という感じで、行番号から自分の番号を取得するようにすればOKです。 ROW()…自分のセルの行番号を返すワークシート関数 これで、りんごの行を削除すると、 __|_A_|__B__| : :  : 6 | 1 | みかん ←7行目が行削除されたが、 7 | 2 | めろん ← A列は行番号-5のままなので変わらない 8 | 3 | すいか 9 | 4 | もも (1)はともかく、(2)は業者に委託しちゃっても良いくらいのレベルです。 あまりムリをなさらぬようご注意くださいませ。 ※ 偉そうな事を冒頭で書いて、内容が役に立ってなかったら恥ずかしいなーw

参考URL:
:
gnabila
質問者

お礼

大変失礼いたしました。 前回の締め切りをしてから上司にリクエストされ、かつ、私事でもいろいろあり、(個人的に家族と仕事で問題なことがあり・・)かなり切羽詰った状況だったのでこのような形になってしまいました。 私はパソコンが本当に苦手で、自分でもヘルプや色々使って調べているのですが・・・・言葉を知らない(たとえば、マクロ)ために結果的にヘルプさえも満足に使いこなすことができないどうしようもない人間なんです。パソコンというものですら、このように礼儀もわきまえず使いこなすことができません。本当に申し訳なくてなんと謝ったらよいでしょうか。 自分の失礼に対して深く反省しております。なんとお詫びをして良いか・・・・。本当に申し訳ございませんでした。 本日、会社に辞表を出してきました。 最後の仕事だと思ってがんばっていたのですが、結果的に皆さんを不愉快な気持ちにさせてしまったと思います。 本当に申し訳ありませんでした。以後、このようなことがないようにこちらへの投稿はジャンルを問わずしないように心がけたいと思います。 本当に申し訳ありませんでした。

関連するQ&A