- 締切済み
Excel 連続したデータの最大を表す関数
今Excelで家計簿的なものを作成しています。 連続した黒字の月や赤字の月の最大を関数で表そうと考えております。 少ない例なんですが 07年9月 10月 11月 12月 08年1月 2月 3月 +○円 +○円 +○円 -○円 -○円 +○円 -○円 の場合黒字の連続した月の最大が3か月 赤字の最大が2か月をいうのを関数で表したいのですが、調べたところよくわかりませんでした。 時間のある方、アドバイスよろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
関数では難しいのではないかな。今日他の質問でやはり連続して何回 合格したかという数を出す質問があったが、関数では答えが出てないようだ。 ーーー 関数では手こずって 色々考えてVBAの持ち込んで、ユーザー関数を作った。 結構難しかった。VBAの下記ロジックも易しくは無いだろう。 sgn関数も初めて実際に使った。 例データ A1:I1 122 23 1 -34 -56 -2 -11 -1234 566 VBEの標準モジュールに Function aaa(a) Dim cl As Range m = 2 ren = 0 Max = 0 For Each cl In a 'MsgBox cl If Sgn(cl) = m Then ren = ren + 1 'MsgBox ren Else If ren = 0 Then GoTo p1 If ren > Max Then Max = ren p1: m = Sgn(cl) ren = 0 End If Next aaa = Max End Function ーー 結果を出すセルに =aaa(A1:I1) と入れる 結果 4 マイナスの続きが5つあるので、1ツ少ない4を出す仕組み。 ーー テストデータ追加A2:O2 -3 1 4 5 -1 1 3 4 5 -6 -1 -2 4 4 -2 =aaa(A2:O2) 結果 3 データのーと+をいじくって変わる様子をテストしてください
「07年9月」がセルB2だとしてセルB4に =SIGN(B3) セルC4に =IF(SIGN(B3)<>SIGN(C3),1*SIGN(C3),B4+SIGN(C3)) で右へコピー。 これで、 黒字連続最長月数...MAX(4:4) 赤字連続最長月数...MIN(4:4) で出せます。 ただし、プラマイゼロは考慮していません。 しかし家計簿なら予算ピッタリはないでしょうから大丈夫かと・・ ハズしていたら、ゴメンナサイ。
- maron--5
- ベストアンサー率36% (321/877)
A B C D E F G 1 07月9月 10月 11月 12月 08年1月 2月 3月 2 1234 4567 7890 -1963 -2741 4567 -258 >黒字の連続した月の最大が3か月 =MAX(FREQUENCY(IF(A2:G2>0,COLUMN(A2:G2),""),IF(A2:G2<0,COLUMN(A2:G2),""))) >赤字の最大が2か月 =MAX(FREQUENCY(IF(A2:G2<0,COLUMN(A2:G2),""),IF(A2:G2>0,COLUMN(A2:G2),""))) ★この式は「配列数式」です、式を入力後、 Ctrl+Shift 押しながら、Enter を押してください ★式が確定すると、式の両端に { }がつきます