• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル、連勝、連敗をカウントする関数式。)

エクセルの連勝と連敗をカウントする方法

imogasiの回答

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

連を数えるのはエクセル関数は苦手のように思う。 其れでVBAでやってみた。 どれだけ(何回)各人が勝ちや負けが込んだ(続いた)のか、見る表になっていると思う。 内容はE-L列で、プラス数とマイナスの連続スパン数の大きいものを計算してA,B列に挙げている。 例データ A1:L4 なお-は左寄せ表示防止のためいれたもの。本当は空白セルです 5 1 - - 1 2 3 4 5 -1 2 3 3 3 - - 3 -1 2 3 2 -1 -1 -2 1 4 - - -1 -2 -3 4 -1 -1 -1 -2 7 1 - - -3 3 4 5 4 4 5 3 標準モジュールに Sub test01() d = Range("E65536").End(xlUp).Row For i = 1 To d pmax = 0 mmax = 0 If Cells(i, "E") >= 0 Then 'E列について maesgn = "p" p = 1 m = 0 Else maesgn = "m" p = 0 m = 1 End If '-- For j = 6 To 12 'F列からL列へ Select Case maesgn Case "p" If Cells(i, j) >= 0 Then p = p + 1 Else maesgn = "m" pmax = WorksheetFunction.Max(pmax, p) p = 0 m = 1 End If '-- Case "m" If Cells(i, j) < 0 Then m = m + 1 Else maesgn = "p" mmax = WorksheetFunction.Max(mmax, m) p = 1 m = 0 End If End Select Next j pmax = WorksheetFunction.Max(pmax, p) Cells(i, "A") = pmax mmax = WorksheetFunction.Max(mmax, m) Cells(i, "B") = mmax Next i End Sub p、mはそのときのプラスとマイナスの続き数、反転すると0にする。 pmax,mmaxはそれぞれの反転時間でのプラスとマイナス数の続き数 ーーーー 結果は上記A,B列 A列はプラスの連続の最大の連続スパン B列はマイナスの数の最大の連続スパン 例えば2行目は プラスは 3 232 の続きがあり、多いほうの数3 マイナスは -1 -1-1-2 の多いほうの3 のように考えた。 ーー 問題の主旨を誤解していたら無視してください。 ただその場合は質問表現に問題あると思うが。 関数では相当難しいとおもったので。関数式では初心者中級者には理解が難しい式の組み合わせになりがちだから。 VBAでは考え付きやすいロジックで、それを素直にコードにしただけ(でもこちらも初心者は無理でVBAやプログラムの慣れがいると思うが) もっと簡単な少ない行数のコードもあるかもしれないが。

kei__2000
質問者

お礼

 回答ありがとうございます。VBAでのやり方、参考にさせていただきたいと思います。

関連するQ&A

  • エクセルの関数式について教えてください。お願いします。

    エクセルの関数式について教えてください。お願いします。   A B C D E F G H I J 1 9 6 1 3 4 7 8 2 5 10 2 6 4 9 3 8 7 1 5 10 2 3 1 3 -2 0 2 0 -4 1 1 -2 たとえばこのような表があります。 1の行にはランダムに1から10までの数字が入ります。 2の行にもランダムに1から10までの数字が入ります。 B1に6が入っています、A2にも同じ数字の6が入っています、 6はB1からA2に1つ上がっているので1 A1には9が入っています、C2にも9が入っています。 9はA1からC2に2つ下がっているので-2 D1には3が入っています、D2にも3が入っています。 3はD1からD2動いていないので0 といった具合に、1の行に入った数字が2の行の同じ数字を感知して その数字がどれだけ上がったのか、下がったのかを 3の行に表したいのですが、どのような関数を使ったらよいのでしょうか? 教えてください。お願いします。

  • Excelのカウント関数の応用で教えてください。

    A   B   C   D   E    F   G   H     I   J 10   3   0   4   11   9    8    6     5 エクセルの表でAからHまで数値が入っています。 そして、Iに目標数がはいっています。 Jに関数を入れてカウントしたいのです。 JにはAからHでIより小さい数字で、なおO以上のものをカウントした数を入れたいのです。 ですので今回の場合は『2』となるように。 COUNTIFですと、検索条件に数値を指定しなくてはいけなく。何行もあるので、条件には『>I1』としたいのです。 何か質問に足りないところがありましたら、補足いたしますので、お願いいたします。

  • エクセル関数式について教えてください。お願いします。

    エクセル関数式について教えてください。お願いします。    A B C D E F G H I J 1  5 7 1 4 3 9 8 6 2 10 2  6 7 4 9 3 5 1 2 10 8 3  7 0 1 2 0 -5 -4 1 1 -3 たとえば、このような表があります。 1の行にはランダムに数字が入ります。必ずD1に4が入るわけではありません、毎回変わります。 2の行にもランダムに数字が入りますが、1の行と同じだけ数字が入ります。でも毎回変わります。 そこで、1の行の数字が、2の行の数字を感知して、3の行にどれだけ上がって、どれだけ下がっているかを表したいのですが、関数式はありますでしょうか? 最高9、最低-9になります。1の行と2の行の数字が上下一緒なら0が入るようにしたいです。 教えてください、お願いいたします。

  • EXCELの表で縦横の入れ替え方法

    EXCELの表で 縦軸と横軸を入れ替える方法ってありますか? つまり A B C D E F G H I J K L っていう表を A E I B F J C G K D H L にしたいのです。

  • excel 関数作成の簡素化 ?

    A B C D E F G H I J 1784 1784 1781 1782 1809 1813 1821 1813 1784 1784 (1)A-B B-C C-D D-E E-F F-G G-H H-I I-J (1)0 3 -1 -27 -4 -8 8 29 0 (2)=SUMIF(A:I,">0",A:I) で 40になる 上記の(1)を使用せず (2)のように一気に出来ないか? もしも 表示が悪ければ 書き直し する為 回答不要

  • EXCELのIF関数の入れ子について

    すみませんよろしくお願いします。 EXCELでセル(A1)~(L1)までに不特定の文字列が入力されており、(M1)に「もし(L1)が入力されていたら(L1)の値を表示、もし(L1)がブランクなら(K1)の値を表示、もし(K1)がブランクなら(J1)の値を表示、もし(J1)がブランクなら(I1)の値を表示・・・・」といった具合で関数を作成したいのです。また、(A1)~(L1)のセルで穴あき状態で入力されていた場合は最も(L1)寄りのセルを表示させたいです。 EXCEL2003のIF関数だと、 =IF(L2="",IF(K2="",IF(J2="",IF(I2="",IF(H2="",IF(G2="",IF(F2="",IF(E2="","",E2),F2),G2),H2),I2),J2),K2),L2) で最後の(A1)までの入れ子を作ることができせん。 EXCEL2007を使用すると、 =IF(L2="",IF(K2="",IF(J2="",IF(I2="",IF(H2="",IF(G2="",IF(F2="",IF(E2="",IF(D2="",IF(C2="",IF(B2="",IF(A2="","",A2),B2),C2),D2),E2),F2),G2),H2),I2),J2),K2),L2) と作成できます。 EXCEL2003で作成するいい方法はありますでしょうか? ご指南の程よろしくお願いします。

  • エクセル マクロでセルを自動移動

    例1のようになっているエクセル表があります。 データは右方向、下方向へ増えます。 Cの列以降は4つ単位でしかデータは増えません。 それを例2の表のように列A,Bのデータはそのままに Cの列以降の4つのセルを区切りに下の行に移動して、 空白の列まで言ったらA2の行以降を最後の行まで繰り返しするという マクロを書くことは可能でしょうか。 出来ましたらそのマクロを教えてください。 例1 A1 B1 C1 D1 E1 F1 G1 H1 I1 J1 K1 L1 M1 N1 A2 B2 C2 D2 E2 F2 G2 H2 I2 J2 A3 B3 C3 D3 E3 F3 G3 H3 I3 J3 K3 L3 M3 N3 例2 A1 B1 C1 D1 E1 F1 A1 B1 G1 H1 I1 J1 A1 B1 K1 L1 M1 N1 A2 B2 C2 D2 E2 F2 A2 B2 G2 H2 I2 J2 A3 B3 C3 D3 E3 F3 A3 B3 G3 H3 I3 J3 A3 B3 K3 L3 M3 N3

  • エクセルデータの並び替え

    A列に 1 2 3 4 5 6 7 ・・・・・ B列に a b c d e f g h i j k l ・・・・ と文字列があります。 これを C列に 5つずつデータをセットにして並べたいのです。 A列    B列           C列 1     a      1 a   2 b  3 c  4 d  5 e 2     b      6 f   7 g  8 h  9 i  10 j 3     c      11 k  12 l  13 m  14 n  15 o 4     d      16 p   17 q  18 r  19 s  20 t 5     e      以下同じように続く 6     f 7     g 8     h 9     i 10     j 11     k 実際のC列のデータは トマト tomato  ネコ cat   机 desk  いす chair  かばん  bag  のようにしたいのです。 関数の扱いがわからずに苦戦しています。どうぞ、よろしくお願いします。

  • VBA

    1 a;b;c;d; 2 e;f;g;h; 3 i;j;k;l; をVBAで   1 a;   2 e;   3 i;   1 b;   2 f;    3 j;   1 c;   2 g;   3 k;   1 d;   2 h;   3 l; としたいのですが、どうしたらいいですか?

  • エクセルで2列以上のものを同時に並び替えするには

    エクセルで下記のようなデーターがあるとします。 1 A  G     B  H 2 C  I  ○   D  J 3 E  K   F  L このようにひとつの項目に2行づつあるものに対して、最後に○をつけたものを先頭に2行そのまま一気に並び替えるにはどのようにすればよろしいでしょうか?要するに 2 C  I  ○   D  J 1 A  G     B  H 3 E  K   F  L このようにしたいです。 よろしくお願いいたします。