• ベストアンサー

エクセルの集計方法

仕事で、物件内容と請求金額をエクセルで記入し、H列の請求金額に、集金済になると赤色に塗るような運用をしています。どこかのセルに、赤色(集金済合計)と塗りつぶしなし(未収金合計)を表示させたいのですが、可能でしょうか?

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 御質問文に書かれている内容だけでは質問者様がマクロを使う事が出来るのかどうか判りませんでしたし、Excelを使っている方にもマクロはさっぱり解らないという方も少なくありませんでしたので、回答No.1ではマクロを使わずに済む方法をお伝え致した次第なのですが、マクロを使っても良いという事であれば他にも方法は御座います。  それで、塗りつぶしの際には必ずボタンに登録したマクロを使用するという事であれば、そのマクロを次の様に変更する事で、御質問の件を解決出来るかと思います。 Sub ボタン1_Clic() Const AlreadyCell As String = "J1" '集金済の合計額を表示させるセルのセル番号(J1は仮の値) Const NotYetCell As String = "J2" '未集金の合計額を表示させるセルのセル番号(J2は仮の値) Const BillingColumn As String = "H" '請求金額が入力されている列の列番号 Const FirstRow As Long = 2 '請求金額が入力されている最初の行の行番号(2は仮の値) Dim LastRow As Long, c As Range, AlreadyMoney As Double, NotYetMoney As Double With ActiveSheet With .Shapes(Application.Caller) Set c = ActiveSheet.Cells(.TopLeftCell.Row, "F").Resize(1, 6) If .DrawingObject.Caption = "済" Then c.Interior.ColorIndex = xlNone .DrawingObject.Caption = "未" Else c.Interior.Color = vbRed .DrawingObject.Caption = "済" End If End With LastRow = .Range(BillingColumn & .Rows.Count).End(xlUp).Row If LastRow < FirstRow Then LastRow = FirstRow For Each c In .Range(BillingColumn & FirstRow & ":" & BillingColumn & LastRow) If TypeName(c.Value) = "Double" Then If c.Interior.Color = vbRed Then AlreadyMoney = AlreadyMoney + c.Value Else NotYetMoney = NotYetMoney + c.Value End If End If Next c .Range(AlreadyCell).Value = AlreadyMoney .Range(NotYetCell).Value = NotYetMoney End With End Sub

kimitaki1023
質問者

お礼

全く発想が違ってました。色のついたセルをどうするか・・・ ばかり考えてました。私は。まだまだですね。ご教授ありがとうございました。

その他の回答 (2)

  • Prome_Lin
  • ベストアンサー率42% (201/470)
回答No.3

ボタンを作成できるのでしたら、以下のマクロを質問者の環境に合わせて利用できないでしょうか? 新たにボタンを作成して、以下のマクロを関連付けてください。 Sub Test() r1 = 0 r2 = 0 For i = 1 To Cells(Rows.Count, 8).End(xlUp).Row If Cells(i, 8).Interior.ColorIndex > 0 Then r1 = r1 + 1 Cells(r1, 2).Value = Cells(i, 8).Value Else r2 = r2 + 1 Cells(r2, 3).Value = Cells(i, 8).Value End If Next i End Sub 簡単な説明です。 r1 = 0 r2 = 0 「r1」は、色がついていた場合の行数カウント用、「r2」は、色がついていない方の行数カウント用。 For i = 1 To Cells(Rows.Count, 8).End(xlUp).Row 1行目から、列「H」の最終行まで処理。 If Cells(i, 8).Interior.ColorIndex > 0 Then もし、「i」行目の列「H」のセルに色が付いていたら、 r1 = r1 + 1 色つき用カウントを+1 Cells(r1, 2).Value = Cells(i, 1).Value 別のセルにその値を記入(質問者の環境に合わせてください)。 Else それ以外(色がついていない)場合、 r2 = r2 + 1 色無し用カウント+1。 Cells(r2, 3).Value = Cells(i, 1).Value 先ほどの隣のセルに記入(質問者の環境に合わせてください)。

kimitaki1023
質問者

お礼

全く発想が違ってました。色のついたセルをどうするか・・・ ばかり考えてました。私は。まだまだですね。ご教授ありがとうございました。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

 集金済みの場合はどこかの列に「集金済」とか「済」などの様に集金済みである事を区別する事が出来る様な値を入力しておく様にする事は可能ですか?  もし可能である場合にはSUMIF関数を使って御質問の件を実現する事が可能となります。  例えば仮の話として、集金済みの場合にはI列のセルに「集金済」と入力しておく様にするものとします。  その場合、集金済合計額を表示させるセルに入力する関数は次の様なものとなります。 =SUMIF($I:$I,"集金済",$H:$H)  同じく、未収金合計額を表示させるセルに入力する関数は次の様なものとなります。 =SUMIF($I:$I,"<>集金済",$H:$H)  また、集金済みの場合にはJ列のセルに「済」と入力しておく様にした場合には、集金済合計額を表示させる関数は、 =SUMIF($J:$J,"済",$H:$H) になりますし、未収金合計額を表示させる関数は、 =SUMIF($J:$J,"<>済",$H:$H) になります。  因みに、上記の様にはどこかの列に集金済みである事を区別する事が出来る様な値を入力しておく様にした場合には、Excelの条件付き書式という機能を使用する事で >集金済になると赤色に塗る という事を自動的に行う事が出来る様になります。  例えば、請求金額の入力欄がH3:H999のセル範囲のセルとなっていて(H2セルは「請求金額」などの様な項目名が入力されていて、表の罫線が引かれているのが2行目~999行目の行範囲となっている場合)、集金済みの場合にはI列のセルに「集金済」と入力しておく様にした場合には、以下の様な操作を行って条件付き書式を設定しておく事で、集金済になるとH列の請求金額欄が自動的に赤色で塗りつぶされる様にする事が出来ます。 H3セルを選択   ↓ Excelウィンドウの[ホーム]タブをクリック   ↓ 現れた「スタイル」グループの中にある[条件付き書式]ボタンをクリック   ↓ 現れた選択肢の中にある[ルールの管理]をクリック   ↓ 現れた「条件付き書式ルールの管理」ダイアログボックスの中にある[新規ルール]ボタンをクリック   ↓ 現れた「新しい書式ルール」ダイアログボックスの「ルールの種類を選択して下さい」欄の中にある[数式を使用して、書式設定するセルを決定]をクリック   ↓ 現れた「次の数式を満たす場合に値を書式設定」欄の中に =$I3="集金済" と入力   ↓ 「新しい書式ルール」ダイアログボックスの[書式]ボタンをクリック   ↓ 現れた「セルの書式設定」ダイアログボックスの[塗りつぶし]タブをクリック   ↓ 現れた背景色のサンプルの中にある赤色の四角形をクリック   ↓ 「セルの書式設定」ダイアログボックスの[OK]ボタンをクリック   ↓ 「新しい書式ルール」ダイアログボックスの[OK]ボタンをクリック   ↓ 「条件付き書式ルールの管理」ダイアログボックスの「適用先」欄に入力されているセル範囲の設定を $H$3:$H$999 に変更(カーソルとマウスの左ボタンによる範囲選択が使えます)   ↓ 「条件付き書式ルールの管理」ダイアログボックスの[適用]ボタンをクリック   ↓ 「条件付き書式ルールの管理」ダイアログボックスの[OK]ボタンをクリック

kimitaki1023
質問者

補足

すみません、区別する事が出来る様な値を入力するのは不可能です。 エクセルの操作すらままならない方も使用してますので、赤色に塗る作業すら、ボタンを押して赤に塗りつぶすようマクロをくんでます。 Sub ボタン1_Clic() With ActiveSheet.Shapes(Application.Caller) If .DrawingObject.Caption = "済" Then .TopLeftCell.Offset(0, -6).Resize(1, 6).Interior.ColorIndex = xlNone .DrawingObject.Caption = "未" Else Cells(.TopLeftCell.Row, "F").Resize(1, 6).Interior.Color = vbRed .DrawingObject.Caption = "済" End If End With End Sub

関連するQ&A

  • Excelで集計

    Excelで請求書を作っています。 この請求書の集計表を自動的に別シートもしくは別ブックに作成されるようにしたいのですが、可能でしょうか? 具体的には以下のような具合です。 1.請求書の雛型があり、金額、各項目を入力し「名前をつけて保存」で保存していく 2.金額、各項目を別シートもしくは別ブックに自動的に作成されていく 私のレベルでは例えば「sheet1」のセルA1に何らかの文字列が入るとsheet2のセルA1に同じものが作成されるが、もし、sheet2のセルA1に何らかの文字列が存在する場合、次の行(sheet2のセルA2)に作成され、さらにsheet2のセルA2にも何らかの文字列が存在したらさらに次の行…、といった感じなのですが、何か良い方法はないでしょうか? ちなみにマクロやAccessはさっぱり分かりません。Excelで関数を駆使して出来る範囲でお願いします。 分かりにくい点があるかもしれません。その際はどしどし補足要求してください。

  • エクセル:マクロを使って自動集計するには?

    エクセルのマクロで下記のような事をしたいのですが、どなたか教えて下さい。 セルA2~A100に数種類の商品が商品ごとに入力  されているとします。 1個しかないものもあれば10個入力されているものも あります。 セルB2~B100にはA列の商品の売上金額が入力さ れています。 そこでセルC列に商品ごとの合計売上金額を計算する事 はできませんか? 1個しかない商品はその横のC列のセルに、数個あるも のはその一番下の商品の横のC列のセルに数個の合計  を、という具合に。 よろしくお願い致します。

  • エクセルで転記と集計の方法

    教えてください。 エクセルでA,B列の表があります それをC,D列にコードと合計金額を自動に転記、計算をしたいのですが、どうしてもわからないので教えてください。  A    B      C     D コード   金額    コード  合計金額  100  1000   100  6000 101  2000   101  6000 102  3000 → 102  3000 101  4000 100  5000    

  • Excel SUM集計にネストしてソートする方法

    Excel2007を使っています。 Excel文書の集計を頼まれたのですが、以下のようにしたと考えております。 H5~H40に表示されている合計金額をランキングのように降順でソートするようにしたいのですが、 しかし、H5には I5~AQ5 まで入力されている合計金額がSUMで集計されて表示されています。 それが、H6~H40まで全てにAQまでの合計金額がSUMで集計されて入っています。 そして、 A5~A40 にはお店の個別コード B5~B40 にはお店の名前 C5~C40 には県名 D~F列にはメモらしきよく分からない文章が並んでいます。 これらの列も含めて「きっちり綺麗にH列に合わせて降順で並べろよ」と言われてしまいました。 ということは、SUMにネストさせて入力する必要があるのでしょうか? 一応調べてやってみたのですが思いどおりの動きにならず判らずじまいです。 どうか、お知恵をお貸し頂けないでしょうか? よろしくお願いします。

  • エクセルでセルの装飾毎に集計する方法は?

    エクセルでセルの装飾がありますが、 その装飾毎に集計する方法はないでしょうか? 入力されたセルの数を集計するには、COUNTAですが、 これを装飾毎に集計したいのです。 たとえば、横線は横線ごとに、赤色を付けたセルは赤色を付けたセルごとに その範囲にいくつあるのかを集計したいのです。 詳しい方、よろしくお願いします。

  • エクセルで色区分による集計

    エクセルの列に金額を複数行入力し、その入力した特定のセルだけ色をつけた場合、色をつけた分とつけなかった分の集計を個別にできるでしょうか。

  • エクセル 条件付き書式で色のついたセルの値の計算

    出勤簿をエクセルで作成しています。 条件付き書式で土・日・祝の列に赤色をつけています。 赤色がついているセルの労働時間だけを合計したいのですが、どうすればよろしいでしょうか? よろしくお願いいたします。

  • エクセルの表での集計方法について

    エクセルの表での集計方法について 各項目の当初予算額とその合計金額が表示されています。 各項目間には、空白の行を入れておきます。そして、 各項目の当初予算額の上のセルには、実際に使った金額を入力できるようにしています。 まだ、予算を使っていない項目については、上のセルは空白のままです。 これで、支出した項目と支出してない項目が一目瞭然となります。 そして、 実際に使った金額が入力されている場合はその金額を用いて、まだ支出していない場合(上のセルが空白の場合)は、当初予算額を用いて合計し、当初の合計金額の上のセルに結果を表示します。 なにか、いい方法があれば、教えてください。

  • Excel 氏名を数える方法を教えてください。

    こんにちは。 Excelで、一列十数人の名前が並べてります。 そのまま純粋に並んでいる名前の合計を下の空いているセルに出したいのですが、どういった数式がありますか? ただ、その列には欠員分として1と記入されていますが、それは 含まないようにしたいんです。 初心者の質問ですが、よろしくお願いします。

  • エクセルの集計方法

    下のようなデーターがあるときのエクセルのうまい集計方法があれば教えてください。 1)データーは4列2000行くらいあります。 2)A列には商品名、B列には売上件数、C列には売上金額、D列には利益が各々記入されています。 3)毎月データーが追加されていくのですが、同じ商品名のデーターもかなり追加されます。 4)同じ商品名のデーターはB列・C列・D列を合計値に置き換えていきたいのです。 5)たとえばA列の商品名・カメラにはB・C・D列とも1月から8月の合計である、12件・12万円・2万円がすでに入力されています。 ここに9月分のデーターとして3件・5万円・1万円が追加されたとき、商品名カメラの行は15件・17万円・3万円に置き換えたいのです。 現在手作業でやっていますが、段々商品が増えてきており、手間がかかるようになっています。 うまい方法があればご教示ください。

専門家に質問してみよう