• 締切済み

Excel2021で各行の最小値を返す

Excel2021、つまりBYROWが使えない環境で、配列(m行n列)の各行の最小値を(m行1列に)返すような数式を組めないでしょうか。 合計を返すのはMMULTを使った巧妙な方法(SEQUENCE関数を使って要素がすべて1のm行1列配列を作りMMULTで行列の積を返す)が他のサイトにありました。しかし、MMULTを使う方法で最小値を返す方法は思いつきません。なにかアイディアがあればお願いいたします。

みんなの回答

  • kon555
  • ベストアンサー率51% (1845/3565)
回答No.2

>>動的配列に対して行ごとのMINが出したい  力技になりますが、if関数で値が入っているかを判定して、空白でなければMINを出す、という関数を先に配置しておけばそれっぽくは出来ますね。 https://sakusaku-office.com/excel/post-11960/  ただvbaでやっても対して複雑にはならないので、スキルがあるなら組んだ方がスマートではあります。  環境的に動作確認できないのですが、多分こんな感じでいけるとは思います。 Sub tes() Dim i, LR, LC, Rn LR = Cells(Rows.Count, 2).End(xlUp).Row LC = Cells(1, Columns.Count).End(xlToLeft).Column Application.ScreenUpdating = False For i = 1 To LR Set Rn = Range(Cells(i, 2), Cells(i, LC)) Cells(i, 1) = Application.WorksheetFunction.Min(Rn) Next i Application.ScreenUpdating = True Set Rn = Nothing End Sub

Tofu-Yo
質問者

お礼

お礼が遅くなり申し訳ありません。ご回答ありがとうございます。VBAもわざわざソースまで具体的にいただき、本当にありがとうございます。 VBAにつきましては個人的に参考にさせていただきます。現在はVBAにたよらない、動的配列を学習しています。職場で共有するファイル上でVBAを入れるとVBAスキルのない人がほとんどのため、運用が難しいのです。 また、空欄でIF文を使用する方法については、こちらの説明不足で申し訳ありません。おそらく、動的配列の外の範囲も含めて多めに数式を用意しておく、というようなイメージのご回答ではないかと思われます。(間違えていたらすみません。)そうではなくて、動的配列に対して動的配列が返る数式、つまりデータの行数が50なら、50行の横のMINを、データの行数が100なら、100行の横のMINを返す数式ができないかというご質問です。

  • kon555
  • ベストアンサー率51% (1845/3565)
回答No.1

 各行でMIN関数を使い最小値を出すか、VBAで同様の事をやるか、くらいでしょうか。

Tofu-Yo
質問者

お礼

ご回答ありがとうございます。 動的配列に対して行ごとのMINが出したいのですが、VBAを組むしかないようですね… とりあえずもう少し他の方からの回答を待ってみて、手段がなければVBAか、「<」で一列ずつ比較するか、ここだけ動的処理を諦めます・・・

関連するQ&A

専門家に質問してみよう