パスワードを忘れた? アカウント作成
14995383 story
マイクロソフト

Excelに新関数LET()追加。正式版として一般公開 43

ストーリー by nagazou
ニュー関数 部門より
Microsoftが3月に発表していた Excelの新関数「LET()」が16日、正式版として一般公開された(LET Generally Available窓の杜)。

LETは同じ部分式が繰り返し登場するような場合、計算結果に名前を割り当て変数として再利用可能にするというもの。可読性の向上などが期待できる。Office365またはMicrosoft365で利用可能となっている。バージョンはWindowsでは2009(ビルド13231.20262)、Mac OSでは16.42(20101102)になっている場合に使用可能となる。
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by NOBAX (21937) on 2020年11月25日 13時38分 (#3930331)
    LET を利用しない場合の方が短く記述できるのだが、例文として妥当なのか
    • by Anonymous Coward on 2020年11月25日 14時06分 (#3930355)

      短くではなく分かりやすく書く富豪的プログラミングなので良いのでは。
      変数名短くしたり条件直接指定したりすれば利用しない場合より短くなるし。

      可読性の向上などが期待できる。

      親コメント
    • by Anonymous Coward

      短いほうが絶対に可読性が上とも限るまい。

      例文見た自分はどっちも「うわぁ、読みたくねぇ……」でしたが。
      せめて改行必須にしてほしい。

      • by Anonymous Coward

        ExcelのUIだと長いと途端に可読性落ちるから、短いのは通常のプログラミング言語より意味がある。

    • by Anonymous Coward

      最初の図や例が、name_valueにリテラルしかないから勘違いしそう

  • by manmos (29892) on 2020年11月26日 11時15分 (#3930893) 日記

    代入文だね。

    #ジジイですら知っている人がどこまでいるのか…

  • by Anonymous Coward on 2020年11月25日 15時22分 (#3930431)

    sum(ほげほげ)で出した合計値が100を越えていれば100に丸めて、そうじゃなければそのままの値、とやりたいときに、同じsum()を2回含むセルを作るか、別のセルにsum()の結果を入れて隣に100以下に丸めたセルを作るか、と面倒くさかったので。

    min(sum(ほげほげ), 100) でも良いんだけど、この書き方、1/2以上の確率で、max(sum(ほげほげ), 100) と書き間違える…。

    let(s, sum(ほげほげ), if(s > 100, 100, s)) の方が何も考えずに書けて楽そう。

    • by Anonymous Coward

      10 let a=10

      • by Anonymous Coward

        BASICですか。
        何もかも懐かしい・・・

        • by Anonymous Coward

          N-BASICなんかLETは省略可能なんでほぼ見かけませんでしたね
          必須の処理系ってとても少なかったと思います

          • by hjmhjm (39921) on 2020年11月26日 13時15分 (#3930970)

            というか、書いたほうが不利になる罠だったような。
            プログラム容量も増えるし速度も遅くなるという。

            親コメント
            • by shibuya (17159) on 2020年11月26日 15時09分 (#3931103) 日記

              >プログラム容量も増えるし速度も遅くなるという。

              どの関数を使うと実行時に何単位の処理時間だとか記憶域とか
              そういうのを気にしないでどんどん使いましょうというのが
              元々の発想だったから気にしたら負け?

              // 偶整数除算よりも右シフト演算の方がコストが安いという選択とは別世界。

              親コメント
    • by Anonymous Coward

      sum(ほげほげ)で出した合計値が100を越えていれば100に丸めて、そうじゃなければそのままの値、とやりたいときに、同じsum()を2回含むセルを作るか、別のセルにsum()の結果を入れて隣に100以下に丸めたセルを作るか、と面倒くさかったので。

      良きに計らうならこうすればいいんですよ

      Let it be...

      # 終わりは近い

    • by Anonymous Coward

      1/3の確率で
      let(s, sum(ほげほげ), if(s < 100, 100, s))と書き間違え、
      1/3の確率で
      let(s, sum(ほげほげ), if(s > 100, s, 100))

    • by Anonymous Coward

      >min(sum(ほげほげ), 100) でも良いんだけど、この書き方、1/2以上の確率で、max(sum(ほげほげ), 100) と書き間違える…。

      >let(s, sum(ほげほげ), if(s > 100, 100, s)) の方が何も考えずに書けて楽そう。

      100が2箇所に出てきてメンテナンス性が悪くなるだけ。
      自分が何を書きたいのか考えようとしないのは、責任放棄だよ。

      • by Anonymous Coward

        100点満点以外で成績を付けることってないのでな

        • by Anonymous Coward

          どんな科目の成績を付けてるのかね

    • by Anonymous Coward

      普段プログラムを組まない人はそう考えるんだ。興味深い。
      プログラマだと、この内容ならほとんどが"min"の方を選ぶと思う。

      • by Anonymous Coward

        minも集中して練習でもしたら慣れられるもんなのか。

        競技プログラミングの類に興じたり、その手の検定で上級を余裕で取れたりするけど、それでも、20年来間違い続けてる。

        min使うと毎回、間違うんだよね、とちょっと手を止めて考えながら書いてもやっぱり逆になってたり。あまりに間違うから避ける→いつまで経っても慣れない、の悪いループに陥ってるかな。

        • by Anonymous Coward

          元々が、英語のMinimumとMaximumですし、そこを覚えれば…暗記物なのは大差無いか…。
          入力後に毎回検算するとか、入力時の関数説明+インテリセンス用のポップアップで機能を確認するとかはどうでしょうか?

          • by Anonymous Coward

            max=100にするためにmin()を使うから混乱するという話でしょ。
            この流れでいくと、次はキーワード引数のサポートか?

    • by Anonymous Coward

      =if(sum(ほげほげ)>100,int(sum(ほげほげ)),sum(ほげほげ))

      • それぐらいだったら、条件付き書式でできますね。
        セル値は「=sum(ほげほげ)」で、書式を「[>100]0;0.00」に。

        その数値をさらに別のセルが参照する可能性を考えると、セル値そのものを切り詰めるのではなく、内部的にはそのまま保持して表示だけいじる方が好みです。
        (元々正/ゼロ/負での表示切り替えの機能なので)書式を3パターンまでしか切り替えることができないのが欠点。

        書式を「[>100]"100";0」にすれば、元コメの「合計値が100を越えていれば100に」ってのも実現できますが、これはセル参照すると全然別の数値になるので一長一短かなぁ。

        親コメント
        • by Anonymous Coward

          >セル値は「=sum(ほげほげ)」で、書式を「[>100]0;0.00」に。
          これはEXCELでいう条件付き書式じゃないよ。
          通常の書式設定内の条件付け。

          EXCELでいう条件付き書式は「ホーム」-「スタイル」-「条件付き書式」
          書式設定よりも細かいことが可能。
          元の値は変わらず、表示だけ変更というのは同じだけど。

  • by Anonymous Coward on 2020年11月25日 17時42分 (#3930530)

    LET(hoge, fuga,
            fuga, "なんか",
            hoge) //エラー

    名前宣言前では参照できないのね
    なんかいたずらしてやろうと思ったけどうーむ…
    let(head, {1,0}, tail, {0,1}, …)←こういう単位配列的なものに名前つけて意味わかりやすくしてやるのには結構便利でした。

  • by Anonymous Coward on 2020年11月25日 19時31分 (#3930613)

    if(iserror(○○),"",○○)みたいに同じこと2回書かないとダメなのが無くなるのかな?

    • by Anonymous Coward

      その例なら IFERROR 使えばよいのでは。
      エラーにしか使えないけど。

      • by Anonymous Coward

        iferror知らなかったありがとう!

        • by Anonymous Coward

          ちょっと前にはifzeroも出来ましたよ!
          Excelヘルプの類似・関連関数リンク欄は割とオススメ。
          その手の便利関数がない場合は、元コメの様にletを使うのが良さそうですね。

  • by Anonymous Coward on 2020年11月25日 19時44分 (#3930618)

    セル結合を禁止する機能をください。

    • by Anonymous Coward

      純表計算向けExcelを方眼紙向けExcelと分離しましょう
      使い回しで製品が増えるので、MSも大喜び

      • by Anonymous Coward

        ピボットテーブルでもセル結合使われてるよ。

        • by Anonymous Coward

          ピボットテーブルでもセル結合使われてるよ。

          アウトプットに使うのは可。
          インプットとして使われる表にセル結合するのは重罪。

    • by Anonymous Coward

      それ以前に(マルチプランには実装されていた)純十進演算オプションだろ。

    • by Anonymous Coward

      じゃあ、代わりに行、列にレイヤーの要素を追加して三次元に対応しよう

      • by Anonymous Coward

        これ、たまに欲しいときがある。
        縦横表の年度別推移を見たい時とか。

        UIをどうするかが問題だけど。

  • by Anonymous Coward on 2020年11月26日 7時10分 (#3930768)

    いやエクセルでLet over Lambdaはやりたくない

  • by Anonymous Coward on 2020年11月27日 23時29分 (#3932075)

    let(it,5)

typodupeerror

未知のハックに一心不乱に取り組んだ結果、私は自然の法則を変えてしまった -- あるハッカー

読み込み中...