• ベストアンサー

同じ文字が続くときに数字を合計する関数

A列に同じ文字が続くときに、該当するB列の数字を合計する関数をご教示お願い致します。 (例ではB4、B8、B9の合計で600)

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.7

>続くときに、該当するB列の数字を合計する =SUMPRODUCT((A2:A10=A1:A9)*B2:B10) とかで。

KIKAIDER01
質問者

補足

ありがとうございます。 応用編として、1行飛ばして文字が同じ場合に合計する方法をご教示いただけないでしょうか。(添付図の場合、B8だけとなり、100となります)

その他の回答 (11)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.12

>10以下の場合だけB列の数字を合計 ふつーに =SUMIF(A:A,"<=10",B:B) でやってみては。

KIKAIDER01
質問者

お礼

ありがとうございます。

  • Chiquilin
  • ベストアンサー率30% (94/306)
回答No.11

あれ……既に同じ数式の回答が付いていました。すみません。 > 1行飛ばして文字が同じ場合に合計する方法 参照する行をその分だけずらすだけかと思いますが これも文章の意味が よく分かりません。

  • Chiquilin
  • ベストアンサー率30% (94/306)
回答No.10

どうも説明が回答者に上手く伝わっていないのではないかと思います。 =SUMPRODUCT(N(A1:A9=A2:A10),B2:B10) 違うようなら補足して下さい。

  • SI299792
  • ベストアンサー率48% (715/1477)
回答No.9

なるほど、SUMPRODUCTを使うのですか。「そんな都合のいい関数はありません。」なんて言ってすみません。マクロを組めるとマクロに頼ってしまいます。 ところで、応用編の1行飛ばして文字が同じ場合に合計する方法ですが、 keithin の答えを1つずらせばいいのです。 A1とA3を比較して、同じなら、B3を合計する。 =SUMPRODUCT((A3:A10=A1:A8)*B3:B10) 人の答えを利用してすみません。

KIKAIDER01
質問者

補足

ありがとうございます。もう一つ追加で教えていただきたいのですが、A列が数字の場合、10以下の場合だけB列の数字を合計するには、どのようにすればいいでしょうか?

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.8

#5です。質問例がおかしいなとは思ったが、多分こうだろうと推定して回答した。 その後補足を読むと、意図が別だったことがわかった。 そういう意図なら、#5の前回答の意図に比べて、簡単になります。 Sub Test01() t = 0 m = Cells(1, "A") For i = 2 To 10 If Cells(i, "A") = m Then t = t + Cells(i, "B") End If m = Cells(i, "A") Next i MsgBox t End Sub 例データ 画像の通り J 100 B 200 B 300 Y 100 L 200 E 150 E 200 E 100 M 300 P 400 結果 600 ーー 答えをMsgbxで出してますが、セルにだすなら,B列に出すとして 行をi として Cells(i,"B")=t のようにすればよい。 これなら答えは1つの数になるので、関数でも回答が出そうと思う。

KIKAIDER01
質問者

お礼

ありがとうございます。 質問例が間違っていて、お手間を取らせました。

  • msMike
  • ベストアンサー率20% (363/1775)
回答No.6

マクロ音痴の人のために・・・(^_^) 添付図参照 1.上端行に1行挿入して、1行目の各セルにセル A2 と異なる文字列を __入力(空白でもOKよ) 2.セル C2 に式 =(A1=A2)*1 を入力して、このセルのフィルハンドルを __「エイヤッ!」とダブクリ 3.セル D2 に式 =SUMPRODUCT((C2:C11=1)*(B2:B11)) を入力 ただ、ソレダケ~

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

エクセル関数ではむつかしい(式が長く複雑になる。)のではと思い、VBAでやってみた。 B列で直前行との比較を繰り返して処理する方式。 (VBAでも私には梃子づったが) ーー 例データ  B列 C列 D列 文字 数字 連合計 a 1 s 2 d 3 a 4 a 5 9 s 6 d 7 d 8 d 9 24 f 1 a 2 a 3 a 4 a 5 14 f 6 g 7 x 8 x 9 17 ーーー 標準モジュールに Sub test01() lr = Range("B10000").End(xlUp).Row 'MsgBox lr t = 0 ren = 1 m = Cells(1, "B") '--- For i = 2 To lr If Cells(i, "B") = m Then t = t + Cells(i, "C") ren = ren + 1 Else If ren >= 2 Then Cells(i - 1, "D") = t t = 0 ren = 1 End If t = Cells(i, "C") ren = 1 End If m = Cells(i, "B") Next i '--後仕舞い If ren >= 2 Then Cells(i - 1, "D") = t End If End Sub を貼り付けて、実行する。 結果は上記D列。

  • shintaro-2
  • ベストアンサー率36% (2266/6244)
回答No.4

エクセルのバージョンがいくつなのか不明ですが その手のことは昔から「小計」と呼ばれる機能で実現可能です。 Jの計*** Bの計*** Yの計*** と集計してくれます。 多分データのところにあると思います。 1行目に列見出しを入れておいてください。

  • SI299792
  • ベストアンサー率48% (715/1477)
回答No.3

そんな都合のいい関数はありません。マクロを使って自分で作るしかありません。 もし、あなたが、マクロ経験があるなら、これでできます。 ' Function RepeatSum(IRange As Range) As Double '   Dim IY As Long   Dim OldCell As String   Dim NewCell As String   Dim SSum As Double '   OldCell = IRange.Cells(1) '   For IY = 2 To IRange.Rows.Count     NewCell = IRange.Cells(IY, "A")     SSum = SSum - IRange.Cells(IY, "B") * (OldCell = NewCell)     OldCell = NewCell   Next IY   RepeatSum = SSum ' End Function ' 使い方は=RepeatSum(A1:B10)になります。 マクロ経験が無いなら、http://iinamotto.com/2013/04/597.htmlを参考にして、マクロを使える環境にしてください。 もし、あなたがマクロ経験者なら、ここで詳しく書いても無駄になるので省略します。 どうしてもわからなければ、できるだけ相談に乗ります。

  • asuncion
  • ベストアンサー率33% (2126/6288)
回答No.2

>(例ではB4、B8、B9の合計で600) なぜB4, B8, B9が選ばれるのか、 そのロジックがよくわかりません。 「A列に同じ文字が続くとき」とは、画像ではどこのことを指しますか? また、合計は600ではなくて500では?

KIKAIDER01
質問者

補足

すいません。例が間違えていました。 (誤)例ではB4、B8、B9の合計で600→(正)例ではB3、B7、B8の合計で600 > 「A列に同じ文字が続くとき」とは、画像ではどこのことを指しますか? A3、A7、A8を指します。その行に対応するB列のセル(B3、B7、B8)を合計するということです。

関連するQ&A

  • エクセル関数:隣の列の数字の合計

    Excel2010です。 関数初心者なのでどうぞよろしくお願いします。     A  B       10 ◆     30     50 ◆     40      20     ・     ・ 合計 60 のように、A列に数字、B列に◆があり、 B列に◆のある行の数字のみを合計し、 A列の一番下の行に表示させたいです。 IF関数や条件書式を見てみましたが、 よく理解できませんでした。 ご回答をお願い致します。

  • エクセルのセル内の数字・文字の合計の仕方

    簡単な質問かもしれませんが、エクセルである行・列内の数字・文字の合計を計算する関数を教えて下さい。 例えばA列の中にある「●」文字の合計等。 よろしくお願いします。

  • 複数セルから文字列を検索して・・・

    どう検索していいのかわからなかったので質問します。 複数のセルから特定の文字列を検索して、該当したセルに対応するB列の数字の合計を関数によって出したいです。 例えば画像を例にすると、A列で"()"という文字列が入っているセルがいくつかあります。 これらのセルに対応するB列の数字の合計を出したいです。 "()"は必ず文字列の末尾にくることとします。 回答よろしくお願いします。

  • 同じ文字がいくつあるか合計数を自動算出する関数式は

    いつも大変お世話になっております。 又、ご教示お願い致します。 エクセルの表内で    A列    B列 1       (5)(3) 2       (1)(6)(2) 3       (3)(2) 4 5  (1) 6  (2) 7  (3) 質問です。 B5のセルに(1)がいくらあるか合計数を算出する関数を教えてください。尚、該当範囲はB1~B3です。 B6の(2)…B7の(3)も然りです。 エクセルのファイルが添付できず文章にて質問になってしまい申し訳ありません。よろしくお願いいたします。                          ー 以上 ー

  • 《エクセル2000》複数条件の合計(文字数字混在)

    こんにちは。 A・B列に1~3までの数字・C列に任意の数字が入っています。 A列及びB列に1が入っている行のみ、Cの数字を合計したいです。 仮に1~100行にデータがある場合、関数の式は =SUMPRODUCT((A1:A100=1)*(B1:B100=1)*(C1:C100)) …になると思うのですが、A1~C100のセルの中に、ランダムで全角文字が入っているせいか、計算結果が#VALUE!になってしまいます。 ISNUMBERを使えばいいのかとも思いますが、イマイチぴんときません… 詰めの甘い私に、どうかご教授をお願いします。

  • Excel関数

    Eccel2003を使用して以下のような入力作業を行っております。 A列~C列のセルに「1~10」いずれかの数字を入力して行きます。 入力パターンは (1)A列だけ入力 (2)A列とB列に入力 (3)A列~C列全てのセルに入力 の3パターンです。 複数の列に数字を入力する場合((2)及び(3))、同じ数字を入力することはありません。 【例】     A B C D  1  5  4  1  2  6  3   1 2  4   2 4 5  ・  ・  ・ このとき、A~C列に一つでも該当の数字(ここでは2と4と5)が入力されていた場合に、 ある文言(30文字くらい)をD列に反映させたいのですが、何か良い関数等ありますでしょうか?    ※ 上記例の場合、1,3,4行目のD列に文言を反映 例の4行目のように全ての列に該当の数字を入力することもあります。 ご教示頂きたく何卒宜しくお願い致します。

  • 数字をカウントする関数を教えて下さい。

    関数についてお聞きします。 A列に数字と空欄が入っています。数字は0、1~20です。 B列に"0"と空欄を除いた数字をカウントしたいです。 例 A B 1 1 0  1 2    4 3 0  2 4 このような感じです。 COUNT関数を使っているのですが、"0"をカウントしてしまいます。 よい案をお願いします。  

  • 文字を削除して合計 Excel2007

    Excelで数字を含む文字列から数字のみを取り出し、合計する方法を考えているのですが、わかりません。  |..A..|..B..|..C.|..D.| .2|50%|30%|20%|10%| という風にセルに記入している場合、E2に全体としての割合を表す関数を作りたいと思っています。 とりあえず各セルから%を除いて数字のみを表示する関数を作りました。 =LEFT(A2,LEN(A2)-1) 例はデータが少ないのですが、実際は多数のデータを使うつもりなので、全ての値を足すのでなく、 指定した範囲内の値を合計するようにしたいと思っています。 作業列を使えばできるかもしれませんが、使わない方向でやりたいので、宜しくお願いします。 ちなみに、各割合は、別のシートから=で値を入力しています。

  • エクセルで2つの条件に合うセルの合計

    エクセルで2つの条件に合うセルの合計 こんにちは。 例えば、以下のようにシート上にあるとします。 1 上 100 2 上 200 1 下 150 2 下 500 1 下 30 A列は1か2の数字 B列は上か下の文字 C列は数字 このシートでA列が1でかつ、B列が下の場合のC列を合計したいのですが、SUMIF関数でできるのでしょうか?他の関数でもかまいません。自分で関数を作るのはなしでお願いします。 (動作が重くなるので) ちなみに、上記の場合は、3行目と5行目が該当しますので、150+30=180となります。 -- エクセル2003

  • エクセル関数

    次のような場合の関数をご教示頂けないでしょうか? ・A列には、時々連続する通し番号が入っています。 例 1 2 3 4 4 4 5 6 7 7 7 7 7 8 ・B列には、A列が1個の数字の行には 0 が、複数の数字の行には 1 が入っています。 例 0 0 0 1 1 1 0 0 1 1 1 1 1 0 ・C列に、関数で次のように自動入力したいのです。  B列が 0 なら 0  B列が 1 のグループの先頭行には 1  B列が 1 のグループの途中の行には 2  B列が 1 のグループの最後の行には 3 例 0 0 0 1 2 3 0 0 1 2 2 2 3 0 どういう関数になりますでしょうか? よろしくお願い致します。

専門家に質問してみよう