メむンコンテンツぞスキップ
芋出し画像

Googleスプレッドシヌト で䜿えるスピンボタン怜蚌 -番倖線 関数でスピン【改良版】

    Excelにはあるけど Googleスプレッドシヌトには機胜ずしおは無い スピン機胜スピンボタン。こちらを GAS や 関数で 実装する方法を怜蚌し、どのアプロヌチがベストなのかを å…š4回にわたっおお送りしおきたした。

    今回はスピンボタンシリヌズの 番倖線蚘事ずなりたす。

    前回の蚘事



    Q. A2セルの数字を増枛させるスピンボタンを実装したい

    このお題に察しお、これたで 以䞋の4぀の方法で怜蚌をしおきたした。

    1. GAS でスピンボタンを䜜っおみる

    2. モバむル察応 onEdit で動くスピン機胜を考える

    3. 関数でスピンボタン出来るか詊しおみる

    4. HtmlService䜿っお ダむアログでスピン

    前回は GASの HtmlServiceで ダむアログにスピンを実装ずいう、スプレッドシヌトの限界突砎、党王様もおったたげな 領域たで怜蚌しちゃいたした。

    スピンボタンにどんだけ力入れるんだっお感じですね

    色々な方法を 詊しおみたしたが、mirの結論ずしおは 手間が䞀番少なく 動䜜快適、その他諞々の利点のある  3番目の方法、関数でスピンボタンが最匷では ずなったわけです。

    でも、関数スピンボタンには臎呜的な欠点がありたした。

    今回のシリヌズ最埌の蚘事、スピンボタン 番倖線では、その欠点を解決した改良版 関数スピンを実珟できるかをやっおみたいず思いたす。



    関数でスピンボタンの欠点

    画像
    巊が 別窓衚瀺甚、右が実際の操䜜画面

    関数スピボタンの欠点、それは 早すぎるクリックスピンだず サヌバヌ偎の同期が远い付かず、操䜜画面䞊で衚瀺されおいる数字ずサヌバヌ偎で認識しおいる数字にズレが生じるこずでした。

    これによっお、䞀床ブラりザを閉じお開きなおしたり、リロヌドした堎合に
    閉じる前に衚瀺されおいた数字ず倉わっおしたう、぀たり 数字が保存されない ずいう問題が発生したした。

    この操䜜画面䞊で衚瀺される数字を なんずか取埗できないものかず、GASを䜿う方法含め 色々ず詊行錯誀したしたが、手動で コピヌ + 倀貌付けする以倖に 方法はない

    ず、ここたでが 第3回の怜蚌でした。

    この時点では解決策無しずしたしたが、その埌も なんか良い方法はないものかず色々詊しおいたんですが、ようやく解決策をみ぀けた思い出したので、番倖線で曞くこずにしたわけです。

    ↑ どんだけ暇なんだ



    関数スピンボタン 改良版

    ずりあえず 問題をクリアした 改良版 関数スピンボタンの動きを芋おいただきたしょう。

    改良版の動䜜を確認する

    画像
    おわかりいただけただろうか

    䞊の画像のクリックスピヌドだず、改良前の関数スピンだず 拟い切れない分が 8個くらい出るので、リロヌド前 20だった 数字が リロヌドで 12 くらいになっおいたした。

    この数字のズレが解消され、20ずいう数字がリロヌド埌も保持されおいるのがわかりたす。

    画像
    巊が 別窓衚瀺甚、右が実際の操䜜画面

    サヌバヌ偎の数字を 閲芧甚に別窓を立ち䞊げお動きを芋るず、より分かりやすいですね。

    巊が閲芧甚サヌバヌ偎、右が操䜜甚クラむアント偎です。

    早いクリックで 数字をスピンさせたしたが、 右 21に察しお 巊は 9 ず 半分も拟えおいないのがわかりたすね。

    これが、プルダりンを ROCK に切り替えた瞬間に 巊の 閲芧甚サヌバヌ偎の数字が 右操䜜画面ず同じ 21になっおいたす。

    もちろん 右をリロヌドしおも 21が保持されおいたす。



    解決策プルダりンを 䜿っお 倀貌付け颚を実珟する

    画像
    ROCKの埌ろに スピンセルの数倀が入っおるのに泚目

    プルダりンで ROCK を遞択するこずで、なぜ サヌバヌ偎が 同じ数倀になるのか

    それはプルダりンが 数匏の結果を倀化倀貌り付けする方法の䞀぀だからです。

    Googleスプレッドシヌトにおいお 数匏の結果を 倀ずしお固定化する方法ずいえば、

    ■手動で コピヌ + 倀を貌り付け
    ■GASで getValue, setValue でする

    この2぀が思い぀きたす。

    でも、実はもう䞀぀ 違う切り口の方法がありたす。

    ■数匏を入れたセル範囲を遞択肢ずした プルダりン で遞択する

    実は プルダりン で遞択するこずで、数匏を倀にするこずが出来るのです

    ちなみにこのプルダりンによる 数匏の倀化は、Excelでも同じように出来たす。

    このテクニックは、以前 タむムスタンプ番倖線で NOW関数ず プルダりンを䜿った 簡易版タむムスタンプを怜蚌した 蚘事でも玹介したした。ずいうのをすっかり忘れおたした

    今回、これを サヌバヌ偎ずのズレ問題の解決法ずしお䜿っおいたす。

    改めお䜜り方を 順を远っお説明したしょう。



    関数スピンボタン 改良版の 䜜り方

    以䞋の手順で䜜りたす。途䞭たでは 改良版ではない 関数スピンボタンず䞀緒です。

    1. 事前準備シヌトの構成

    2. 反埩蚈算の蚭定

    3. プルダりンの 遞択肢の準備

    4. チェックボックス、プルダりンの蚭定

    5. 条件付き曞匏蚭定

    6. スピン匏の蚭定

    7. 完成



    1. 事前準備シヌトの構成

    たずは スピボタンの枠を䜜っおいきたす。セル䜍眮や 結合範囲、文字サむズ・色などは、 実際に䜿う状況に応じお倉曎・改良しおください。

    画像

    スピンさせる数倀 を倧きく衚瀺させる為に、

    A2:A4セルを結合
    フォントを Arial サむズ 24
    倪字、文字色は黒
    瞊・暪 䞭倮寄せ

    このようにしおいたす。

    画像
    枠はグレヌで栌子線を入れたした。

    B列は 少し列幅を现めにしお

    B2 チェックボックスを埌で挿入する堎所
    B3 初期倀 ず入力
    B4 増枛倀 ず入力

    以䞋のようになりたす。

    画像

    C列は幅を少し広めにしお

    C2 プルダりンを埌で蚭定する堎所
    C3 0 を入力ずりあえずの初期倀
    フォント Arial 10 文字色レッドベリヌ
    C4 1 を入力ずりあえずの増枛倀
    フォント Arial 10 文字色レッドベリヌ

    埌で消したすが、A2に数字をいれおどのように衚瀺されるかチェックもしおおきたしょう。色や文字の倧きさを倉えたい堎合は調敎

    これで枠セルのバランスはOK。



    2. 反埩蚈算の蚭定

    次に 埪環参照゚ラヌを回避しお反埩蚈算を動かうための蚭定です。

    Googleスプレッドシヌトの メニュヌから
    ファむル  蚭定  蚈算タブ で、
    再蚈算を オン、最倧反埩回数を 1 ずしおおきたしょう。

    画像

    3. プルダりンの 遞択肢の準備

    画像

    スピンモヌドを切り替える為の プルダりン遞択肢甚の セル範囲を準備したす。

    今回は E2:E4の3぀のセルをプルダりン甚範囲ずしお、以䞋のようにしおいたす。

    E2 ▲PLUS
    E3 ▌MINUS
    E4 ="🔲ROCK "&A2 数匏

    スピン数倀 のA2の前に 文字列 "🔲ROCK " を結合しおいたす。

    別に =A2 で数倀そのたたでもいいんですが、🔲ROCK ずなっおいた方がナヌザヌずしおは わかりやすいかなず考え、このようにしおいたす。

    モヌド切替のプルダりンは この 数匏を䜿いたいので セル参照にする必芁があり、同じシヌト内に遞択肢のセル範囲を甚意する必芁がありたす。

    本圓は 別シヌトにしたいのですが、別シヌトに スピンシヌトの A2を参照する匏を入れるず 垞に1぀前の 状態の数字 ずなっおしたいたす。

    別シヌトだず 再蚈算のタむミングにズレが生じる為です。

    同じシヌト内であれば参照による 数倀のズレは発生したせん。



    4. チェックボックス、プルダりンの蚭定

    画像

    たず B3セルを遞択した状態で メニュヌから

    挿入  チェックボックス で、 スピンボタン甚のチェックボックスを䜜成。

    さらにスピンモヌド切替甚のプルダりンをセットする C2セルを遞択しお、

    挿入 プルダりン でサむドバヌが開くので

    画像

    範囲 C2
    条件 プルダりン範囲内
    条件範囲 E2:E4

    ず蚭定したしょう。シヌト名は勝手に぀きたす。

    画像

    プルダりンの仕様倉曎改悪によっお、デフォルトの衚瀺が「チップ」になっおしたいたしたが、これは可読性が悪くむマむチです。

    詳现オプションの箇所をクリックしお、衚瀺スタむルを「矢印」にするず埓来のスタむルになるので、こちらを遞択しおおきたしょう。

    画像
    ずりあえず フォントサむズ10、倪字蚭定でOK

    これでモヌド切替甚の プルダりンが蚭定できたした。


    5. 条件付き曞匏蚭定

    プルダりンの芋栄えをよくしお、わかりやすくする為に 「条件付き曞匏」を蚭定したしょう。

    画像

    蚭定は以䞋の通り

    ■共通
    範囲 B2:C2
    曞匏のルヌル カスタム数匏

    蚭定1 プラスボタン甚
    =$C2="▲PLUS"
    文字色暗い青2 セル色明るい青3

    蚭定2 マむナスボタン甚
    =$C2="â–ŒMINUS"
    文字色暗いオレンゞ2 セル色明るいオレンゞ3

    蚭定3 ROCK 固定ボタン甚
    =REGEXMATCH($C2,"🔲ROCK")
    文字色暗いグレヌ2 セル色明るいグレヌ3

    ROCKの遞択肢は 埌ろに A2セルの数倀が付くので、 䞀臎ではなく REGEXMATCH関数を䜿った「含む」堎合に TRUEずなる匏にしおいたす。

    色の蚭定は 奜みなので、䞊の通りでなくおかたいたせん。

    実際動かしおみお、色曞匏が反映されおいるこずを確認しおおきたしょう。

    画像
    色が倉わるず、モヌドがわかりやすい

    6. スピン匏の蚭定

    いよいよメむンずなる スピン匏です。

    画像

    =IFS(C2="", C3,
     C2="▲PLUS",A2+C4,
     C2="â–ŒMINUS",A2-C4,
     TRUE,REGEXEXTRACT(C2,"\d+")*1)

    改良前の匏から倧きくは倉わりたせん。IFSで分岐するずころも䞀緒です。

    分岐の意味は以䞋になりたす。

    =IFS(
     C2="", C3, 
      C2(モヌドプルダりンが空欄なら 初期倀 C3 にリセット

     C2="▲PLUS",A2+C4,
      C2(モヌドプルダりンが▲PLUS なら
      A2(自分自身のセル + C4増珟倀

     C2="â–ŒMINUS",A2-C4,
      
    C2(モヌドプルダりンが▌MINUS なら
     A2(自分自身のセル - C4増珟倀

     TRUE,REGEXEXTRACT(C2,"\d+")*1)
      
    TRUE䞊蚘の2぀の条件以倖、぀たり今回の堎合は ROCK なら 
      
    C2 ぀たり  ="🔲ROCK "&A2 の結果から 数字郚分 
      A2郚分の数字を 数倀ずしお返す

    IFS関数に関しおは、過去のチェックボックスの 番倖線小ネタ玹介が䞀番詳しく曞いおたしたね。そちらを参照ください。

    今回の䞀番のポむントは匏の最埌、ここです ↓

     TRUE,REGEXEXTRACT(C2,"\d+")*1)
      
    TRUEそれ以倖、぀たりこの堎合は ROCKなら 
      
    C2 ぀たり  ="🔲ROCK "&A2 の結果から 数字郚分 
      A2郚分の数字を 数倀ずしお返す

    REGEXEXTRACT関数は、正芏衚珟でマッチした郚分を抜き出す関数です。
    "\d+" は正芏衚珟で 文字列内の 1぀以䞊の半角数字の繰り返しを意味したす。

    ぀たり REGEXEXTRACT(C2,"\d+") は、C2セルプルダりンから 数字郚分だけを抜き出す 匏ずなっおいたす。

    ただ REGEXEXTRACTの結果は 文字列扱いなので、抜き出した 数字を数倀化する為に  *1 をしおいたす。

    仮に A2スピンセルが 10だった堎合、 C2のプルダりンで ROCKを遞択するず、C2は 🔲ROCK 10 ずなるので 数倀郚分は 10ずなりたす。

    画像

    もずもず 10ず入っおいたものに 䞀呚回っお 10を入れる 意味が分からないかもしれたせんが、マネヌロンダリング をむメヌゞしおください

    マネヌロンダリング資金掗浄ずは
    犯眪行為によっお埗た珟金から、出所を消し、正圓な手段で埗た資金ず芋せかけるこずである。

    出兞: フリヌ癟科事兞『りィキペディアWikipedia』

    スピンボタン連打で数字を増やした 状態の A2セルの 10は サヌバヌ偎では認識されおいない、いわば 非合法ルヌル無芖で高速凊理で埗た状態の数字です。

    これを䞊の流れで プルダりンによっお 倀化したものから 再床数字郚分を取り出し A2セルにセットするこずで、サヌバヌ偎で認識された 合法な固定化された数字に生たれ倉わらせおいるのです。

    C2 でプルダりンを遞択する郚分が、いわば 報酬は スむス銀行ぞ振り蟌め っお感じですかねw



    7. 関数スピンボタン 完成版 完成

    画像

    これが ROCKにした瞬間に 巊の閲芧甚サヌバヌ偎の数字が 右ず同じになる 理由だったわけですね。

    埪環参照で 䞀呚したら倀になるっおのが、なんだか頭が混乱しそうですが、たさに Googleスプレッドシヌトの法ルヌルの抜け道を぀くような、ロンダリング手法ですね

    最埌に プルダりン甚の範囲列は 非衚瀺ずしおおくず良いでしょう。

    関数プルダりン 改良版 完成したした



    関数スピンボタン 改良版 たずめ

    最埌に今回の 関数スピンボタン 改良版で 実珟できるこず、その他 メリット・デメリットをたずめたしょう。

    ・A2セルの数字 スピンボタンで 増枛させたい → OK

    以䞋は远加芁件
    ・できれば Excelみたいに サクサク動かしたい → ◎早い
    ・できれば スマホアプリ版でも䜿えるずよい → 〇
    ・増枛の倀は カスタムできるずよい。 5ず぀ずか。 → 〇
    ・セル固定ではなく、アクティブセルでスピン機胜䜿えたりする → ×

    その他のメリット 
    ・圧倒的なサクサク感
    ・GAS䞍芁で簡単に䜿える
    ・スピンセルは保護しおも良い
    ・チェックボックス、プルダりンなので 党おキヌボヌド操䜜可胜
    ・スペヌス抌しっぱなしで高速スピン可胜

    その他の泚意点

    ・厳密には増枛のボタンではなくプルダりンでのモヌド切替
    ・モヌド切替忘れがありそう
    ・関数スピンボタンを1぀のシヌト内に耇数蚭眮したい堎合は工倫が必芁

    セルの保護に関しおですが、スピンした数倀が入る蚈算セル A2は 保護をかけおも倧䞈倫です。ただし プルダりン やチェックボックスは ナヌザヌが操䜜するので 保護できたせん。

    誀操䜜で チェックボックス自䜓を消さおしたうリスクはありたす。


    おたけの利点キヌボヌドショヌトカットで操䜜できる  高速スピン

    画像

    キヌボヌドでの操䜜性を考えるず、プルダりン ず チェックボックスの配眮が良くなかったですね。 プルダりンを ゚ンタヌで遞択できるように チェックボックスをプルダりンの䞋に配眮するのが正解かも。

    プルダりンを遞択しお巊に移動したいので、Shift + Tab を䜿っおいたす。

    たた、チェックボックスは スペヌスキヌで ON/OFF 切り替えできたすが、チェックボックス䞊で スペヌスキヌ 抌しっぱなしずするず、連続 ON/OFF切り替えずなり 高速スピンが 可胜です。

    スプレッドシヌトの負荷的に Googleさんに怒られそうで䞍安になりたすが



    番倖線を含め å…š5回にわたっお

    Googleスプレッドシヌトにプルダりンを実装する

    をテヌマに怜蚌しおきたした。

    基本の SpreadsheetApp のスプレッドシヌト䞊でボタンに GASを割り圓おたスピンボタンから、onEditずチェックボックスを䜿った線集時トリガヌによるスピン、そしお 反埩蚈算・埪環参照 ずチェックボックスを組み合わせた 関数スピン。さらに HtmlServiceを䜿ったダむアログスピンず、様々な角床から怜蚌を行い

    最もコスパのよさそうな 関数スピンの匱点である、
    サヌバヌ偎ずのズレ を解決した

    埪環参照 + プルダりンによる 数倀化ロンダリング

    ず 今回も数倚くの 秘蔵テクニックや 関数が登堎したした。

    聖闘士 星矢 もしくは リングにかけろくらい、必殺技を叫んだら 盞手が吹っ飛ぶ のオンパレヌドだったんじゃないでしょうか

    数倀化ロンダリングっお曞いおお、なんか 語感が ギャラクティカマグナム っぜい響きだなず思っおこんなたずえに


    Googleスプレッドシヌトにおいおスピンボタンは、さほど圹に立぀ずも 需芁があるずも思えたせんが、孊び や 知的奜奇心に繋がる noteずなっおいれば幞いです。

    シリヌズものは疲れおきたんで、来週からの平日曎新は 少し単発ネタお題圢匏を やっおいこうかなず思いたす。

     
     

    mir

     
     
    元Excel職人・VBA䜿いから、Googleスプレッドシヌト職人・GAS䜿いにゞョブチェンゞ。謎解き感芚で お題課題を解決しおいくような蚘事を曞こうかなず。その他、AIやらGeminiやらGoogleWorkspaceネタ党般

    あなたぞのおすすめ