2025/09/16
【Excel・Googleスプレッドシート】マウスで横方向へスクロール

【Excel・Googleスプレッドシート】マウスで横方向へスクロール

マウスのマウスホイールを回転させることで、縦方向へのスクロールができます。

しかし、一般的なマウスホイールは縦方向にしか回転しません。
(※一般的という表現をしている理由は、マウスの中には横方向へのスクロールに対応しているものもあるためです。)
そのため、横方向へのスクロールは、スクロールバーを直接クリックしているという方も少なくないはずです。

ということで、今回は、一般的なマウスホイールを使って横方向へスクロールする方法について解説していきます。


横方向へのスクロール

Excelで横方向へスクロールする際は、「Ctrl」キーと「Shift」キーを押しながらマウスホイールを回転させます。
それだけで、横方向へスクロールすることができます。

Googleスプレッドシートの場合は、「Shift」キーのみを押しながらマウスホイールを回転させます。
それだけで、横方向へスクロールすることができます。

ExcelVBAレベル確認

横方向へのスクロールに対応しているマウス

参考程度に、横方向へのスクロールに対応しているマウスを紹介します。
対応しているマウスには、大きく分けて以下の2種類があります。

・マウスホイールを横に倒してスクロール

>参考商品(Amazon)

・横方向へのスクロール用のホイール付き

>参考商品(Amazon)

横方向へのスクロールを高頻度で行う場合は、このようなマウスの導入を検討してみると良いです。

2025/09/12
【ExcelVBA】クリック操作だけで数量を入力

【ExcelVBA】クリック操作だけで数量を入力

数量を管理している表で、よく数量に1を加えたり、1を減らしたりと作業をしている場合、数量のセルに数値を毎回、直接入力するのは大変です。
数量の項目が少ない場合は、スピンボタンなどを活用するのも1つの手ですが、項目数が多い場合は、スピンボタン1つ1つにセルを割り当てるのは大変になります。

ということで、今回は、数量の隣のセルを直接クリックするだけで、数量に1を加えたり、1を減らしたりすることができる仕組みの作り方について解説していきます。

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


1. 開発準備

今回は、数量の隣のセルを右クリックすることで、該当行の数量のセルの値を更新するという仕組みを実装していきます。

まずは、以下の左側の表の、数量の隣のセルにボタンのようなデザインのセルを用意します。

上記では、「セルの書式設定」より罫線と背景色などを設定しています。
また、E列には「<」、F列には「>」という文字を直接入力しています。

ボタンのデザインの用意ができましたら、右クリックすると同時に数量を更新する仕組みを実装していきます。
特定のシートの特定のセルを右クリックすることで何かしら処理を実行するには、該当するシートのシートモジュールを活用します。

シートモジュールは、該当するシートのタブ上で右クリックし、[コードの表示]を選択することで表示することができます。

選択すると、以下のエディタ画面(VBE)が表示されます。
また、該当するシートのシートモジュールが表示された状態になります。
「Option Explicit」は、VBEの設定内容次第では表示されません。「Option Explicit」についての解説はこちらでは省略します。

次に、該当するシートのセル上で右クリックすると同時に処理が実行される特殊なプロシージャ(イベントプロシージャ)を用意する必要があります。
そのためには、シートモジュールの左上のリストから「Worksheet」を選択します。

「Worksheet」を選択すると、自動で「Worksheet_SelectionChange」というプロシージャが表示されます。
このプロシージャは、該当するシート上のいずれかのセルが選択されると同時に処理が実行されるイベントプロシージャになります。

ただ、今回使用するイベントプロシージャは、セル上で右クリックされると同時に処理が実行されるものになります。
そのため、右上のリストから「BeforeRightClick」を選択します。

表示された「Worksheet_BeforeRightClick」というプロシージャを活用します。
「Worksheet_SelectionChange」というプロシージャに関しては削除して問題ないです。


2. コードの記述

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

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    
    If Target.CountLarge = 1 And _
        Target.Row >= 3 And _
        Target.Row <= 21 And _
        Target.Column >= 5 And _
        Target.Column <= 6 Then
        
        Cancel = True
        Select Case Target.Column
            Case 5:
                Cells(Target.Row, "D").Value = _
                    Cells(Target.Row, "D").Value - 1
            Case 6:
                Cells(Target.Row, "D").Value = _
                    Cells(Target.Row, "D").Value + 1
        End Select
        
    End If
    
End Sub

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

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    
    If Target.CountLarge = 1 And _
        Target.Row >= 3 And _
        Target.Row <= 21 And _
        Target.Column >= 5 And _
        Target.Column <= 6 Then
        
        '省略
        
    End If
    
End Sub

「Worksheet_BeforeRightClick」というプロシージャの引数の「Target」に、右クリックされたセルの情報が渡されるため、そのセルの情報から、対象の範囲内が右クリックされたかどうかを確認しています。
こちらでは、「右クリックされたセルが単体で、3行目以上21行目以下、5列目以上6列目以下のセル」と、対象の範囲内の単体のセルが右クリックされたかどうかを確認しています。

この条件を満たした場合に関してのみ、Ifの中の処理を実行します。

        Cancel = True
        Select Case Target.Column
            Case 5:
                Cells(Target.Row, "D").Value = _
                    Cells(Target.Row, "D").Value - 1
            Case 6:
                Cells(Target.Row, "D").Value = _
                    Cells(Target.Row, "D").Value + 1
        End Select

先ほどの条件を満たした場合は、「Cancel = True」で右クリック時のメニューが表示されないようしています。

その次に、右クリックされたセルが5列目(E列)なのか、6列目(F列)なのかによって、処理を分岐しています。
5列目(E列)の場合は、その右クリックされたセルと同じ行のD列の値(数量)に対し1を引き、6列目(F列)の場合は、その右クリックされたセルと同じ行のD列の値(数量)に対し1を足しています。


3. 完成

先ほどのコードを記述したら完成です。
「<」もしくは「>」が入力された以下の赤枠内のセル上で右クリックすることで、対象行の数量に対し、1を加えたり、1を減らしたりすることができます。

▼サンプルファイル▼

2025/09/09
【Excel】複数行1データの表から数式で検索&抽出

【Excel】複数行1データの表から数式で検索&抽出

まず前提として、可能ならば1行1データの表に変換した方が良いです。
しかし、いろんな理由(入力しやすさ、見やすさなど)で、以下のような複数行1データの表で管理することがあります。

このような複数行1データの表から、特定の項目で検索して値を抽出する方法について、以下の表の「会員番号」で検索し、「氏名」を抽出する数式を例に解説していきます。

ExcelVBAレベル確認

1. 法則性を見つける

理想の値を抽出するためには、まずは法則性を見つける必要があります。

以下の表の場合は、次のような法則性があります。

・「会員番号」の下のセルが「氏名」

そのため、該当する「会員番号」の行番号が分かれば、その1つ下の行番号の、同じ列のセルの値を抽出すれば良いです。


2. 対象の行番号を取得する

特定の値が入力されているセルの行番号を取得するには、MATCH関数が便利です。
MATCH関数を使った以下のような数式で、行番号を取得することができます。

=MATCH(F3,C:C,0)
// F3:検索値
// C:C:検索範囲
// 0:検索方法(完全一致)
// 指定した「検索範囲」の先頭から指定した「検索値」と完全一致する値の位置情報を返す

上記では、「C:C」と列全体を指定していますが、表の先頭からの相対的な行番号でも問題ないです。
表の先頭からの相対的な行番号を取得する場合、以下のような数式になります。

=MATCH(F3,C4:C21,0)

3. 指定した行番号のセルの値を取得する

次は、先ほど取得した行番号に1を加えた行番号の、同じ列のセルの値を抽出します。

指定した範囲の相対的な行番号のセルの値を抽出するには、INDEX関数が便利です。
先ほど抽出した行番号に1を加えた行番号に位置するセルの値を抽出する場合、以下のような数式になります。

=INDEX(C4:C21,G3+1)
// C4:C21:抽出対象となる範囲
// G3+1:指定した範囲から抽出する値の位置情報
// 指定した「抽出対象となる範囲」の先頭から指定した「位置情報」の位置にある値を返す

ちなみに、考え方によっては、MATCH関数で取得した行番号に1を加えなくても、相対的な範囲を1つ下に移動することでも抽出することができます。

=INDEX(C5:C21,G3)

ただ、前者の以下の数式の方が直感的に分かりやすく感じます。(好みに合わせてください)

=INDEX(C4:C21,G3+1)

最後に、MATCH関数の数式とINDEX関数の数式を、以下のように組み合わせることで完成です。

=INDEX(C4:C21,MATCH(F3,C4:C21,0)+1)

4. まとめ

今後の保守を考えると、データを管理する表は1行1データに揃えた方がよいです。
しかし、一時的な表や見やすさを重視した表で、集計する必要のない表の場合は、今回のような複数行1データの表で管理しても問題になることは少ないです。

そのような表形式を保ったまま、特定の値を検索&抽出する際は、今回のように法則性を見つけることが大切になります。
※法則性がない場合は、数式での抽出は困難です。

ぜひ試してみてください。

2025/09/05
【Excel】棒グラフの1位を自動で色付け

【Excel】棒グラフの1位を自動で色付け

以下のように、棒グラフの一番大きい棒のみを自動で色付けする方法について紹介していきます。


1. 一番大きい棒のみを色付けする方法とは

残念ながら、標準の機能には「特定の棒のみを自動で色付けする機能」は用意されていません。
そのため、少し工夫が必要です。

そこで今回は、棒グラフを積み上げ棒グラフにし、片方の棒グラフの色を変更して対応していきます。
要するに、積み上げ棒グラフの片方の参照データを、最大値が「0」の表にし、もう片方はその逆で、最大値以外が「0」の表にします。
具体的には、以下のイメージです。

そのようにして、2つの表を積み上げることで、常に片方のグラフのみを表示することができます。


2. 参照元の表を用意

まずは、最大値が「0」の表と、最大値以外が「0」の表を用意します。
これらは数式で簡単に用意することができます。

具体的には、最大値はMAX関数で取得することができるので、IF関数で最大値かどうかで抽出値を変更するという以下のような数式になります。

▼最大値が「0」の表▼

=IF(MAX($C$3:$C$6)<>C3,C3,0)
// MAX($C$3:$C$6):最大値の取得(表の範囲は固定)
// <>C3:対象行の値と等しくない場合

▼最大値以外が「0」の表▼

=IF(MAX($C$3:$C$6)=C3,C3,0)
// MAX($C$3:$C$6):最大値の取得(表の範囲は固定)
// =C3:対象行の値と等しい場合

それぞれの数式を先頭に入力したら、後は末尾までコピーすることで、表の完成です。


3. グラフの用意

次に、グラフを用意します。
表の中を選択し、[挿入]タブから[積み上げ縦棒]を選択します。

必要に応じて、グラフのサイズなどを修正し、グラフのデータ範囲を先ほど作成した表のみに変更することで、グラフの完成です。


4. 補足

標準設定のままですと、作成した表を非表示にするとグラフのデータが消えてしまいます。

作成した表を非表示にしたい場合は、グラフを選択して、[グラフのデザイン]タブから[データの選択]を選択します。

表示された画面で[非表示および空白のセル]を選択して、次に表示された画面で[非表示の行と列のデータを表示する]にチェックし、確定します。

以上の設定を行うことで、作成した表を非表示にしたとしても、グラフのデータは表示されたままになります。

2025/09/02
【Excel】指定したセル数までしか値を入力できない仕組み

【Excel】指定したセル数までしか値を入力できない仕組み

以下の表では、セルB2に指定した人数を超えて、セルB5以降の範囲に氏名が入力できないようになっています。

今回は、上記のような指定したセル数までしか値を入力できないようにする仕組みの作り方について解説していきます。

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


1. データの入力規則に設定する条件式

特定の条件を満たしている状態でないと入力することができないセルを用意するには、「データの入力規則」を活用します。

今回は、以下のセルB2に入力されている人数分のセルだけ、セルB5以降の範囲に、値(氏名)の入力を許可するという設定になります。

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

=COUNTA($B$5:$B$1000)<=$B$2
// COUNTA(…):セルB5以降(仮で1000行目まで)の空でないセルの数を取得
// <=$B$2:COUNTAで取得した数がセルB2に入力されている数値以下である

上記の条件式を満たしているときだけ、セルB5以降への値の入力を許可するといった設定を行います。
セルB5以降だと範囲が広すぎるため、今回は、仮でセルB5からセルB1000までに設定します。


2. データの入力規則の設定

まずは、入力を制限するセルB5からセルB1000を選択します。
広範囲を選択するときは「名前ボックス」を活用するとよいです。
以下では、「名前ボックス」に「B5:B1000」と入力してEnterで確定することで、対象の範囲を選択しています。

次に、[データ]タブから[データの入力規則]を選択します。

データの入力規則の設定画面が表示されたら、[入力値の種類]を[ユーザー設定]にし、先ほどの条件式を入力します。

=COUNTA($B$5:$B$1000)<=$B$2

次に、[エラーメッセージ]タブを選択し、以下のように設定します。

ここでは、先ほど設定した条件を満たさなかったときに表示するメッセージを設定しています。
上記の設定で確定することで完成です。


3. 完成

以上の手順を行うことで、セルB2に指定した人数までしか、セルB5以降に値(氏名)を入力することができなくなります。

▼サンプルファイル▼

2025/08/29
【ExcelVBA】差し込みで複数のPDFファイルを自動生成

【ExcelVBA】差し込みで複数のPDFファイルを自動生成

以下の表は、セルC2に入力した値に応じてデータが抽出されるように作られています。

今回は、このセルC2の値を「A→B→C」のように好みの値に切り替えながら、このシートの印刷範囲の内容をPDFファイルにして自動で保存する仕組みを実現していきます。

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

ExcelVBAレベル確認

1. 開発手順

まず初めに、[開発]タブを選択し、[マクロ]を選択します。

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

次に表示される以下の画面の「Sub ○○」から「End Sub」の間にコードを記述します。

ExcelVBAレベル確認

2. コードの記述(PDFファイル出力)

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

Sub ExportToPDF()
    
    Dim fPath As String
    fPath = ThisWorkbook.Path
    
    Worksheets("PDF出力").ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=fPath & "\Sample.pdf"
    
End Sub

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

    Dim fPath As String
    fPath = ThisWorkbook.Path

「fPath」という変数(入れ物)を用意し、現在開いているExcelファイルの保存先のフォルダのパスを「fPath」に格納しています。
そのため、取得されるパスは環境により異なります。

こちらの環境の場合は、以下のパスが取得されます。

A:\PDF出力
    Worksheets("PDF出力").ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=fPath & "\Sample.pdf"

「PDF出力」というシートの印刷範囲をPDF形式(Type:=xlTypePDF)で保存しています。
保存先とファイル名は、パスで指定します。
こちらでは以下のように、Excelファイルと同じ配下に「Sample.pdf」という名前で保存しています。

Filename:=fPath & "\Sample.pdf"

以上のコードを実行することで、以下のようにPDFファイルを作成することができます。

ただこのままでは、セルC2の値を手動で変更する必要があります。
そこで、次のように修正します。


3. コードの記述(引数の設定)

以下のように修正します。

Sub ExportToPDF(fName As String)
    
    Dim fPath As String
    fPath = ThisWorkbook.Path
    
    Worksheets("PDF出力").ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=fPath & "\" & fName & ".pdf"
    
End Sub

では、修正点について解説していきます。

Sub ExportToPDF(fName As String)
    …
        Filename:=fPath & "\" & fName & ".pdf"

ファイル名を「Sample.pdf」から「引数に指定した好みの名前」で保存できるように修正しています。
後は、セルC2の値を変更して、セルのC2の値を「ExportToPDF」の引数に指定して実行するという処理を繰り返します。

そこで、次のようなプロシージャを用意します。


4. コードの記述(差し込み実行)

以下のプロシージャを用意します。

Sub ExportAll()
    
    Dim ws As Worksheet
    Set ws = Worksheets("PDF出力")
    
    Dim val As String
    
    val = "A"
    ws.Range("C2").Value = val
    Call ExportToPDF(val)
    
    val = "B"
    ws.Range("C2").Value = val
    Call ExportToPDF(val)
    
    val = "C"
    ws.Range("C2").Value = val
    Call ExportToPDF(val)
    
End Sub

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

    Dim ws As Worksheet
    Set ws = Worksheets("PDF出力")

「ws」という変数(入れ物)を用意し、「PDF出力」シートの情報を「ws」に割り当てています。

    Dim val As String
    
    val = "A"
    ws.Range("C2").Value = val
    Call ExportToPDF(val)

「val」という変数(入れ物)を用意し、「ws」シートのセルC2に入力したい1つ目の値(仮:A)を「val」に格納しています。
そして、「val」の値を「ws」シートのセルC2に格納した上で、最初に記述した「ExportToPDF」に「val」の値を渡して実行しています。

これで、1つ目のPDFファイルが作成されます。

    val = "B"
    ws.Range("C2").Value = val
    Call ExportToPDF(val)
    
    val = "C"
    ws.Range("C2").Value = val
    Call ExportToPDF(val)

こちらは、先ほどの処理と同様に、「B」という値、「C」という値でも実行しています。


5. 完成

以上の手順で完成です。
作成した「ExportAll」を実行するだけで、以下のように複数のPDFファイルが出力されます。

繰り返し似たような処理を実行する場合は、重複する処理の内容を1つのプロシージャ(ExportToPDF)にまとめておくことで、処理全体が見やすく保守しやすいコードになります。

▼サンプルファイル▼

2025/08/26
【Excel】XLOOKUP関数で指定した複数項目を抽出

【Excel】XLOOKUP関数で指定した複数項目を抽出

以下のように、「指定した表」から「指定した項目」のみを『XLOOKUP関数』を用いて抽出する方法について解説していきます。

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


抽出方法

まずは、抽出先のシートに、抽出対象の項目名を入力します。
以下のシートでは、項目名を簡単に変更できるようにドロップダウンリストにしています。

次に、先頭の項目名の下のセルに以下の数式を入力します。

=XLOOKUP(A1,顧客管理!$A$1:$I$1,顧客管理!$A$2:$I$21)
// A1:抽出対象の項目名のセル
// 顧客管理!$A$1:$I$1:抽出対象の表の見出しの範囲(絶対参照)
// 顧客管理!$A$2:$I$21:抽出対象の表のデータの範囲(絶対参照)

XLOOKUP関数では、縦方向の検索だけではなく、横方向の検索にも対応しています。
そのため、上記の数式を入力するだけで、該当する項目のデータを全て抽出することができます。

検索値のセルの参照のみを相対参照(「$」がない参照)にしているため、セルA2に入力した数式を横方向に必要な列数分コピーするだけで、複数項目でも瞬時に抽出することができます。

ExcelVBAレベル確認

まとめ

XLOOKUP関数では、指定した検索範囲に合わせて、縦方向だけではなく横方向にも検索することができます。
また、その検索方向に合わせて、抽出範囲(戻り範囲)から縦方向や横方向の複数の値を一括で抽出することができます。

▼サンプルファイル▼

2025/08/22
【ExcelVBA】複数のExcelファイルから必要なデータのみを自動抽出

【ExcelVBA】複数のExcelファイルから必要なデータのみを自動抽出

定期的に送られてくる複数のExcelファイルを、以下のようにまとめるのは、手作業だと大変です。

ということで、「指定したフォルダ内のExcelファイルから、必要なデータを自動で抽出してまとめる仕組み」の実現方法について解説していきます。

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


1. 開発準備

今回は、フォルダのパスをインプットボックスに入力してから実行するだけで、以下のシートに、該当する項目のデータを抽出する仕組みを、VBAを活用して実現します。

まずは、[開発]タブから[マクロ]を選択し、表示された画面の[マクロ名]に好みの名前(例:ImportSalesData)を入力して、[作成]を選択します。

以上の手順で、入力したマクロ名のプロシージャが表示されるため、そのプロシージャを活用します。
「Option Explicit」は、VBE(エディタ画面)の設定内容次第では表示されません。「Option Explicit」についての解説はこちらでは省略します。


2. コードの記述

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

Sub ImportSalesData()
    
    Dim fP As String, fN As String
    fP = InputBox("フォルダパス")
    fN = Dir(fP & "\*.xlsx")
    
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets(1)
    Dim r As Long, c As Long
    r = 3
    
    Do While fN <> ""
        With Workbooks.Open(fP & "\" & fN)
            For c = 2 To 5
                ws.Cells(r, c).Value = _
                    .Worksheets(1).Cells(c, "C").Value
            Next c
            .Close
        End With
        r = r + 1
        fN = Dir()
    Loop
    
End Sub

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

    Dim fP As String, fN As String
    fP = InputBox("フォルダパス")
    fN = Dir(fP & "\*.xlsx")

対象のフォルダのパスを格納する用の変数「fP」と、そのフォルダ内の1つのExcelファイルの名前を格納する用の変数「fN」を用意しています。

そして、「fP」には、インプットボックスに入力した値(対象のフォルダのパスを入力する想定)を格納し、「fN」には、その「fP」のフォルダの中に格納されている1つ目のファイル名を格納しています。
「fP & “\*.xlsx”」で、「フォルダパス\*.xlsx」というファイルのパスを作成し、Dirで該当するファイルの名前を取得しています。
※「*」は0文字以上の任意の文字という意味です。

    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets(1)
    Dim r As Long, c As Long
    r = 3

シート情報を格納する用の変数「ws」を用意し、抽出先のファイル(コードを記述している自分自身のファイル)の先頭のシート情報を格納しています。

次に、対象のシート(ws)に、抽出内容を入力するセルの位置を指定するための行番号と列番号を格納する用の変数「r:rowの略、c:columnの略」を用意しています。
行番号を格納する用の変数「r」には、予め「3」を格納しています。

    Do While fN <> ""
        '省略
        fN = Dir()
    Loop

指定したフォルダ内に該当するファイルが見つからない場合は、「fN」が空になります。
そのため、ここでは「fN」が空でない場合に、「Do」から「Loop」の中を実行するようにしています。

最後に「fN = Dir()」と記述することで、「fN」の中に次のファイル名が格納されます。
次のファイルが存在しない場合は、ファイル名を取得できないため、「fN」が空になります。

そして、再度、「Do」に戻り、「fN」が空になるまで繰り返して実行されます。

        With Workbooks.Open(fP & "\" & fN)
            For c = 2 To 5
                ws.Cells(r, c).Value = _
                    .Worksheets(1).Cells(c, "C").Value
            Next c
            .Close
        End With
        r = r + 1

繰り返しの中で行う処理です。
「Workbooks.Open(fP & “\” & fN)」で、指定したフォルダ(fP)内の対象のファイル名(fN)のファイルを開いています。
「With」で指定することによって、「With」から「End With」の中で「.」から記述したコードは、開いたファイルの情報に対しての処理になります。

「For」から「Next」の中を、変数「c」の値を2から5まで順番に変化させて繰り返し実行しています。
「2から5」というのは、抽出先の表のB列からE列までの列番号になります。

「For」の中で、抽出先のシートの「r」行目「c」列目のセルに、開いたブックの先頭のシートの「c」行目C列にある値を入力しています。

抽出先のシートの2列目には、抽出元のシートの2行目、
抽出先のシートの3列目には、抽出元のシートの3行目、
という感じに行番号と列番号が、行と列が逆の関係にあるため、上記のような処理になります。

1つのファイルの内容の入力ができたら、次のファイルに移る前に「r = r + 1」で行番号に1を加えています。


3. 完成

以上の内容で実現できます。
実行する際は、[開発]タブの[マクロ]を選択し、表示された画面から開発したマクロ名を選択して[実行]を選択します。

次に、表示されたインプットボックスに、抽出元のファイルが格納されたフォルダのパスを入力して確定します。

これでだけで、以下のように、指定したフォルダ内のすべてのExcelファイルの内容を抽出することができます。

▼サンプルファイル▼

2025/08/19
【Excel】不要なセルを自動でグレーにする方法

【Excel】不要なセルを自動でグレーにする方法

以下の表は、各クラスの人数分の氏名を登録する用の表です。

この表をもとに、指定した人数以外のセルを自動でグレーにする方法について解説していきます。

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


1. 設定手順

まずは、氏名を入力する範囲(色付けする可能性のある範囲)を選択します。

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

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

=ROW(C4)-3>C$3
// C4:選択基準のセル
// ROW(C4)-3:基準のセルが氏名を入力する何人目のセルなのか取得
// >C$3:取得した数値が該当列の人数より大きい場合(行番号は固定)

最後に、[書式]を選択し、[書式設定]の画面から[塗りつぶし]にてグレーを選択します。

以上の設定で確定します。

ExcelVBAレベル確認

2. 完成

これで不要なセルを自動でグレーにすることができます。
常に、人数のセルを参照しているため、人数の変更にも対応しています。

▼サンプルファイル▼

ExcelVBAレベル確認

3. まとめ

条件付き書式を活用して、入力が不要なセルの色を変えることで、誤った入力を防ぐことができます。
直接色付けするのとは異なり、条件付き書式を活用することで、人数の変更にも対応でき、繰り返し使える資料になります。

2025/08/15
【Excel】XLOOKUP関数を使って複数条件で検索

【Excel】XLOOKUP関数を使って複数条件で検索

以下の表を例に、XLOOKUP関数を使って複数条件で検索する方法について紹介していきます。

セルF3に「日付」、G3に「商品」を入力し、左側の表から該当するデータの「売上」を、セルH3に抽出する数式を作っていきます。

ExcelVBAレベル確認

複数条件で検索する

XLOOKUP関数では、複数の項目を繋げた値に対して検索することができます。
そのため、今回の表では、「日付」と「商品」を繋げて1つの値として検索させます。

具体的には、以下のような数式になります。

=XLOOKUP(F3&G3,B3:B18&C3:C18,D3:D18,"")
// F3&G3:検索値は、検索したい「日付」と「商品」を&で繋げた文字列
// B3:B18&C3:C18:検索範囲は、対象の表の「日付」と「商品」を&で繋げた文字列(18は表の最後の行番号)
// D3:D18:抽出範囲は、「売上」の項目(18は表の最後の行番号)
// "":見つからない場合は、何も表示しない

これだけで、複数項目での検索ができ、必要な値を抽出できます。


正しく検索できない場合と対策

複数の項目を繋げた際に、重複した文字列ができる場合があります。
例えば、以下の表の「グループ」と「商品」を繋げた場合です。

この表ですと、以下の2つのデータが重複してしまいます。
・グループ「A」、商品「BA」→「ABA」
・グループ「AB」、商品「A」→「ABA」

そのため、以下の数式では、正しく検索できない場合があります。

=XLOOKUP(F3&G3,B3:B18&C3:C18,D3:D18,"")

上記の例のように、複数の項目を繋げた際に重複した文字列ができる場合は、対策する必要があります。

その対策とは、項目と項目の間に区切り文字を入れるという方法です。
以下では、「-」を加えて対策しています。

=XLOOKUP(F3&"-"&G3,B3:B18&"-"&C3:C18,D3:D18,"")

区切り文字を加えることで、「AB-A」と「A-BA」という感じに重複していた文字列が異なる文字列となり、正しく検索し、正しい値を抽出することができるようになります。

2025/08/12
【Excel】自動入力が邪魔?一瞬で無効にする方法

【Excel】自動入力が邪魔?一瞬で無効にする方法

以下のような表にデータを登録するときに、勝手に、過去に入力した値が表示されて困っている方いませんか?

今回は、この自動入力を無効にする方法について紹介していきます。


自動入力を無効にする

まずは、[ファイル]タブから[オプション]を選択し、「Excelのオプション」を表示します。

オプション画面から[詳細設定]を開き、[オートコンプリートを使用する]のチェックを外します。

以上の手順で無効にできます。


まとめ

自動入力は便利な場面もありますが、毎回異なるデータを登録する表などでは、邪魔になることが多いです。
そのため、邪魔に感じることが多い方は、ぜひ試してみてください。

2025/08/08
【Excel】条件付き書式で文字数チェック機能を実現

【Excel】条件付き書式で文字数チェック機能を実現

文字数制限のあるSNSの投稿文などを作成する際に便利な、文字数をチェックする機能の作り方について解説していきます。

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

ExcelVBAレベル確認

仕様

今回は、以下の仕様で作っていきます。

1. 入力した文字数に応じて残りの文字数を表示
2. データバーで視覚的に残りの文字数を表示
3. 制限を超えた場合は赤色で表示
4. 「残り○文字」という形式で表示

使用するシートは以下になります。

セルB3に文字を直接入力し、セルB2に残りの文字数を表示する想定です。

では、順番に作っていきます。


1. 入力した文字数に応じて残りの文字数を表示

今回は、50文字を制限とした文字数チェック機能を作っていきます。
まずは、残りの文字数をセルB2に表示させるため、以下のような数式を入力します。

=50-LEN(B3)
// LEN(B3):セルB3に入力されている文字数を取得

文字数の制限を変更する場合は、数式内の「50」を変更してください。

ExcelVBAレベル確認

2. データバーで視覚的に残りの文字数を表示

では次に、残りの文字数を視覚的にデータバーとして表示していきます。
データバーの設定は「条件付き書式」で行います。

先ほど数式を入力したセルを選択し、[ホーム]タブから[条件付き書式]の[新しいルール]を選択します。

表示された画面で、ルールの種類を[セルの値に基づいてすべてのセルを書式設定]にし、以下の設定を行います。

・書式スタイル:データバー
・最小値:数値「0」
・最大値:数値「50」(制限する文字数)
※色などは必要に応じて変更してください。

上記の設定で確定することで、以下のようにデータバーを表示することができます。


3. 制限を超えた場合は赤色で表示

現状の設定のままですと、文字数の制限を超えた場合は、マイナスの値が表示されるだけになります。

そのため、マイナスの値の場合(文字数の制限を超えた場合)は、セルの背景色を赤色にして目立たせていきます。

先ほど数式を入力したセルを選択し、[ホーム]タブから[条件付き書式]の[新しいルール]を選択します。

表示された画面で、ルールの種類を[指定の値を含むセルだけを書式設定]にし、以下の設定を行います。

・[セルの値]、[次の値より小さい]、「0」

次に、[書式]を選択し、以下の設定を行います。

・[塗りつぶし]タブ → 赤
・[フォント]タブ → 色 → 白

上記の設定で確定することで、以下のように文字数の制限を超えているときに、赤色にすることができます。


4. 「残り○文字」という形式で表示

最後に、数値を「残り○文字」という形式にしていきます。
数値を変えずに見た目のみを変更するには「表示形式」を活用します。

先ほど数式を入力したセルの上で右クリックし、[セルの書式設定]を選択します。

表示された画面の[表示形式]タブを選択し、[ユーザー定義]にて以下の内容を入力します。

"残り"0"文字";"残り"-0"文字"

表示形式については、以下の記事にて詳しく解説しています。
>【1-入門04】セルの表示形式の基礎から応用

上記の設定で確定し、必要に応じて、太字や中央揃えといった設定を行います。


完成

以上の手順で完成です。
セルB3に入力された文字数に応じて、セルB2の表示が切り替わります。

▼サンプルファイル▼