2024/04/26
【ExcelVBA】VBAを使ってシートの初期設定を自動化

【ExcelVBA】VBAを使ってシートの初期設定を自動化

Excel関連の何かしらの作業を自動化する際に、便利な機能としてマクロというものがあります。
このマクロを開発することができるプログラミング言語がVBAになります。
こちらでは、以下の作業を自動化するマクロを、VBAを用いて開発する方法について解説していきます。
※開発したファイルは記事に最後にて配布しています。

【作業内容】

1.以下のテンプレートシート「YYYYMMDD」のコピーを作成し、シート名を作業日の日付(YYYYMMDD形式)にする

2.コピーしたシートのセルB2に作業日の日付を入力する

では早速、自動化するマクロを開発していきます。
※開発したマクロに関しては、「Ctrl+Shift+A」というショートカットで実行できるようにも設定していきます。

まずは、[開発]タブを選択し、その中の[マクロ]を選択します。

次に、以下の画面にて、好みの名前を入力し、[作成]を選択します。
こちらでは「シート作成」と入力しています。

表示されました以下の画面にて、プログラムを記述していきます。
※「Option Explicit」は設定内容によっては表示されません。


記述する内容は、以下になります。

こちらのプログラムに関して、1行ずつ解説していきます。

まずは、以下の内容について解説します。

Worksheets("YYYYMMDD").Copy After:=Worksheets(1)

こちらでは、「YYYYMMDD」のシートをコピーし、2枚目の位置に貼り付けています。
「Worksheets(1)」が先頭から1番目のシートを指しているため、「Copy」というコピーする機能の設定(引数)の「After」に「Worksheets(1)」を指定することで1番目のシートの後ろと指定しています。

次は、以下の内容について解説します。

With ActiveSheet
    .Name = Format(Date, "yyyymmdd")
    .Range("B2").Value = Date
End With

まずは、「With」について解説します。
「With」を用いることにより、「With」から「End With」の間に関して、「With」の後ろに指定した要素「ActiveSheet」を省略して記述することができるようになります。
省略して記述する場合は、「.」から記述します。

つまり、以下のプログラムと同じ意味になります。

ActiveSheet.Name = Format(Date, "yyyymmdd")
ActiveSheet.Range("B2").Value = Date

同じ要素(こちらでは「ActiveSheet」)に対して操作する場合は、「With」で囲むことによって、処理の塊が分かりやすくなります。

では次に、以下のプログラムについて解説します。

ActiveSheet.Name = Format(Date, "yyyymmdd")

「ActiveSheet」とは現在選択されているシートを指します。
シートをコピーして複製すると、その複製されたシートが自動で選択されるため、「ActiveSheet」は新たに追加したシートのことを指しています。
そのシートの名前「.Name」を「Format(Date, “yyyymmdd”)」で、マクロを実行した日付にしています。
「Date」で、マクロを実行した日付の情報を取得することができるのですが、シート名にはYYYYMMDD形式で設定したいため、Format関数を活用して、形式を変換しています。

では最後に、以下のプログラムについて解説します。

ActiveSheet.Range("B2").Value = Date

こちらでも先ほど同様に「ActiveSheet」を指定しています。
そのシートのセルB2「Range(“B2”)」の値「.Value」に、マクロを実行した日付「Date」を入力しています。


このようにして開発することができました。
開発したプログラムは、対象のプログラム名を指定し、実行ボタンを押すことで実行することができます。

実行することにより、以下のようにシートが作成され、セルB2に日付が入力されます。

注意点として、Excel上には同じシート名のシートを作成することができないため、同日に複数回実行すると、以下のようなエラーが表示され、処理が中断されます。

再度実行する際は、作成したシートを削除してから行う必要があります。 必要に応じて、シート名が重複した場合には「YYYYMMDD_2」のような番号を加えるようにプログラミングするのも良いかと思います。
その方法については、こちらでは省略します。


最後に、ショートカットの設定方法です。
毎回、VBAの編集画面(VBE)を開いて実行するのは手間になるため、ショートカット活用するのがオススメになります。
まずは、[開発]タブの中の[マクロ]を選択し、以下の画面を表示します。

こちらの画面より、開発したプログラム名を選択し、[オプション]を選択します。

以下の画面の[ショートカットキー]のテキストボックスを選択し、Shiftキーを押しながらAキーを押すことで、「Ctrl+Shift+A」というショートカットを設定することができます。

設定後は、[OK]を選択して確定し、設定画面を全て閉じることで、CtrlキーとShiftキーを押しながらAキーを押すして、開発したマクロを実行することができるようになります。

こちらで開発したファイルは、以下から取得できます。


今回の内容は、VBAを用いて繰り返し作業を自動化する一例になります。
ぜひ、日々の繰り返し作業の自動化に、VBAを活用してみてください。
※理解していないプログラムの実行は、情報漏洩データの紛失などの大きな問題につながる可能性があるため、理解した上で実行してください。

2024/04/24
【Excel】月単位の合計を数式で求める

【Excel】月単位の合計を数式で求める

以下の表は、各日付単位のイベントの参加人数をまとめた表になります。

こちらの表を元に、月単位の合計参加人数を求める数式を作成する方法について解説していきます。

まず初めに、以下のような集計結果を表示する用の表を作成します。
日付の項目に関しては、各月の1日の日付を入力しています。

上記の表の人数の項目に、集計結果を表示する数式を入力していきます。

対象のデータのみを集計するには、SUMIFS関数が便利です。
この関数の使い方は、以下の通りです。

=SUMIFS(合計対象範囲, 条件範囲1, 条件1, [条件範囲2, 条件2] ,[… )
// 合計対象範囲から指定した条件を満たしている対象のみの合計を返す
// 条件範囲と条件はセットで設定する
// 条件範囲2以降は、不要なら省略できる

こちらの関数を活用して、人数の項目に関して、以下の条件を満たしている対象のみの合計を求めていきます。

・日付の項目に関して、2023/10/1以降である
・日付の項目に関して、2023/10/31以前である
※2023年10月を集計する場合

「2023/10/1」という値は、以下の集計表の日付の項目の値を活用することができます。

ただ、「2023/10/31」という月末日の値は、今回用意する集計表には存在しないため、「2023/10/1」という値から求める必要があります。

特定の日付の月末日を求めるには、EOMONTH関数が便利です。
この関数の使い方は、以下の通りです。

=EOMONTH(開始日, 月)
// 開始日の(月)か月後の月末日を返す
// 開始日と同じ月の月末日を求める場合は、月に「0」と指定する

実際に、「2023/10/1」から「2023/10/31」を求める場合は、以下のようになります。

=EOMONTH(E3,0)

日付ではなく、「45230」といったシリアル値(日付を表す数値)が表示される場合は、表示形式を日付形式にすることで確認することができます。


では、SUMIFS関数EOMONTH関数を活用して月単位の合計参加人数を求めていきます。
対象の表(各日付単位のイベントの参加人数をまとめた表)に関して、今後もデータが追加されることを考慮すると、以下のような数式になります。

=SUMIFS(C:C,B:B,">="&E3,B:B,"<="&EOMONTH(E3,0))
// 合計対象範囲:C:C → 人数の列全体
// 条件範囲1:B:B → 日付の列全体
// 条件1:">="&E3 → 「>=」という「○○以上」を表す記号とセルE3の日付を「&」で結合
// 条件範囲2:B:B → 日付の列全体
// 条件2:"<="&EOMONTH(E3,0) → 「<=」という「○○以下」を表す記号とセルE3を参照してEOMONTH関数で求めた月末日を「&」で結合

後は、こちらの数式を集計表の最終行までコピーします。
※こちらの数式に関しては、集計対象の表の列全体を指定しているため、下方向にコピーした場合に関しても参照が動いてしまう可能性がありません。セルE3という集計対象月の1日の日付を参照しているセルに関してのみ、相対参照で移動します。

コピーすると以下のように求めることができます。


今回の数式の解説をまとめると、以下のようになります。

SUMIFS関数は、集計時に便利な関数なため、覚えておくと良いです。

2024/04/22
【Excel】指定した値以外のデータを瞬時に削除

【Excel】指定した値以外のデータを瞬時に削除

以下の表から特定の氏名のデータのみを残し、それ以外のデータを瞬時に削除する方法について2通りで解説していきます。

特定のデータのみを取り出して共有する際などに活用できます。

方法1

まず初めに、該当する項目の全範囲を選択します。
こちらでは、氏名を基準にデータを削除するため、氏名の一番上のセルを選択し、CtrlキーとShiftキーを押しながらカーソルキーの下を押して全選択します。

次に、残したい対象(氏名)のいずれかのセルを、Ctrlキーを押しながら2回選択します。
1回目の選択で、対象のセルの選択を解除し、2回目の選択でアクティブにしています。
こちらでは、「井上茂」を対象として選択します。

対象の項目を全選択している状態で、残したい対象のいずれかのセルがアクティブになっていることを確認し、CtrlキーとShiftキーを押しながら¥キーを押します。

この手順によって、以下のように対象のセル以外を選択することができます。

最後に、現時点で選択されているセルを基準に、行全体で削除します。

セルの削除は、Ctrlキーを押しながら「-(ハイフン)」キーを押すことで行えます。
以下の画面にて、[行全体]を選択し、[OK]で確定することで、対象のデータのみを残すことができます。

Excel本紹介

方法2

別の方法として、フィルターを活用する方法もあります。

まず、対象の表の中にカーソルを置き、CtrlキーとShiftキーを押しながらLキーを押してフィルターを設定します。
※正しく設定されない場合は、表の範囲全体を選択してから、上記のショートカットを活用してください。

対象の項目のフィルターボタンより、対象外のデータのみを表示します。
こちらでは、「井上茂」のデータ以外を表示させています。

次に、表の中にカーソルを移動させ、Ctrlキーを押しながらAキーを押して、表全体を選択します。

次に、Ctrlキーを押しながら見出しのセルを選択し、表のデータのみを全選択している状態にします。

この状態で、Ctrlキーを押しながら「-(ハイフン)」キーを押して[行全体]を削除します。

最後に、再度CtrlキーとShiftキーを押しながらLキーを押してフィルターの設定を解除することで、対象のデータのみを残すことができます。


以上、2通りになります。
個人的には、前者の方法の方が早くてオススメになります。

2024/04/19
【Excel】セル内の特定の文字の数を求める

【Excel】セル内の特定の文字の数を求める

セルに入力されている文字から特定の文字の数を数式で求める方法について解説していきます。
こちらでは、以下の黄色のセルから「A」と「B」のそれぞれの数を数式で求めていきます。

・求め方

まずは、求める方法について考えていきます。
Excelには、セル内の特定の文字を数えるという機能は備わっていません。
そのため、数える仕組みを自身で作成する必要があります。
こちらでは、1つの方法について解説していきます。

こちらで紹介する方法は、「セル内の数えたい対象の文字を削除した文字列の文字数」と「元々の文字列の文字数」の差分を計算することで、対象の文字の数を求めます。


・数式の作成

では実際に、先ほどの仕組みを数式で求めていきます。
数式で求めるには、「特定の文字を消すための関数」「文字の数を求める関数」を活用する必要があります。

「特定の文字を消すための関数」はExcelには用意されていないため、文字を置換するSUBSTITUTE関数を活用して求めていきます。

SUBSTITUTE関数の使い方は、以下の通りです

=SUBSTITUTE(文字列, 検索文字列, 置換文字列, [置換対象])
// [文字列]の中の[検索文字列]を[置換文字列]に置換する
// 文字列:対象の文字列
// 検索文字列:置換したい文字列
// 置換文字列:置換する文字列
// [置換対象]:検索文字列が複数存在する場合に、先頭から何番目の対象の文字を置換するのかを数値で指定
// ※省略時は全ての検索文字列を置換

SUBSTITUTE関数を用いて特定の文字を消すためには、以下のように活用します。

=SUBSTITUTE(B2,"A","")

「文字の数を求める関数」は、LEN関数になります。

LEN関数の使い方は、以下の通りです。

=LEN(文字列)
// 指定した[文字列]の文字の数を返す
// 文字列:対象の文字列

以下のように活用します。

=LEN(B2)

SUBSTITUTE関数とLEN関数を用いて、特定の文字の数を求めていきます。

「セル内の数えたい対象の文字を削除した文字列の文字数」は、以下のように求めることができます。

=LEN(SUBSTITUTE(B2,"A",""))
// 「A」の文字を削除した場合の文字数

そのため、以下のように、元々の文字数から上記の文字数を引くことで、特定の文字の数を求めることができます。

=LEN(B2)-LEN(SUBSTITUTE(B2,"A",""))

上記の内容は「A」の文字数になります。
「B」の文字数に関しても、以下のように求めることができます。

=LEN(B2)-LEN(SUBSTITUTE(B2,"B",""))

今回のように、関数を組み合わせることによって、好みの値を求めることができます。
特定の文字の数ではなく、他の値を求める場合などで、関数を組み合わせても求めることができない場合、もしくは、かなり複雑な数式になってしまう場合は、VBAを活用するのが良いかと思います。
(VBAとは、「Visual Basic for Applications」の略称で、ExcelやWordなどといったMicrosoft Officeのアプリケーションの機能を拡張することができるプログラミング言語になります。)

2024/04/17
【Excel】表の途中に行を一瞬で挿入

【Excel】表の途中に行を一瞬で挿入

表の途中にデータを追加する場合、行を挿入する必要があります。
行の挿入は、右クリックから[挿入]を選択して、[下方向にシフト]を選択することで行えますが、手順が2つもあるため、若干大変になります。

実は、瞬時に行を挿入することができる小技があります。
こちらでは、その方法について解説していきます。

まずは、行を挿入したい位置の上のデータを選択します。

次に、右下の四角マークの上にカーソルを移動させます。

この位置でShiftキーを押すと、十字マークが平行線のマークに変わります。

Shiftキーを押している状態で、必要な行数分ドラッグすることで、瞬時に行を挿入することができます。


この方法では、ドラッグした範囲のみが挿入されます。

また、行方向だけではなく、列方向への挿入も可能です。

2024/04/15
【Excel】数式の参照元(先)のセルを瞬時に選択

【Excel】数式の参照元(先)のセルを瞬時に選択

Excelには数式の参照元や参照先を矢印で示す機能(参照元(先)のトレース)が用意されていますが、こちらでは、その機能ではなく参照元のセルを瞬時に選択する方法について解説していきます。

【補足】

矢印で示す機能は、[数式]タブの中の[参照元(先)のトレース]になります。

では、本題の機能について解説していきます。
まずは、参照元のセルを確認したい数式が入力されているセルを選択します。

次に、[ホーム]タブの中の[検索と選択]にある[条件を選択してジャンプ]を選択します。

以下の画面にて、[参照元]を選択し、[1レベルのみ]もしくは[すべてのセル]を指定して[OK]で確定します。

選択することによって、以下のように瞬時に参照元のセルを選択することができます。

複数のセルが選択された場合は、Enterでアクティブセルを移動することができます。
※[参照先]では参照先のセルが存在する場合に、そのセルが選択されます。


こちらの機能は、ショートカットも用意されています。
ショートカットは以下になります。

・参照元(1レベルのみ):Ctrl+[(左角括弧)
・参照元(すべてのレベル):Ctrl+Shift+[(左角括弧)
・参照先(1レベルのみ):Ctrl+](右角括弧)
・参照先(すべてのレベル):Ctrl+Shift+](右角括弧)

【補足】

参照元の選択に関しては、別シートの参照に関しても選択することができます。
ただ、別シートの場合は、数式の先頭に別シートへの参照がある場合に関してのみ、選択することができます。

(例)
・=IF(Sheet1!A1=””,B2,B4):Sheet1のセルA1のみ選択
・=IF(Sheet1!A1=””,Sheet1!B2,B4):Sheet1のセルA1のみ選択

・=IF(A1=””,B2,Sheet1!B4):セルA1,B2のみ選択
・=IF(A1=””,B2,B4):セルA1,B2,B4を選択

2024/04/12
【Excel】簡易的な検索機能を数式のみで実現

【Excel】簡易的な検索機能を数式のみで実現

「文字を入力するだけで、その文字を含む名前のデータのみを瞬時に抽出することができる検索機能」を数式のみで実現する方法について解説していきます。
以下の画像では、セルH3に入力した文字を含む名前のデータを左の表から右の表に抽出しています。

こちらでは、完全一致検索と部分一致検索の2通りについて順番に解説していきます。
※使用したファイルは、記事の最後にて配布しています。

・完全一致検索の実現

特定の条件を満たすデータのみを抽出するには、FILTER関数が便利です。
FILTER関数は、365もしくはExcel2021以降で対応している関数になります。
FILTER関数の使い方は以下の通りです。

=FILTER(配列, 含む, [空の場合])
// 条件を満たすデータのみを抽出する
// 配列:対象の表
// 含む:抽出条件
// [空の場合]:対象が1件もない時に表示する値(省略時はエラーを表示)

この関数を使用して、以下のように記述することで実現することができます。

=FILTER(B3:E1000,C3:C1000=H3,"")
// B3:E1000:表の範囲はデータの増減に対応するため大きめに指定する
// C3:C1000=H3:検索対象の項目の行数は表の範囲と同じにする必要がある

この1つの数式だけで、以下のように対象のデータを抽出することができます。

こちらの場合は、対象が1件のみのため、1件のみが抽出されました。


・部分一致検索の実現

部分一致検索を実現するには、先ほどの以下の数式の「C3:C1000=H3」という条件式について理解する必要があります。

=FILTER(B3:E1000,C3:C1000=H3,"")

条件式について理解するために、まずは「C3:C1000=H3」という数式のみを入力してみます。

= C3:C1000=H3

入力して確定すると、以下のようにTRUEもしくはFALSEという値が表示されます。

TRUEもしくはFALSEという値は、指定した表のデータの数分表示されます。
このTRUEにあたるデータが条件を満たしていて抽出する対象のデータになります。

そのため、部分一致の検索を実現するには、検索欄「セルH3」の値が含むデータのみにTRUEと表示するような条件式を考える必要があります。

そのような条件式を実現するには、FIND関数とIFERROR関数を活用します。
FIND関数の使い方は、以下の通りです。

=FIND(検索文字列, 対象, [開始位置])
// [対象]に[検索文字列]が含まれる場合に、その文字列の先頭からの位置情報を返す
// 検索文字列:検索する文字列
// 対象:検索する対象の文字列
// ※[開始位置]に関しては、今回は使用しないため省略する

実際に活用した例は、以下になります。

=FIND(H3,C4)

入力して確定すると、以下のように見つかった位置の情報を返します。

ちなみに、検索文字列が見つからない場合は、エラーになります。

=FIND(H3,C3)

条件式では、0以外の数値がTRUE、0がFALSEとして扱われるため、エラーの値に関してIFERROR関数を用いて、0と表示していきます。
IFERROR関数の使い方は、以下の通りです。

=IFERROR(値, エラーの場合の値)
// 指定した[値]がエラーの場合に、[エラーの場合の値]を返す
// エラーでない場合は、指定した[値]をそのまま返す
// 値:エラーを検証する対象の値
// エラーの場合の値:エラーの場合に返す値

先ほどの数式にIFERROR関数を組み合わせると、以下のようになります。

=IFERROR(FIND(H3,C3),0)

入力して確定することで、以下のようにエラーの場合に0とすることができます。


後は、必要な行数分表示させる必要があるため、FIND関数の引数[対象]に複数の範囲を指定します。

=IFERROR(FIND(H3,C3:C1000),0) 

これだけで、必要なデータの数分のTRUEもしくはFALSEを意味する値を表示することができるため、こちらの条件式をFILTER関数に設定します。

=FILTER(B3:E1000,IFERROR(FIND(H3,C3:C1000),0),"")

入力して確定することで、部分一致の検索機能を実現することができます。


FILTER関数を用いて検索機能を実現することによって、元の表を触らずに対象のデータの抽出ができます。
検索した内容を残したい場合は、同じような検索機能をコピーして作成すると良いです。
コピーして作成した場合に関しても、元のマスタとなる表は1つのため、最新の表が分からなくなるというような事態を防ぐことができます。

こちらで作成した検索機能のExcelファイルは、以下になります。

2024/04/10
【Excel】特定の文字を一括で色付けする方法 2選

【Excel】特定の文字を一括で色付けする方法 2選

以下のように、特定の文字を一括で色付けする方法について、2通りで解説していきます。

1つ目は置換機能を活用した方法で、2つ目は条件付き書式を活用した方法になります。

・1つ目:置換機能の活用

置換機能には、文字の置換だけではなく書式の置換も行えます。
まずは、対象の範囲を選択し、置換機能を立ち上げます。

置換機能は、[ホーム]タブの中の[検索と置換]から[置換]を選択することで立ち上げることができます。
ショートカットで立ち上げる場合は、Ctrlキーを押しながらHになります。

立ち上げることができましたら、[検索と置換]の画面より[オプション]を選択し、設定画面を拡張します。

次に、以下の手順を行います。

1.[検索する文字列]に色付けしたい対象の文字を入力
(例:「欠」と入力する)
2.[置換後の文字列]の[書式]を選択し、対象のセルに反映したい書式を設定
(例:[塗りつぶし]タブにて背景色を[グレー] にする)

最後に、[すべて置換]を選択します。

選択することで、以下のように一括で色付けすることができます。

ExcelVBAレベル確認

・2つ目:条件付き書式の活用

こちらの方法の場合は、今後に関しても対象の文字に関しては自動で色付けされるようになります。

まずは、色付け対象の範囲を選択し、[ホーム]タブの中の[条件付き書式]より[新しいルール]を選択します。

次に[新しい書式ルール]の画面にて、以下の手順を行います。

1.[ルールの種類]に関して、[指定の値を含むセルだけを書式設定]を選択
2.[ルールの内容]に関して、[セルの値]→[次の値に等しい]と指定し、色付けしたい対象の文字を入力
(例:「欠」と入力する)
3.[書式]を選択し、対象のセルに反映したい書式を設定
(例:[塗りつぶし]タブにて背景色を[グレー] にする)

上記の設定ができましたら、[OK]を選択し確定します。

確定することで、以下のように対象の範囲内の指定した文字のセルに対し、自動で色付けをすることができます。

また条件付き書式での設定のため、対象の範囲内の文字を変更すると同時に、書式に関しても自動で反映されます。

設定した条件付き書式の内容は、[ホーム]タブの中の[条件付き書式]から[ルールの管理]を選択することで確認できます。

ExcelVBAレベル確認

置換機能と条件付き書式を活用する2通りの方法について解説していきました。
目的に応じて使い分けると良いかと思います。

2024/04/08
【Excel】選択した範囲内の改行を一括削除

【Excel】選択した範囲内の改行を一括削除

以下のように、選択した範囲内の改行を一括で削除する方法について解説していきます。

改行を一括で削除するには、置換機能が活用できます。
まずは対象の範囲を選択し、[ホーム]タブの中の[検索と置換]より[置換]を選択、もしくは、Ctrlを押しながらHを押して置換機能を立ち上げます。

[検索と置換]の画面が立ち上がりましたら、[置換]タブが選択されていることを確認します。
また、[検索する文字列]と[置換後の文字列]の項目には値が入っていない状態にします。


次に[検索する文字列]のテキストボックスを選択し、Ctrlを押しながらJを押します。
「Ctrl+J」を行うことで、テキストボックス内に改行が入力されます。

分かりづらいですが、以下のように、テキストボックス内の左下に「点」が点滅しているのが確認できるかと思います。

実際は「点」ではなく、テキストボックス内で改行されている状態になります。
この状態で、[すべて置換]を選択することで、以下のように一括で改行を削除することができます。


補足

置換後に関しても、[検索と置換]を再度開くと改行が入力されている状態になります。
ただ、以下のように改行が全く分からない見た目になっているかと思います。

そのため、忘れる前に[検索する文字列]のテキストボックスを選択し、Ctrlを押しながらAを押してからDeleteを押すことで、改行の文字を削除しておくことを推奨します。
・「Ctrl+A」:文字の全選択
・「Delete」:選択した文字の削除

2024/04/05
【Excel】行ごと削除しても数式が消えない数式

【Excel】行ごと削除しても数式が消えない数式

以下の表の黄色のセルには数式が入力されています。
数式の内容は、「60点以上なら合格、未満なら不合格、空白なら空白」というものです。

この表に関して、不要になった行の値を削除する際に、数式のセルを含め行全体を選択して削除しても、数式だけは消えずに残ります。
そのため、何度でも再利用することができます。

このような行ごと削除できる数式の作成方法について解説していきます。

この数式を実現するには、「スピル」という機能が必要になります。
この機能はExcel2021以降かMicrosoft365で対応しております。

スピルという機能は、数式を入力したセルから溢れ出して数式の結果を表示させるというものになります。

まずは、下記の表のセルD3に「60点以上なら合格、未満なら不合格、空白なら空白」となるような数式をIFS関数で入力していきます。

IFS関数の使い方は以下の通りです。

=IFS(論理式1, 値が真の場合1, [論理式2, 値が真の場合2, …])
// 論理式1:結果がTRUEもしくはFALSEになる式
// 値が真の場合1:論理式1がTRUEの場合に表示する値
// 論理式2以上は必要に応じて指定することができます。
// 複数の論理式がTRUEになる場合は、一番先頭の「値が真の場合」に指定した値が表示されます。

IFS関数を使用して表現したものが以下になります。
※IFS関数で「その他」を指定するには、最後の論理式にTRUEと指定します。

=IFS(C3="","",C3>=60,"合格",TRUE,"不合格")

このように表現することができましたら、数式の参照する範囲を複数行にします。
今回の場合は、セルC3の点数の参照のみならず、セルC3からC7までを指定します。

そのように指定するだけで、以下のようにセルから溢れ出て結果が表示されます。
※スピルが対応していない場合は、以下のように表示されません。

=IFS(C3:C7="","",C3:C7>=60,"合格",TRUE,"不合格")

この数式は、セルD3のみに入力がされていて、他のセルD4からD7には入力されていません。
他のセルD4からD7に関しては、値を削除しようとしても削除することができません。
そのため、4行目以降に関しては、行ごと削除しても、数式のみが残るようになります。


ただ、このままですと、3行目を削除してしまった際に、数式がすべて消えてしまいます。
そのため、次に、3行目に関しても行ごと削除できるようにしていきます。

セルD3に数式を入力している場合は、このようなことが実現できないため、まずは数式を入力する位置から変更する必要があります。

そのため、セルD3の数式を削除し、セルD2の項目名の位置に数式を入力していきます。
項目名の位置に先ほどと同じ数式を入力し、1行上になるため、行番号を変更します。

=IFS(C2:C7="","",C2:C7>=60,"合格",TRUE,"不合格")

このようにすると、項目名の位置に「合格」と表示されてしまいますが、3行目以降に関しては、行ごと削除することができるようになります。

次に、項目名が「合格」ではなく、「評価」となるように数式を修正していきます。
そのような数式を実現するには、ROW関数が活用できます。
ROW関数の使い方は以下になります。

=ROW([参照])
// 参照:指定したセルの行番号を返す(省略時は数式を入力したセルが指定される)

まずは、ROW関数を用いて、項目名に「評価」と表示し、それ以外のセルには「-」と表示する数式を作成していきます。

=IF(ROW(C2:C7)=2,"評価","-")

こちらでは、ROW関数での取得結果が2(2行目)の場合に「評価」、それ以外の場合に「-」を表示させています。

次に、先ほどの数式の「-」という表示を、IFS関数の内容に置き換えます。

=IF(ROW(C2:C7)=2,"評価",IFS(C2:C7="","",C2:C7>=60,"合格",TRUE,"不合格"))

このようにすることで、項目の位置に項目名を表示し、各行に関しては、数式の判定結果を表示することができました。
この場合、数式はセルD2にしか入力されていないため、3行目以降に関しては、行ごと削除しても数式が消えることはありません。

数式が消されないように「シートの保護」を活用することがありますが、部分的に保護すると、行ごとの削除ができなかったりと不便もあります。
そのため、スピルが使える環境の場合は、こちらのような数式で表現してみるのも良いかと思います。

2024/04/03
【Excel・Googleスプレッドシート】セルを囲む薄い線を非表示にする

【Excel・Googleスプレッドシート】セルを囲む薄い線を非表示にする

ExcelとGoogleスプレッドシートには、1つ1つのセルを囲む薄い線が表示されています。

作成したシートによっては、この薄い線が表示されていない方が見やすいことがあります。
今回は、この薄い線を非表示にする方法について解説していきます。

・Excel

Excelの場合、[表示]タブの中の[目盛線]のチェックを外すことで非表示にすることができます。

※薄い線を非表示にするために背景色を白色にしている資料を見かけることがありますが、本来の非表示にする方法ではないため、不要な書式を設定しないためにも、上記の手順で非表示にすることを推奨します。

・Googleスプレッドシート

Googleスプレッドシートの場合、[表示]タブの中の[表示]の中にある[グリッド線]のチェックを外すことで非表示にすることができます。

2024/04/01
【Excel】特定の文字を基準に列を分割

【Excel】特定の文字を基準に列を分割

特定の文字を基準に列を分割する方法について、以下の表を用いて解説していきます。

この表の氏名の項目に関して、スペースを基準に姓と名で列を分割していきます。

氏名の姓と名を分割した際に、元の「氏名」の項目には「姓」を表示していきます。
この状態ですと、「名」を表示する列がないため、「氏名」の隣に1列挿入します。

「性別」の列であるC列の「C」という列名の上で右クリックし、表示されたメニューから[挿入]を選択することで、1列挿入することができます。

挿入することができましたら、「氏名」の項目の要素全体を選択し、[データ]タブの中の[区切り位置]を選択します。

表示されました以下の画面にて、[次へ]を選択します。

進んだ先の画面にて、[区切り文字]を指定します。
こちらでは、[スペース]を選択し、[完了]を選択します。
※更に[次へ]を選択すると、区切り文字での分割後の表示形式を指定することができます。

以下の画面が表示されましたら、[OK]を選択することで、指定した文字を基準に列を分割することができます。

Excel本紹介

【補足

以下のような半角スペースと全角スペースが混ざっている値に関しても、問題なく分割することができます。

今回紹介した[区切り位置]という機能は、特にCSVファイル(カンマ区切りのテキストデータ)を貼り付ける際に役立ちます。