2026/02/06
【ExcelVBA】連続した値を一括でセル結合!その逆も可能

【ExcelVBA】連続した値を一括でセル結合!その逆も可能

以下のように、連続した値を含む範囲を選択して、今回紹介する機能を実行するだけで、セルの結合をすることができる、もしくは、その逆をすることもできます。

※こちらで作成したファイルは、記事の最後にて配布しています。

このような、複数範囲に対して、セルの結合(解除)を瞬時に行うことができる機能の作り方を紹介していきます。


1. 開発準備

機能を加えたいファイルを立ち上げ、[開発]タブから[マクロ]を選択します。

表示される以下の画面に、作成する機能の名前を入力し、[作成]を選択します。
こちらでは「ToggleMerge」と入力しています。

次に表示される以下の画面の「Sub ○○」から「End Sub」の間にコードを記述します。
「Option Explicit」は、VBEの設定内容次第では表示されません。「Option Explicit」についての解説はこちらでは省略します。

こちらで作成した機能を保存するには、マクロ有効ブック(拡張子「xlsm」)にする必要があります。


2. コードの記述

以下のコードを記述します。

Sub ToggleMerge()
    
    Dim s As Variant: Set s = Selection
    
    If TypeName(s) <> "Range" Then Exit Sub
    If s.Columns.Count <> 1 Then Exit Sub
    If s.Count > 10000 Then Exit Sub
    
    Application.DisplayAlerts = False
    Dim i As Long, r As Range
    For i = 1 To s.Cells.Count
        If s.Cells(i).MergeCells Then
            With s.Cells(i).MergeArea
                .UnMerge
                .Value = s.Cells(i).Value
                i = i + .Count - 1
                Set r = Nothing
            End With
        Else
            If Not r Is Nothing Then
                If r.Value = s.Cells(i).Value Then
                    Range(r, s.Cells(i)).Merge
                Else
                    Set r = s.Cells(i)
                End If
            Else
                Set r = s.Cells(i)
            End If
        End If
    Next i
    Application.DisplayAlerts = True
    
End Sub

では、コードについて解説していきます。

    Dim s As Variant: Set s = Selection
    
    If TypeName(s) <> "Range" Then Exit Sub
    If s.Columns.Count <> 1 Then Exit Sub
    If s.Count > 10000 Then Exit Sub

選択している範囲の情報を変数(s)に割り当て、その範囲が以下の条件を満たしているときに処理を終了します。(上から順番に確認)

・セル以外(Rangeではない:図形など)
・(セルの場合で)セルが1列以外(複数列)
・(セルが1列の場合で)セルの数が10000より多い

こちらは、処理する範囲が正しくないときにエラーになってしまうことや、範囲が膨大で処理が重たくなってしまうことを防ぐための対策です。

    Application.DisplayAlerts = False
    '省略
    Application.DisplayAlerts = True

セルを結合するときに、以下のような警告メッセージが表示されることがあるため、このような警告メッセージの表示を一時的に無効にしています。

    Dim i As Long, r As Range
    For i = 1 To s.Cells.Count
        If s.Cells(i).MergeCells Then
            '省略
        Else
            '省略
        End If
    Next i

変数(i)は繰り返し処理(For i = 1 … Next i)でセルの位置情報を格納する用、変数(r)は1つ前のセルの情報を格納する用として用意しています。
選択されているセルを先頭から1つずつ確認し、そのセルが「結合されている場合」と「結合されていない場合」で処理を分岐しています。

            With s.Cells(i).MergeArea
                .UnMerge
                .Value = s.Cells(i).Value
                i = i + .Count - 1
                Set r = Nothing
            End With

セルが結合されている場合の処理で、まずは結合されているセルの範囲をWithで指定しています。
その次に、その範囲の結合を解除し、結合されていた範囲全体に、その範囲の先頭のセルの値を入力しています。

そして、セルの位置情報を格納している変数(i)に、結合されていた範囲のセルの数から1を引いた数を加えて、その範囲の末尾のセルの位置情報に上書きしています。

最後に、1つ前のセルの情報を格納する用の変数(r)を未割当にしています。

            If Not r Is Nothing Then
                '省略
            Else
                Set r = s.Cells(i)
            End If

セルが結合されていない場合の処理で、1つ前のセルの情報を格納する用の変数(r)が未割当でない場合と、未割当の場合で処理を分岐しています。

未割当の場合は、現在確認しているセルの情報を変数(r)に割り当てています。

                If r.Value = s.Cells(i).Value Then
                    Range(r, s.Cells(i)).Merge
                Else
                    Set r = s.Cells(i)
                End If

変数(r)が未割当でない場合は、その変数(r)が指すセルの値と現在の値が一致しているかどうかで処理を分岐しています。(1つ前の値と同じかどうか)

一致している場合は、変数(r)が指すセルから現在のセルまでの範囲を結合し、一致していない場合は、変数(r)に現在のセルを割り当てています。


3. ショートカットの割り当て

コードが完成したら、実行用のショートカットを割り当てます。

[開発]タブから[マクロ]を選択し、表示される画面から作成した機能を選択して、[オプション]を選択します。

表示される以下の画面にて、ショートカットを割り当てるキーを指定します。
こちらでは、Merge(結合)の略で「m」と入力し、「Ctrl + M」に機能を割り当てています。

以上の設定で確定して、設定画面を閉じます。


4. 完成

以上の手順で完成です。
セル結合したい、もしくはセル結合を解除したい範囲を選択して、「Ctrl + M」のショートカットを実行することで、以下のように切り替えることができます。

セルの結合を解除するときに、一部の罫線の設定が取り消されることがあります。

▼サンプルファイル▼

2026/02/03
【Excel】スピル活用時!指定した範囲内まで展開

【Excel】スピル活用時!指定した範囲内まで展開

スピルに対応したFILTER関数などで値を抽出する際に、指定した範囲内に収まらないとエラーになってしまいます。

ということで、スピルの活用時に「予め指定した範囲内」まで表示し、それ以外は表示しない方法について解説していきます。


TAKE関数の活用

スピルによる展開時に、予め指定した範囲内に収めたいときは「TAKE関数」が便利です。
TAKE関数では、指定した範囲から指定した件数(行数もしくは列数)まで表示し、それ以外は表示しないようにすることができます。

例えば、以下の数式の抽出を最大5件(5行)までにしたい場合について解説していきます。

=SORT(FILTER(B3:D1000,E3:E1000="完了",""),3)

その際は、数式の先頭に「TAKE(」を加え、末尾に「,行数)」を以下のように加えます。

=TAKE(SORT(FILTER(B3:D1000,E3:E1000="完了",""),3),5)
// 先頭から5行分を表示

このようにTAKE関数で囲むことで、以下のように指定した件数まで表示することができます。


補足

TAKE関数に指定する行数に「負の値」を指定すると、末尾から指定した件数まで表示することができます。

=TAKE(SORT(FILTER(B3:D1000,E3:E1000="完了",""),3),-5)
// 末尾から5行分を表示

TAKE関数では、以下のように指定することもできます。

=TAKE(範囲,,2)
// 先頭から2列分を表示
=TAKE(範囲,,-2)
// 末尾から2列分を表示
=TAKE(範囲,2,2)
// 先頭から2行2列分を表示
2026/01/31
【番外-059】数式管理を快適にする方法

【番外-059】数式管理を快適にする方法

#XLOOKUP #ROW #IF #テーブル #構造化参照 #スピル #TRIM参照 #トリム参照

YouTubeで開く

数式の管理を快適にする方法について2通り解説しています。
「表の数式が壊される」や「データを追加する度に、数式をコピーするのが手間」などといった問題を解決する、実務で即活用できる内容です。

00:00 挨拶
00:50 ①テーブルを活用する方法
03:14 ②スピルを活用する方法
05:36 スピルの欠点の解決方法
08:33 まとめ

2026/01/30
【Excel】日付の年月日の位置を揃えて表示

【Excel】日付の年月日の位置を揃えて表示

以下のように、日付の年月日の位置を揃えて表示する方法について、「0埋め」で揃える方法「スペース埋め」で揃える方法2通り紹介していきます。


「0埋め」で揃える方法

初めに、「0埋め」で揃える方法について紹介していきます。

「0埋め」の方法は、表示形式を活用します。
まずは、対象の範囲を選択し、右クリックから[セルの書式設定]を開きます。

次に、[表示形式]タブの[ユーザー定義]を選択し、「yyyy/mm/dd」と入力します。

これで確定すれば完成です。
以下のように、月日が「0埋め」になって年月日の位置が揃いました。

表示形式についての詳しい解説は、以下が参考になります。
>セルの表示形式の設定方法


「スペース埋め」で揃える方法

次に、「スペース埋め」で揃える方法について紹介していきます。

「スペース埋め」の方法は、「0埋め」のような単純な方法では実現できません。
「月が1桁、日が1桁」の場合、「月が1桁、日が2桁」の場合などとすべてのパターンに対し、スペースを表示する位置を表示形式で指定する必要があります。

入力されている日付によって、反映させる表示形式を変える必要があるので、実現するには「条件付き書式」を活用します。

まずは、準備段階として、「0埋め」でない日付の形式にしておきます。
(表示形式:yyyy/m/d)

次に、各パターンについて、それぞれ設定していきます。


【月1桁・日1桁】

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

次に、[ルールの種類]を[数式を使用して、書式設定するセルを決定]にし、「月が1桁、日が1桁の場合」という条件式を入力します。

条件を数式で表現すると、以下のようになります。

=AND(LEN(MONTH(A2))=1,LEN(DAY(A2))=1)
// 選択基準のセルがA2なので、セルA2に対しての条件式を指定
// AND(…):すべての条件を満たす場合
// LEN(MONTH(A2))=1:セルA2の月が1桁の場合
// LEN(DAY(A2))=1:セルA2の日が1桁の場合

次に、[書式]を選択し、[表示形式]タブの[ユーザー定義]にて、以下の表示形式を指定します。

yyyy/ m/ d
// mとdの手前に半角スペースを指定

これで確定することで、月と日が1桁の日付に関しては、「スペース埋め」になります。

【月1桁・日2桁】

条件付き書式に設定する条件式と表示形式以外の手順は同じになります。
そのため、以降は条件式と表示形式のみ記載します。

=AND(LEN(MONTH(A2))=1,LEN(DAY(A2))<>1)
yyyy/ m/d
// mの手前のみ半角スペースを指定

上記の内容で設定すると、以下のように反映されます。

この時点では年月日の位置が揃っていませんが、問題ありません。

【月2桁・日1桁】

条件付き書式に設定する条件式と表示形式は、以下になります。

=AND(LEN(MONTH(A2))<>1,LEN(DAY(A2))=1)
yyyy/m/ d
// dの手前のみ半角スペースを指定

上記の内容で設定すると、以下のように反映されます。


各パターンの表示形式の設定が完了しました。
しかし、年月日の位置が揃っていません。
これは、デフォルトのフォント(「游ゴシック」など)の文字幅が統一されていないためです。

そのため、文字幅が等間隔のフォントに変更する必要があります。
こちらでは、「HGゴシックM」に変更します。

これで完成です。
以下のように、月日が「スペース埋め」になって年月日の位置が揃いました。

2026/01/27
【Excel】INDEXとMATCHの組み合わせ

【Excel】INDEXとMATCHの組み合わせ

INDEX関数とMATCH関数を組み合わせることによって、以下のように、マトリックス表(クロス表)から値を抽出することができます。

この数式、一見長くて難しそうですが、理屈が分かると簡単です。

ということで、INDEX関数とMATCH関数の組み合わせで、値を抽出する仕組みについて解説していきます。


INDEX関数

まずは、INDEX関数についての解説です。
INDEX関数には、「配列・行番号・列番号」の3つを指定します。

=INDEX(配列, 行番号, 列番号)

[配列]に指定した範囲から、指定した[行番号・列番号]に位置する値を取得します。
実際に、以下の数式を入力します。

=INDEX(C3:D5,3,2)
// C3:D5:配列
// 3:行番号
// 2:列番号

[配列]に指定した範囲の3行目2列目に位置する値を取得するので、プラン「C」性別「女」の「1,200」が抽出されます。


MATCH関数

次は、MATCH関数についての解説です。
MATCH関数には、「検査値・検査範囲、照合の種類」の3つを指定します。

=MATCH(検査値, 検査範囲, 照合の種類)

[検査値]に指定した値を、[検査範囲]に指定した範囲の先頭から探し、見つかった位置の番号(先頭から1、2,3、…)を取得します。
[照合の種類]には、「1、0、―1」が指定でき、それぞれ、以下の検査方法を指します。

1:検査値以下
0:検査範囲と完全一致
―1:検査範囲以上

こちらでは、一番使われる「0」のみについて解説していきます。

実際に、以下の数式を入力します。

=MATCH(G2,C2:D2,0)
// G2:検査値
// C2:D2:検査範囲
// 0:照合の種類(完全一致)

横方向は左が先頭、縦方向は上が先頭になります。
そのため、検査範囲の「男」が最初に確認され、その次に「女」が確認されます。
そこで、検査値の「女」が見つかった位置、2番目の「2」を取得します。

次に、以下の数式を入力します。

=MATCH(G3,B3:B5,0)
// G3:検査値
// B3:B5:検査範囲
// 0:照合の種類(完全一致)

この場合、検査範囲の先頭の「A」から確認し、検査値の「C」の位置を取得します。
「C」の位置は先頭から3番目のため、「3」を取得します。


INDEX関数とMATCH関数の組み合わせ

最後に、INDEX関数とMATCH関数の組み合わせです。
MATCH関数を活用することで、対象の値の位置情報を取得することができ、INDEX関数を活用することで、指定した位置情報から、その位置の値を取得することができます。

そのため、INDEX関数の「行番号・列番号」にMATCH関数の数式を指定します。

=INDEX(C3:D5,3,2)
=MATCH(G2,C2:D2,0)
=MATCH(G3,B3:B5,0)
↓
=INDEX(C3:D5,MATCH(G3,B3:B5,0),MATCH(G2,C2:D2,0))

これで完成です。

INDEX関数に指定する位置情報の順番は「行番号→列番号」になるので、順番が逆にならないように注意してください。

2026/01/24
【便利】セルに「+10」と指定するだけで結果を上書き

【便利】セルに「+10」と指定するだけで結果を上書き

#IsNumeric #ActiveCell #MsgBox #If #InStr #Left #Mid #Evaluate

YouTubeで開く

セルを選択して専用フォームに「+10」や「*5」などと「演算子+数値」を入力することで、セルの値に対して直接計算し、上書きすることができる機能の作成方法になります。
計算用のセルを用意する必要がなく、そのセルのみで計算することができます。

>アドインの保存方法から設定方法はこちら

00:00 挨拶
00:36 完成イメージ
01:31 準備
01:54 作成(セル値演算機能)
09:54 作成(クイックアクセスツールバー)
11:36 完成
13:05 プログラムの全体

▼準備ファイル▼

2026/01/23
【ExcelVBA】ボタンを押すだけで「データ削除&上詰め」

【ExcelVBA】ボタンを押すだけで「データ削除&上詰め」

こちらでは、削除したいデータのいずれかのセルを選択して、「選択行の削除」ボタンを押すだけで、その行のデータを削除して上に詰めることができる機能の実現方法について紹介していきます。

以下のように、予め指定した列(「名前」と「性別」)のみが削除されます。

※こちらで作成したファイルは、記事の最後にて配布しています。


1. 開発準備

こちらでは、以下の表を元に実現していきます。

今回は、削除対象の項目は「名前」と「性別」とし、「No」は削除されないように実現していきます。

シートの用意ができたら、[開発]タブから[マクロ]を選択し、表示された設定画面にて「開発する機能の名前」を入力して、[作成]を選択します。
こちらでは、「DeleteSelectedData」と入力しています。

次に表示される以下の画面の「Sub ○○」から「End Sub」の間にコードを記述します。
「Option Explicit」は、VBEの設定内容次第では表示されません。「Option Explicit」についての解説はこちらでは省略します。


2. コードの記述

以下のコードを記述します。

Sub DeleteSelectedData()
    
    Dim r As Long
    r = ActiveCell.Row
    
    If r < 3 Or r > 12 Then Exit Sub
    
    With Range(Cells(r, "C"), Cells(r, "D"))
        .ClearContents
        .Cut
    End With
    Range("C13").Insert Shift:=xlDown
    
End Sub

では、コードについて解説していきます。

    Dim r As Long
    r = ActiveCell.Row

数値を格納する用の変数(r)を用意し、アクティブになっているセルの行番号(ActiveCell.Row)を格納しています。

    If r < 3 Or r > 12 Then Exit Sub

先ほど取得した行番号が、3未満、または12より大きい場合、要するに今回使用する表のデータ行以外がアクティブな場合に、処理を終了(Exit Sub)しています。

「If」は処理を1行で記述できる場合、「End If」を省略することができます。

    With Range(Cells(r, "C"), Cells(r, "D"))
        .ClearContents
        .Cut
    End With
    Range("C13").Insert Shift:=xlDown

アクティブセルの行の削除対象の範囲(r行目のC列からD列)を指定し、値のみを削除(ClearContents)して切り取り(Cut)、そして末尾(セルC13を基準)に挿入(Insert)しています。

単純にセルを削除してしまうと、以下のように罫線が崩れてしまうため、このような手順で実装しています。


3. ボタンの作成

コードが完成したら、実行用のボタンを用意します。

ボタンは、[開発]タブの中の[挿入]から作成することができます。
ボタンには開発した機能「DeleteSelectedData」を割り当てます。


4. 完成

以上の手順で完成です。
削除したいデータのいずれかのセルを選択して、「選択行の削除」ボタンを押すだけで、その行のデータを削除して上に詰めることができます。

▼サンプルファイル▼

2026/01/20
【Excel】1つの数式でセル結合を解除

【Excel】1つの数式でセル結合を解除

以下の画像のように、一部のセルが結合された表を、たった1つの数式(黄色のセル)で、セルの結合を解除して抽出する方法について紹介していきます。


セル結合を解除して抽出する数式

こちらでは、以下の左側の「セルの結合を含む表」から、セルの結合を含まない状態で右側の表に抽出していきます。

数式に使う関数は、SCAN関数です。
SCAN関数は、指定した範囲のそれぞれの値に対して、1つ前に処理した値を活用し、さらに処理を行った結果を返します。

まずは、先頭の「大カテゴリー」をセルの結合を含まない状態で抽出する場合、SCAN関数を用いて、以下の法則で抽出する必要があります。

大カテゴリーの先頭のセルから順番に確認し、
・セルが空でない場合は、そのまま値を抽出
・セルが空の場合は、1つ前に抽出した値を抽出

これを数式で表現すると、以下のようになります。

=SCAN("",B3:B11,LAMBDA(a,b,IF(b<>"",b,a)))
// "":初期値に、最初の値に関しては1つ前に抽出した値が存在しないため「空」を指定
// B3:B11:処理対象の範囲に、「大カテゴリーの範囲」を指定
// LAMBDA(a,b,IF(b<>"",b,a):処理の内容に、「LAMBDA関数」を指定
// → LAMBDA(1つ前に抽出した値[1], 確認対象の値[2], [1]と[2]を用いた数式)

数式を入力することで、以下のように抽出することができます。

他の項目に関して、単純に「B3:B11(大カテゴリー)」の範囲を広げれば抽出できそうに思えますが、実際は、以下のように上手くいきません。

=SCAN("",B3:D11,LAMBDA(a,b,IF(b<>"",b,a)))

この原因は、SCAN関数が処理する順番にあります。
SCAN関数は、指定された範囲の先頭行の先頭列から隣の列へと処理をします。
そのため、SCAN関数を用いて複数列の範囲を指定する場合は、行と列の値を入れ替える必要があります。

それを実現するには、TRANSPOSE関数を活用します。
SCAN関数に指定する範囲をTRANSPOSE関数で囲って、以下のように指定します。

=SCAN("",TRANSPOSE(B3:D11),LAMBDA(a,b,IF(b<>"",b,a)))

ただ以下のように、処理した結果も行と列の値が入れ替わってしまいます。

そのため、SCAN関数自体もTRANSPOSE関数で囲って、以下のように指定します。

=TRANSPOSE(SCAN("",TRANSPOSE(B3:D11),LAMBDA(a,b,IF(b<>"",b,a))))

これで完成です。
以下のように、セルの結合を解除して抽出することができます。

2026/01/16
【Excel】カレンダーで予定がある日のみ自動色付け

【Excel】カレンダーで予定がある日のみ自動色付け

スケジュール表に予定が入力されている日付を、カレンダーに自動で色付けする方法について紹介していきます。

以下の例では、予定がある日付が黄色で色付けされています。

※こちらで作成したファイルは、記事の最後にて配布しています。


1. 準備

以下のようなシートを用意します。

今回の設定を1度行えば、年月日を変更しても活用することができます。
日付の「年、月、日」が入力されているセルには、それぞれの値を表す数値のみが入力されています。

こちらでは、同じシート上に、カレンダーとスケジュール表を用意していますが、必要に応じて別のシートに分けても実現できます。


2. 色付けする条件

では次に、カレンダーを色付けする条件を具体的にしていきます。

まずは、1日を色付けするかどうかを判定する条件について考えていきます。
カレンダーの1日のセルH4を色付けするときは、J列の1日の行のL列の予定に何かしら値が入力されているときです。

カレンダーのセルやスケジュール表のセルは、日によって異なります。
1つ1つのセルに条件付き書式を個別に設定するのは大変なので、共通で使える条件を考える必要があります。

その条件は、以下になります。

スケジュール表の日付の中で、カレンダーの対象セルの値と一致し、尚且つ、スケジュール表の対象行の予定に何かしら値が入力されている場合

この内容を数式で表現すると、以下のようになります。

=COUNTIFS(J4:J34,B4,L4:L34,"<>")
// ★カレンダーのセルB4を色付けするかどうかの条件
// J4:J34の中でB4の値と一致した行のL列が空でない場合
// 上記の条件を満たしているデータの件数を返す
// → 対象がない場合は結果が「0」になる

3. 条件付き書式の設定

次に、先ほどの以下の条件式を元に、条件付き書式に設定していきます。

=COUNTIFS(J4:J34,B4,L4:L34,"<>")
// ★カレンダーのセルB4を色付けするかどうかの条件
// J4:J34の中でB4の値と一致した行のL列が空でない場合
// 上記の条件を満たしているデータの件数を返す
// → 対象がない場合は結果が「0」になる

上記の数式のように、結果が「TRUE/FALSE」でない数値の場合、結果が「0」ならFALSE、「0以外」ならTRUE扱いになります。

まずは、カレンダーの日付の範囲を全て選択し、[ホーム]タブの中から[条件付き書式]の[新しいルール]を選択します。

条件付き書式の設定画面にて、[ルールの種類]を[数式を使用して、書式設定するセルを決定]を選択します。

表示されたテキストボックスに、先ほどの条件式を入力するのですが、注意点があります。
入力した条件式は、選択基準のセルを軸に、他の範囲に相対参照で反映されます。

以下のように、セルB4を基準に選択している場合は、先ほどの条件式が使えるのですが、他の範囲には正しく反映されません。

=COUNTIFS(J4:J34,B4,L4:L34,"<>")

正しく反映させるためには、スケジュール表の範囲を以下のように固定する必要があります。

=COUNTIFS($J$4:$J$34,B4,$L$4:$L$34,"<>")
// $J$4:$J$34:スケジュール表の日付の範囲(絶対参照)
// B4:カレンダーの基準のセル(相対参照)
// $L$4:$L$34:スケジュール表の予定の範囲(絶対参照)

上記の条件式を設定画面に入力し、[書式]より「条件を満たしたときに反映させる書式」を指定します。
以下の画面では、[塗りつぶし]タブから黄色を指定しています。

上記の設定で確定することで、完成です。


4. 完成

以下のように、予定が入力されているカレンダーの日付のみ色付けされることが確認できます。

年月日に関しては、必要に応じて変更していただけます。

▼サンプルファイル▼

2026/01/13
【Excel】「文字列の数字」の警告を非表示にする方法

【Excel】「文字列の数字」の警告を非表示にする方法

セルの表示形式を「文字列」にしているときに、数字のみを入力すると、以下のように「緑の警告」が表示されます。

これは、数値ではなく文字列として数字が入力されているときに表示されます。
ただ、意図的に文字列として数字を入力している場合は、このような警告は不要です。

ということで、「文字列の数字」の警告を非表示にする方法について2通り紹介します。


警告を非表示にする方法1

まずは、1つ目の方法を紹介します。

警告が表示されているセルが先頭になるように、警告を非表示にしたい範囲全体を選択します。

そうすると、左上に「注意マークのアイコン」が表示されるため、アイコンをクリックし、「エラーを無視する」を選択します。

これだけで、選択範囲内の警告がすべて非表示になります。

ただ、この方法の場合、編集すると警告が再度表示されます。


警告を非表示にする方法2

次は2つ目の方法、この方法の場合は、今後一切表示されなくなります。
(本設定を行っていない他の環境では表示される可能性があります。)

[ファイル]タブを選択し、[オプション]を選択します。

次に、[数式]の中の[エラー チェック ルール]から[文字列形式の数値、またはアポストロフィで始まる数値]のチェックを外します。

以上の設定にすることで、常に警告が非表示になります。


まとめ

文字列の数字は、SUM関数などで集計することができません。
そのため、標準では警告が表示される仕様になっています。

2つ目の方法では、文字列の数字に気付くことが難しくなるため、基本は1つ目の方法がおすすめになります。

2026/01/10
【業務】帳票(請求書など)入力用の独自フォーム

【業務】帳票(請求書など)入力用の独自フォーム

#Worksheet_BeforeRightClick #With #If #For #Unload #シートモジュール #ユーザーフォーム

YouTubeで開く

帳票(請求書や見積書、納品書など)に登録する商品を、独自の専用フォームで追加することができる仕組みについて解説しています。
商品一覧表から追加対象の商品を右クリックするだけで、独自のフォームに追加され、一括で帳票に登録することができます。

00:00 挨拶
00:16 完成イメージ
01:34 準備
02:06 作成(ユーザーフォーム)
03:18 作成(プロパティの設定)
07:28 作成(商品をリストに追加)
19:52 作成(選択行削除)
23:42 作成(一括抽出)
28:51 完成
31:00 プログラムの全体

▼準備ファイル▼

2026/01/09
【Excel】効率的に役割を割り当てる設定

【Excel】効率的に役割を割り当てる設定

1人1つの役割で、役割ごとに必要な人数が決まっている場合、以下の表のようだと、どこに何人割り当てたのかが分かりづらく、誤った割り当てにも気づきにくいです。

そこで今回は、1つ1つ割り当てると同時に、重複入力や人数超過の可能性のある項目が自動で色付けされる仕組みの作り方について紹介します。

※こちらで作成したファイルは、記事の最後にて配布しています。


1. 実現方法

値を入力すると同時に、ある条件を満たしたセルを色付けするには『条件付き書式』を活用します。
単純な条件でない場合は「色付けする条件」を数式で表現して、条件付き書式に設定する必要があります。


2. 条件式の用意

まずは、特定のセルについて、色付けする条件を考えていきます。

例えば、セルC4の場合、

このセルを色付けする必要があるときは、以下の複数の条件を満たしたときになります。

・セルC4は空
・C列(セルC4~C13)に入力されている値の数がセルC3の必要人数を満たしている、もしくは、4行目(セルC4~G4)のいずれかに値がすでに入力されている

この複数の条件を数式で表現すると、以下のようになります。

=AND(C4="",OR(COUNTA(C4:C13)>=C3,COUNTA(C4:G4)>=1))

他のセルについても考えると、以下のようになります。

【セルC5】

=AND(C5="",OR(COUNTA(C4:C13)>=C3,COUNTA(C5:G5)>=1))

【セルC6】

=AND(C6="",OR(COUNTA(C4:C13)>=C3,COUNTA(C6:G6)>=1))

【セルD4】

=AND(D4="",OR(COUNTA(D4:D13)>=D3,COUNTA(C4:G4)>=1))

【セルD5】

=AND(D5="",OR(COUNTA(D4:D13)>=D3,COUNTA(C5:G5)>=1))

ここから分かることは、必要人数を確認する範囲の行番号、各行の値の有無を確認する範囲の列名は、以下のように「$」で固定する必要があるということです。

=AND(C4="",OR(COUNTA(C$4:C$13)>=C$3,COUNTA($C4: $G4)>=1))

3. 条件付き書式の設定

作成した以下の数式は、セルC4を基準にした条件式です。

=AND(C4="",OR(COUNTA(C$4:C$13)>=C$3,COUNTA($C4: $G4)>=1))

そのため、セルC4を基準にした色付けする可能性のある範囲(入力欄)を選択します。

次に、[ホーム]タブから[条件付き書式]の[新しいルール]を選択します。

条件付き書式の設定画面にて、[ルールの種類]を[数式を使用して、書式設定するセルを決定]にし、テキストボックス内に先ほどの条件式を入力します。

次に、[書式]の[塗りつぶし]タブから色付けする色を指定します。

上記のように設定して、確定することで完成です。


4. 完成

以下のように、役割を割り当てると同時に、割り当て済みの範囲が自動で色付けされます。

必要に応じて、ドロップダウンリストなどで値を入力しやすくすると良いです。

▼サンプルファイル▼