• ベストアンサー

色つきセルのみを合計する

ユーザー定義関数のSumcolor というのを下記で発見したのですが http://excel-magic.com/post-41/ うまくいきません どなたか教えて頂けますか

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

  • ベストアンサー
  • HohoPapa
  • ベストアンサー率65% (454/690)
回答No.5

更にごめんなさい。 合計を求めるセルたちに、整数しか埋まらない前提の関数になっていました。 以下が改修後のコードです。 これなら、日時や小数でも耐えられるハズです。 m(_ _)m Function SumColor(TargetRange As Range, BaseColorCell As Range) As Double  Dim wkCounter As Double  Dim wkRange As Range  wkCounter = 0  For Each wkRange In TargetRange   If wkRange.Interior.ColorIndex = BaseColorCell.Interior.ColorIndex Then    wkCounter = wkCounter + wkRange.Value   End If  Next wkRange  SumColor = wkCounter End Function

collectionB
質問者

お礼

今、計算結果が出るようになったのですが、こちらもやはり色付き以外のセルを合計します。

その他の回答 (6)

  • HohoPapa
  • ベストアンサー率65% (454/690)
回答No.7

>今、計算結果が出るようになったのですが、 >こちらもやはり色付き以外のセルを合計します。 ??? 誤解がありませんでしょうか?

collectionB
質問者

お礼

またご連絡が遅くなって申し訳ありません。 おかげさまで、解決しました。 おっしゃる通りよく見直したら、番地が間違っていました。 失礼致しました。 おかげさまで、望みどおりのファイルが作れます。

  • HohoPapa
  • ベストアンサー率65% (454/690)
回答No.6

>色付きセルの合計ではなく、 >選択範囲内の色付きではないセルの合計を返してきました。 どこかに誤解がありませんでしょうか。 特に第二引数にセットしているセル番地は正しいですか?

  • HohoPapa
  • ベストアンサー率65% (454/690)
回答No.4

ごめんなさい、 先ほど私の掲示したコードは 第二引数で選択したセルの背景色と同じ背景色の セルの数を数える関数です。 第二引数で選択したセルの背景色と同じ背景色の セルに埋まっている値の合計を求める関数ではありません。 もし、後者なら、↓です。 Function SumColor(TargetRange As Range, BaseColorCell As Range) As Long  Dim wkCounter As Long  Dim wkRange As Range  wkCounter = 0  For Each wkRange In TargetRange   If wkRange.Interior.ColorIndex = BaseColorCell.Interior.ColorIndex Then    wkCounter = wkCounter + wkRange.Value   End If  Next wkRange   SumColor = wkCounter End Function

collectionB
質問者

お礼

回答いただきまして、ありがとうございます。 お礼が遅くなって申し訳ありません。 先ほど上記回答中のもし後者なら、↓をコピペして試したところ 色付きセルの合計ではなく、選択範囲内の色付きではないセルの合計を返してきました。 物凄く惜しいのですが。 回答のNo.5方はうまく行きませんm(__)m 引き続き試してみます。

  • HohoPapa
  • ベストアンサー率65% (454/690)
回答No.3

掲示されたサイトの作者ではないので 課題コードへの突っ込みは避けます。 私だったら、次のような関数にします。 なお、セルの背景色を変えただけでは、セルが書き換わったことにならないため 再計算が行われません。 数えたい範囲のセルの色を変更したら、 関数の埋まったセルを選択して、 F2キーに続き、エンターキーを押す必要があります。 Function SumColor(TargetRange As Range, BaseColorCell As Range) As Integer  Dim wkCounter As Integer  Dim wkRange As Range    wkCounter = 0  For Each wkRange In TargetRange   If wkRange.Interior.ColorIndex = BaseColorCell.Interior.ColorIndex Then    wkCounter = wkCounter + 1   End If  Next wkRange    SumColor = wkCounter End Function

回答No.2

> 下記で発見 URLのサイトを参照すると、 マクロ記述で新規に関数を作成しているようですね。 残念ながらマクロに関して知識がないので、 これ以上コメントできませんが、 エラーはマクロ内で発生していると推測します。 マクロのデバックを頑張って下さい。

collectionB
質問者

お礼

お礼が遅くなって申し訳ありません。 おかげさまで、HohoPapaさんの回答により、解決致しました。 有難う御座いまいした。

  • mt2015
  • ベストアンサー率49% (258/524)
回答No.1

「うまくいかない」とは、どううまくいかないのでしょう。 説明が無いと解りません。 お使いのExcelのバージョン情報と合わせて補足してください。

collectionB
質問者

お礼

お礼が遅くなって申し訳ありません。 おかげさまで、HohoPapaさんの回答により、解決致しました。 有難う御座いまいした

関連するQ&A

  • Excel2000 関数でセルに色をつけたい。

    Excel2000を利用しています。 セルの計算結果によってそのセルに色をつけたい(塗りつぶし)と思っています。 関数のみでセルに色をつけることは可能でしょうか? ユーザー関数(マクロやVBAを利用する?)を使わないと無理なのでしょうか。

  • Excel2003のユーザー定義関数でセルに色をつけたい

    Excel2003のユーザー定義関数で、RGBの値を指定してセルに色をつけたいと考えています。 具体的には、 =CellColor(255,100,33) のように、RGBの値を引数にとり、そのセルに色をつけることは可能でしょうか? マクロを使えば可能ですが…。 また、同時にかなりの数の色を同じシートに出したいのですが、色の数に制限があるというのは本当でしょうか? そうだとすると、マクロで実現できたとしても不可能ですよね? 以上、よろしくお願いいたします。

  • 色の付いたセルを数えたい

    エクセルでセルの色別で集計したい 挿入→名前→定義で名前をCELLCOLOR 参照範囲を=GET.CELL(63,!A1)+NOW()*0 追加→OK で左となりのセルの色番号を返すユーザー関数を試したけどうまくいかない 上の方法の間違いのアドバイスか それとも別の方法でも よろしくお願いします

  • VBAをExcel2010/2013で利用

    下記URLのサンプルファイルに含まれるVBAで作成されたユーザー定義関数について、 Excel2003(Windows7)の環境で利用することが出来ました。 http://www.relief.jp/itnote/archives/003799.php しかしながら、Excel2010およびExcel2013(ともにWindows7)で開くと、結果が #VALUE! と変わってしまい、正しく表示されませんでした。 VBAの参照設定でも同じものにチェックを入れている状態ですが、うまくいきません。 (ただし、Microsoft Excel XX.X Object LibraryやMicrosoft Office XX.X Object Library などバージョンの差異はあり) Excel2010またはExcel2013において、このユーザー定義関数を 正しく利用できる方法が分かりましたらご教示いただけますと助かります。

  • DOMと同名のユーザ定義メソッドを作成できる?

    下記リンク先で、ユーザ定義のcreateElement関数を作成していますが、 既にDOMで(?)、document.createElementという同名メソッドがあるのに、 どうしてエラーにならないのでしょうか? ・documentオブジェクトに紐づいているものとそうではないものの違い? ・ユーザ定義関数は、documentオブジェクトに紐付けることはできないのでしょうか? ▽createElementメソッドが微妙なので汎用的な関数にする   http://taiju.hatenablog.com/entry/20100225/1267106069

  • ユーザー定義関数が入力されたセルを調べたい

    Excel でユーザー定義関数を作成し、アドインにして仕事で使っています。 これらの関数を使用したブックを外部に配布する時にユーザー定義関数を値に変換してから配布したいのですが、ユーザー定義関数とワークシート関数の区別の方法が判りません(外部にアドインは配布しません)。 Dim r As Range Dim f As String For Each r In Activesheet.UsedRange If r.HasFormula Then f = r.Formula Do ' f がユーザー定義関数の一覧の中に見つかれば、セル r の色を変えてループ脱出 Loop End If Next という方法を試みましたが、UsedRange の大きさやユーザー定義関数の数が多いことも影響して結構な時間が掛かってしまいます。 ユーザー定義関数とワークシート関数を区別する方法があれば、Do~Loop を回さなくて済むので、時間短縮できるのではないかと考えています。 よろしくお願いします。

  • excel:塗りつぶしの色によってリスト内容を変える方法

    excel:塗りつぶしの色によってリスト内容を変える方法 質問させていただきます。 塗りつぶしの色によってリスト内容を変える方法がわかりません。 具体的には、たとえばA1が赤だった場合、A1のリスト内容をC1からC5にしてA1が青だった場合A1のリストをD1からD5の内容にするといったことです。 ユーザー定義関数で色わけ関数を作って、リストでIFと作成したユーザー関数を使うことを考えたのですがうまくいきません。 どなたかご教授願えればと思います。

  • Excel2007 セルのスタイルについて教えてください。

    Excel2007 セルのスタイルについて教えてください。 よく使うセルの書式の組み合わせを【セルのスタイル】-【ユーザー定義】で登録したのですが、 ブックの新規作成時にユーザー定義を登録しておくことはできなでしょうか? 毎回、スタイルの結合を行っているのですが、これを省略する方法があれば教えてください。 そもそも、Excel2003のセルの塗りつぶし(カラーパレット)の色を簡単に指定できるようにを思い、 今までよく使っていた色をスタイルで登録してみました。 どなたかよい解決策がありましたら教えてください。

  • 【Excel】関数が入っているセルだけに色を付ける

    【Excel】関数が入っているセルだけに色を付ける方法を教えてください。

  • エクセル。ユーザー定義されたセルを合計するには

    [h]:mm:ssとユーザー定義されたセルがあります。(セルのユーザー定義で標準で組込まれている定義。)実際の表示は12:30:20などとなります。これが複数行ある場合に、最下段に合計を出したいのですがうまくできません。どのような方法で実現可能でしょうか。個人の就業時間を合計する作業をしております。1行目12:30:20、2行目12:40:20とあるとき、合計25:10:40という結果を得たいです。ご教授お願い申し上げます。

専門家に質問してみよう