• ベストアンサー

Excelの関数で…

店舗名  1 2 3 4 5 6 7 8 9  最大日数 A支店  5 0 0 0 0 1 0 0 0  6 B支店  0 0 0 1 0 0 0 0 0  4 A支店は1日が5つ、6日が1つあります。 B支店は4日が1つ、あります。 最大日数の行にそれぞれの店舗の最大日数を反映させる関数はどのようにしたら いぃのでしょうか? ちなみに上の表ではA支店が1日が5つ、6日が1つあるので最大日数は6になります。 B支店は4日がひとつなので最大日数は4になります。 宜しくお願いします

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

  • ベストアンサー
回答No.1

配列数式です 最大日数のセルに 質問の例ではB2~J2にデータ、B1~J1に見出しがあるものとしてK2セルに =MAX(IF(B2:J2>0,$B$1:$J$1,0)) と入力して、[Ctrl]+[Shift]+[Enter]を押してください。 B2~J2を検索し、0以上であれば、B1~J1の値を持ってきて、最大の数字を表示します。

その他の回答 (4)

  • comv
  • ベストアンサー率52% (322/612)
回答No.5

こんにちは 表の構成が以下として _ _A_ B C D E F G H I J K 1 店舗名 1 2 3 4 5 6 7 8 9 最大 2 ○支店 5 0 0 0 0 1 0 0 0 式 3 □支店 0 0 0 1 0 0 0 0 0 ↓ セルK2に式  =SUMPRODUCT(MAX($B$1:$J$1*B2:J2)) と入力後、必要行まで複写 で試してみて下さい

回答No.4

>VBAですが、あるいは配列変数がはじめてなら、それを理解するより速いかも知れない。 個人差はあるかもしれませんが、 VBAも配列数式もはじめてなら、配列数式の方が理解するのは簡単だと思います。 私も配列数式は、覚えてから2、3ヶ月ですので、配列数式のすべてを 理解しているとは言えませんが、ある程度の理解でかなりの応用が利くと思います。

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

VBAですが、あるいは配列変数がはじめてなら、それを理解するより速いかも知れない。 Sub test01() Worksheets("sheet1").Select d = Range("a3").CurrentRegion.Rows.Count s = 3 For i = 3 To s + d - 1 For j = 9 To 1 Step -1 If Cells(i, j) <> 0 Then Cells(i, 9+1) = j Exit For End If Next j Next i End Sub (1)a3は表の計数開始する、左上隅セルに変えること。 (2)sは計数開始行の行数字に変える (3)9は列数により変えること。 (4)スペースセルがないこと。

回答No.2

#1で回答した者です。 見出しが全角の数字の場合は =MAX(IF(B2:J2>0,COLUMN(B2:J2)-1,0)) と入力して[Ctrl]+[Shift]+[Enter]を押してください。 こちらは列番号を返します(B2セルなら2、C2セルなら3)ので そこから1を引いた値の最大を表示します。 2度書きすみません。

関連するQ&A