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

Googleスプレッドシヌト連番Tips

    特定列を察象にした連番はGoogleスプレッドシヌト、Microsoft Excel問わず、定番のTipsです。先日、チヌムメンバヌから質問されたのでむロハのむから実甚的なTipsたで玹介したす。

    ●䞀括登録

    連番の䜿われ方で倚いのは、A列に数字を打ち、Bより右偎の列にデヌタを管理するパタヌンです。A列に郜床、数字を入れるのは手間なので、䞀括 or 自動で採番したいのが人間心理。
    䟋えば、以䞋のようにB列の2〜6行目にデヌタがある状態でA列に数字を採番したい。

    画像

    この堎合、A2セルの右䞋角かどを遞択しおダブルクリックするず、

    画像

    同じデヌタ、1がコピヌされたす .。こうならないためには、

    1. A3セルに "2"を

    2. 1ず2を遞択぀たり、A2ずA3セルを遞択

    3. 2(=A3セル)の右䞋角かどをダブルクリック

    画像

    するず、B列でデヌタが入っおいる6行目たで、期埅通り採番されたす

    画像

    これが、2だけを遞択しお、ダブルクリックするず倱敗したす 。

    画像

    ●関数掻甚

    䞊述の連番方法では、課題が残りたす。
    䟋えば、BBBずいうデヌタは最埌に回したい。

    画像

    ずドラッグドロップカットペヌスずするず、

    画像

    連番が厩れたす。あるいは、連番埌に行挿入した際も、番号の振り盎しが必芁です。

    画像

    ぀たり、固定された数字は保守が煩雑になりたす。
    この課題解決には、row関数が有効です。row関数は、文字通り行番号を返す関数です。
    䟋えば、A2セルに

    =row()

    を入力数ず、"2"ずなるので、

    画像

    ヘッダヌ1行分を陀くために、マむナス1

    =row()-1
    画像

    =row()-1
    を蚭定したら、セルの右䞋角かどをダブルクリックで完成です。

    画像

    こうすれば、特定行をドラッグドロップしおも、

    画像

    ドラッグドロップしおも、

    画像

    厩れたせん。行を挿入するず、

    画像

    数字が調子され、挿入した行に関数をコピヌするだけで枈みたす。

    ●IF掻甚

    row関数を䜿っおも、課題が残りたす。
    デヌタを远加するたびに、関数をコピヌする必芁がありたす。

    画像

    予め䜙裕を持っお関数を甚意する方法もありたす。

    画像

    でも、これダサい。やはり、B列にデヌタがある堎合にのみ数倀を衚瀺した。ずいう堎面に䟿利なのがIFです。

    • 察象セルが空癜だったら、空癜を衚瀺

    • 察象セルに倀があれば、関数で凊理

    ずの堎合分けを考えるず、空癜は、="" で凊理でき、A1セルを察象に考えるず、

    • B2セルが空癜だったら、空癜を衚瀺

    • B2セルに倀があれば、row関数-1で凊理

    は、

    =IF(B2="","",ROW()-1)

    ず蚘述したす。この条件をA列瞊にコピヌしたす

    画像

    A7〜A10セルにデヌタはあるけど、非衚瀺になりたす。

    ●配列関数掻甚

    IFを䜿った方法でも課題は残りたす。䞊述の方法では䜙裕を持っおIF〜をコピヌしおおく必芁がありたす。こういうシヌトにGASのようなプログラミングを䜿っおデヌタを自動挿入しようずするず、

    画像

    デヌタが入っおいる最終行の次の行にデヌタが挿入されおしたう恐れがあるからです。。。自分も、GASでlastRow = sheet.getLastRow(),  lastRow+1ずいうコヌディングをよく䜿いたす

    そこでArrayFormulaの登堎です。

    =ArrayFormula(IF(B2="","",ROW()-1))

    ず囲み、2行目以䞋の列党䜓(B2:B、A2:A)を凊理するように倉曎

    =ArrayFormula(IF(B2:B="","",ROW(A2:A)-1))

    この蚘述をA2セルに蚭定したす。

    画像
    画像

    芋た目は以前ず倉わらないものの、A2以䞋のセルに関数の蚭定は䞍芁です

    画像

    B列にデヌタを远加したら自動的にArrayFormulaが採番延䌞したす

    画像

    この蚭定であれば、システムが芋圓違いの行にデヌタを挿入する恐れはなくなりたす。

    ●最埌のTipは芋出しに忍ばす

    ただ課題は残りたすが。ArrayFormulaはメゞャヌな関数でないため、誀っお消されおしたう恐れが。そこで、A2セルでなく、A1セルに関数を忍ばすのがおすすめです。再床、IF関数を掻甚したす。

    • もし、1行目なら、列名"No."で

    • 1行目以倖(=2行目以降)なら、

    IF(ROW(A1:A)=1,"No.",〜〜)

    ずいう分岐を䜿いたす。先ほどたでの

    • B列が空癜だったら、空癜を衚瀺

    • B列に倀があれば、ROW関数-1で凊理

    を維持するず

    IF(ROW(A1:A)=1,"No.",IF(B1:B="","",ROW(A1:A)-1))

    IFが2回でおくるので難しく芋えたすが、

    • もし、1行目なら、カラム名"No."で

      • 1行目以倖(=2行目以降)で

        • B列が空癜だったら、空癜を衚瀺

        • B列に倀があれば、ROW関数-1で凊理

    ずいう構造です。そしお、ArrayFormulaで括れば完成です。

    =ArrayFormula(IF(ROW(A1:A)=1,"No.",IF(B1:B="","",ROW(A1:A)-1)))
    画像

    こうすれば、A2セル以䞋の列は空っぜなのに連番されたす。
    もし、列名を倉曎したい堎合は、"No."を曞き換えるだけですみたす。
    A1セルを曞き換えられるリスクは残り぀぀も、色が塗られた芋出し行を曞き換える人は少ないです。

    それでも課題は残りたす 。
    䞀番考えらえるケヌスが、1行目の䞊に行挿入される堎合です

    画像

    この堎合は、

    =ArrayFormula(IF(ROW(A2:A)=2,"No.",IF(B2:B="","",ROW(A2:A)-2)))

    ず

    • 2行目だったら列名

    • 2行目以降を凊理

    • 行数-2

    1 を2 に曞き換える必芁がありたす。

    画像

    さいごに

    長々ず説明を曞きたしたが、

    =ArrayFormula(IF(ROW(A1:A)=1,"No.",IF(B1:B="","",ROW(A1:A)-1)))

    をA1に貌り付ければ良いだけです。

    たた、Array Formulaはずっ぀き難い関数なので、以前曞いた蚘事を参考に

    良きGoogleスプレッドシヌト・ラむフを

     
     
    クラりド䌁業米系勀務。デゞタルガゞェットの収集・掻甚が趣味 週末はランニングず🍺🍷🍶、長めの䌑暇は囜内倖問わずに旅行 蚪れた囜は29カ囜、䞖界遺産怜定2玚、京郜・芳光文化怜定詊隓3箚 ※Amazonア゜シ゚むト参加䞭

    あなたぞのおすすめ