• ベストアンサー

見積もり合わせをエクセルかアクセスで

 多数の業者さんからエクセルで見積もりをいただきます。 自動的に一番安い業者さんをチェックする方法はございませんか?      A社   B社   C社   D社  パン  100   110   色90  130  牛乳   50    色40    60    70  ハム   色100   200    150   250  の用にエクセルで一覧にして色を付けたいのです。 アクセスとか他のソフトでなら出来るのでしょうか? よろしくお願いします。  

質問者が選んだベストアンサー

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.6

#02です。少し説明が足りなくて申し訳ありませんでした。 条件付き書式は1つのセルに設定して、あとはその書式を全てのセルに「形式を選択して貼り付け」→「書式」で貼り付ければ良いですよ。(書式の複写ができるように行は相対参照にしています) だから#03さんが言われるように品目が何千行あっても貼り付け操作はまとめて1回きりで良いのです。 なお会社も多数あるでしょうから「=MIN($B2:$E2)」の$Eの箇所は十分に大きな値にするか、#03さんのように行単位で指定されると良いでしょう。

mago10
質問者

お礼

 もう一度、トライしてみます。 皆さん私の質問に、応てくださってありがとうございました。

その他の回答 (5)

  • pc_knight
  • ベストアンサー率66% (52/78)
回答No.5

No4.です。 「コンパイルエラーNextに対応するForがありません。」とでるのは、 「Next△n」より前に「For△n = st To en」のような形式の "For"ステートメントのインプット漏れがあるからと思います。  常にForとNextはセットで使われるので、Forの数とNextの数は必ず同数であることが必須です。 もう一度ご確認ください。これをクリアーすれば完成に一歩近づけるでしょう。頑張ってみて下さい。 ここで「△」は半角のスペース、stとenは、For ~  Nextで用いている変数(・・ここでは「n」)の初期値と最終値です。 mago10さんのエクセルの例では、2行目から開始ですからstは半角の「2」に置き換え、enはA列に入っているデータの一番後方の行No.を示す「Range("A65536").End(xlUp).Row」に置きなおすが最適です。 (因みにNo.4の回答の回答では、複雑な説明を避けるため、stを "2"、enを "2001"とし、For n=2 To 2001と行範囲を固定化しました。2000品目で確定なら良いですが・・・)

mago10
質問者

お礼

もう一度、トライしてみます。

  • pc_knight
  • ベストアンサー率66% (52/78)
回答No.4

マクロがお奨めです。No3さんやNo2さんの示されている方法で一行分の条件付書式設定の作業を自分でマクロ登録、そのマクロコードに2行目からn行目まで摘要行範囲を拡張するコードを追加すれば可です。 (ステップ1)一行分の条件付書式設定の作業を自分自身でマクロ登録方法 ツール(T)→マクロ()M)→新しいマクロの記録(R)→マクロ名を命名しインプット→OK→二行目のセル範囲「B2:E2」を範囲指定→条件付書式設定の作業を実施→終了ボタンをクリック (ステップ2)摘要行範囲を拡張するコードの追加とそれに伴う変更 ステップ1にて登録したマクロを選択し、編集をクリックすると次のようなコードが出る。(一部省略、フルは自身で登録したコードを確認。) Sub 見積もり合わせ() Range("B2:E2").Select Formula1:="=MIN(2:2)" Selection.FormatConditions(1).Interior.ColorIndex = 36 End Sub Range("B2:E2").Selectの一行前に for n=2 to 2001 を挿入 Selection.FormatConditions(1).Interior.ColorIndex = 36の一行あとに next nを追加 これで、2行目から2001行目までの2000品目に摘要されます。 あとは、B列からD列までの4つのセルを範囲指定するRange("B2:E2").Selectをfor n=の変数「n」を用いて「Range(Cells(n, 2), Cells(n, 5)).Select」に置き換えます。 また、最小値の計算式「Formula1:="=MIN(2:2)"」を変数「n」を用いた「Formula1:="=MIN(" & n & ":" & n & ")"」に置き換えます。ColorIndex =の右の数字はセルの色コードです。

参考URL:
http://excelvba.tentant.net/loop.htm#For,http://www.sanynet.ne.jp/~awa/excelvba/kouza.html
mago10
質問者

補足

 がんばってみてますが、コンパイルエラーNextに対応するForがありません。が直せません。

  • NCU
  • ベストアンサー率10% (32/318)
回答No.3

横から失礼します。 #2の方法で数行でも数千行でも同じようにやってみてください。手間は同じですよね。 値の範囲が B:E列に限らないのであれば、条件付書式の数式を以下のようになさればよろしいでしょう。 =MIN(2:2)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

条件付き書式で可能です A社パンのセルがB2だとして、「書式」→「条件付き書式」を選び 「セルの値が」「次の値に等しい」「=MIN($B2:$E2)」 を条件に指定し、セルの書式に背景色をつけます 後はB2セルをコピーし、その他のセルに「編集」→「条件を選択して貼り付け」 で「書式」を選んでください

mago10
質問者

補足

 ありがとうございます。 出来たのですが、品数が2000品ほどあるのです。 説明不足ですみませんでした。 なんとかなりませんでしょうか。 

  • toshi_2000
  • ベストアンサー率30% (306/1002)
回答No.1

エクセルでマクロを使用すればできます。

mago10
質問者

補足

 当方マクロがわかりません。 よろしければ教えて下さい。

関連するQ&A