大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、結合セルの行の高さを自動調整するには、作業セルに値を転記して、作業セルで行の高さを自動調整することでできます。出力用のシートでは、セル結合する必要がある場合がありますので、結合セルの行の高さを自動調整する方法について、マスターしていきましょう。

はじめに

この記事では、セル結合した行の高さを自動調整する方法について、ご紹介します。

結合したセルでは、行の高さを自動調整することができません。

なので、作業セルに値を転記して、作業セルで行の高さを自動調整することで、結合セルの行の高さを自動調整することができます。

出力用のシートでは、セル結合する必要がある場合がありますので、結合セルの行の高さを自動調整する方法について、マスターしていきましょう。

では、セル結合した行の高さを自動調整する方法について、解説していきます。

この記事を読むメリット

  • 結合セルの行の高さを自動調整できるようになります。

本記事の内容を動画でまとめています

目次から見たい項目へ移動すると便利ですよ。

目次

列方向に結合されたセルの行の高さを自動調整したい

やりたい内容は、列方向に結合されたセルの行の高さを、自動調整したいということになります。

結合セルは行の高さを自動調整できない

セルを結合すると、行の高さを自動調整することができなくなってしまいます。

ちょっとやってみます。

列方向にセル結合しています。

列方向に結合したセル

列方向にセル結合しています

結合セルでは、行の高さを自動調整できないです。

セル結合すると行の高さを自動調整できない

結合セルでは、行の高さを自動調整できないです

こんな感じで、結合セルでは、行の高さを自動調整できないです。

なので、発想を変えて、作業セルに値を転記して、作業セルで行の高さを自動調整することで、結合セルの行の高さを自動調整します。

作業セルを使って行の高さを自動調整する

作業セルを使って、行の高さを自動調整する手順についてみてみます。

まずは、値を作業セルに転記します。

作業セルに値を転記

値を作業セルに入力します。

値を作業セルに転記します

値に変換します。

値に変換します

値に変換して、値を転記することができます。

次は、作業セルと結合セルの「列幅」を同じにします。

作業セルと結合セルの列幅を同じにする

A列の列幅を取得します。

A列の列幅を取得します

B列の列幅を取得します。

B列の列幅を取得します

C列の列幅を取得します。

C列の列幅を取得します

3列の列幅の合計値を計算します。

同じ列幅なので、3倍にして3列分の列幅を算出します。

3列の列幅の合計値を計算します

作業セルの列幅を、結合セルの列幅と同じ幅に設定します。

作業セルの列幅を、結合セルの列幅と同じ幅に設定します

作業セルと結合セルの列幅と同じ幅に設定できました。

次は、折り返して全体を表示して、作業セルの行の高さを自動調整します。

折り返して全体を表示

作業セルを折り返して全体を表示します。

作業セルを折り返して全体を表示します

行の高さを自動調整します。

行の高さを自動調整します

次は、自動調整した行の高さを、そのまま行の高さに設定します。

行の高さを設定

設定されている行の高さを、そのまま設定します

最後に、作業セルをクリアします。

作業セルをクリア

作業セルをクリアします

これで、結合セルの行の高さを自動調整できます。

結合セルの行の高さを自動調整できた

結合セルの行の高さを自動調整できました

結合セルの行の高さを自動調整できました。

こんな感じで、作業セルを使って、行の高さを自動調整することで、結合セルの行の高さを自動調整することができます。

VBAで、行の高さを自動調整する

VBAを使って、行の高さを自動調整してみます。

結合セルの行の高さを自動調整したい

結合セルの行の高さを自動調整したいです

手順としては、次のようになります。

  • 作業セルに値を転記
  • 作業セルの列幅と結合セルの列幅を同じする
  • 作業セルを折り返して行の高さを自動調整
  • 設定されている行の高さに設定する
  • 作業セルをクリア

VBAコードは、次のようになります。

Sub TEST1()
  
  Dim A
  '作業列に値を転記
  Range("E1") = Range("A1").Value
  '結合セルの列幅を取得
  A = Range("A1").ColumnWidth + Range("B1").ColumnWidth + Range("C1").ColumnWidth
  Range("E1").ColumnWidth = A '作業列の列幅を設定
  Range("E1").WrapText = True '作業列を折り返して表示
  Range("E1").EntireRow.AutoFit '行の高さを自動調整
  '行の高さを設定
  Range("A1").RowHeight = Range("A1").RowHeight
  Range("E1").Clear '作業列をクリア
  
End Sub

では、VBAコードを実行してみます。

作業セルに値を転記します。

作業セルに値を転記

作業セルに値を転記します

作業セルの列幅と、結合セルの列幅を同じにします。

列幅を同じにする

作業セルの列幅と、結合セルの列幅を同じにします

作業セルを折り返して全体を表示して、行の高さを自動調整します。

折り返して全体を表示

作業セルを折り返して全体を表示します。

作業セルを折り返して全体を表示します

行の高さを自動調整します。

行の高さを自動調整します

設定されている行の高さをそのまま設定します。

行の高さを設定

設定されている行の高さをそのまま設定します

最後に、作業セルをクリアします。

作業セルをクリア

作業セルをクリアします

これで、結合セルの行の高さを自動調整できます。

結合セルの行の高さを自動調整できた

結合セルの行の高さを自動調整できました

結合セルの行の高さを自動調整できました。

複数の結合セルで、行の高さを自動調整

次は、複数の結合セルで、行の高さを自動調整してみます。

複数の結合セルで、行の高さを自動調整したい

複数行の結合セルで、行の高さを自動調整したいです

VBAコードの手順は、先ほどと同じで次のようになります。

  • 作業セルに値を転記
  • 作業セルと結合セルの列幅を同じに設定
  • 作業セルを折り返して全体を表示して、行の高さを自動調整
  • 行の高さをそのまま設定
  • 作業セルをクリア

VBAコードは、次のようになります。

Sub TEST2()
  
  Dim A
  '作業列に値を転記
  Range("E1").Resize(3) = Range("A1").Resize(3).Value
  '結合セルの列幅を取得
  A = Range("A1").ColumnWidth + Range("B1").ColumnWidth + Range("C1").ColumnWidth
  Range("E1").ColumnWidth = A '作業列の列幅を設定
  Range("E1").Resize(3).WrapText = True '作業列を折り返して表示
  Range("E1").Resize(3).EntireRow.AutoFit '行の高さを自動調整
  '行の高さを設定
  For i = 0 To 2
    Range("A1").Offset(i, 0).RowHeight = Range("A1").Offset(i, 0).RowHeight
  Next
  Range("E1").Resize(3).Clear '作業列をクリア
  
End Sub

では、VBAコードを実行してみます。

作業セルに値を転記します。

作業セルに値を転記

作業セルに値を転記します

作業セルの列幅と、結合セルの列幅を同じに設定します。

作業セルと結合セルの列幅を同じにする

作業セルの列幅と、結合セルの列幅を同じに設定します

作業セルを折り返して全体を表示して、行の高さを自動調整します。

作業セルを折り返して全体を表示

作業セルを折り返して全体を表示します。

作業セルを折り返して全体を表示します

行の高さを自動調整します。

行の高さを自動調整します

設定されている行の高さをそのまま設定します。

行の高さを設定

設定されている行の高さをそのまま設定します

最後に、作業セルをクリアします。

作業セルをクリア

作業セルをクリアします

これで、複数の結合セルの行の高さを自動調整できます。

複数の結合セルの行の高さを自動調整できた

複数の結合セルの行の高さを自動調整できました

複数の結合セルの行の高さを、自動調整できました。

行方向に結合されたセルの行の高さを自動調整したい

「行方向」に結合されたセルの、行の高さを自動調整してみます。

結合セルは行の高さを自動調整できない

接合したセルでは、行の高さを自動調整できないです。

行方向にセル結合しています。

行方向にセル結合

行方向にセル結合しています

セル結合すると、行の高さを自動調整できないです。

セル結合すると行の高さを自動調整できない

セル結合すると、行の高さを自動調整できないです

標準の高さになるだけで、行の高さを自動調整してくれないです。

作業セルを使って、行の高さを自動調整する

作業セルを使って、行の高さを自動調整してみます。

複数行でセルを結合しているので、それぞれの行を同じ高さにして、行の高さを自動調整します。

まずは、Excel機能のみで、手順を確認してみます。

作業セルに転記

作業セルに値を転記します。

作業セルに値を転記します

値に変換します。

値に変換します

作業セルに値を転記できました。

作業セルと結合セルの列幅を同じに設定します。

作業セルと結合セルの列幅を同じにする

列幅を取得します。

列幅を取得します

作業セルの列幅と、結合セルの列幅を同じに設定します。

作業セルの列幅と、結合セルの列幅を同じに設定します

作業セルの列幅と、結合セルの列幅を同じに設定しました。

次は、作業セルを折り返して全体を表示して、行の高さを自動調整します。

作業セルを折り返して全体を表示

作業セルを折り返して全体を表示します。

作業セルを折り返して全体を表示します

行の高さを自動調整します。

行の高さを自動調整します

作業セルの行の高さを自動調整できました。

作業のセルの行の高さを元に、1行分の行の高さを算出して、それぞれの行の高さを設定していきます。

行の高さを設定

行の高さを取得します。

行の高さを取得します

1行分の高さを算出します。

1行分の高さを算出します

3行分の行の高さを設定します。

行の高さを設定します

行の高さを設定しました。

これで、3行分の行の高さを同じにして、行の高さを自動調整できました。

最後に、作業セルをクリアします。

作業セルをクリア

作業セルをクリアします

これで、行方向に結合されたセルで、行の高さを自動調整できます。

行の高さを自動調整できた

行方向に結合されたセルで、行の高さを自動調整できました

行方向に結合されたセルで、行の高さを自動調整できました。

VBAで、行の高さを自動調整する

VBAを使って、行の高さを自動調整してみます。

行方向に結合された行の高さを自動調整します。

行方向にセル結合された行の高さを自動調整したい

行方向に結合された行の高さを自動調整したいです

行方向に結合された行の高さを自動調整する手順は、次のようになります。

  • 作業セルに値を転記
  • 作業セルと結合セルの列幅を同じに設定
  • 作業セルを折り返して全体を表示
  • 行の高さをそのまま設定
  • 作業セルをクリア

という感じになります。

VBAコードは、次のようになります。

Sub TEST3()
  
  '作業セルに値を転記
  Range("C1") = Range("A1").Value
  '列幅を設定
  Range("C1").ColumnWidth = Range("A1").ColumnWidth
  Range("C1").WrapText = True '折り返して表示
  Range("C1").EntireRow.AutoFit '行の高さを自動調整
  Dim A
  A = Range("A1").EntireRow.RowHeight / 3 '1行分の高さを算出
  Range("A1:A3").EntireRow.RowHeight = A '行の高さを設定
  Range("C1").Clear '作業セルをクリア
    
End Sub

では、VBAコードを実行してみます。

作業セルに値を転記します。

作業セルに値を転記

作業セルに値を転記します

作業セルの列幅と、結合セルの列幅を同じに設定します。

作業セルと結合セルの列幅を同じに設定

作業セルの列幅と、結合セルの列幅を同じに設定します

作業セルを折り返して全体を表示して、行の高さを自動調整します。

作業セルを折り返して全体を表示

作業セルを折り返して全体を表示します。

作業セルを折り返して全体を表示します

行の高さを自動調整します。

行の高さを自動調整します

3行分の行の高さを設定していきます。

行の高さを設定

1行分のセルの高さを算出します。

1行分のセルの高さを算出します

3行分の行の高さを設定します。

行の高さを設定します

最後に、作業セルをクリアします。

作業セルをクリア

作業セルをクリアします

これで、結合セルの行の高さを自動調整できます。

行の高さを自動調整できた

結合セルの行の高さを自動調整できました

結合セルの行の高さを自動調整できました。

複数の結合セルで、行の高さを自動調整

複数の結合セルで、行の高さを自動調整してみます。

複数の結合セルで、行の高さを自動調整したい

複数行の結合セルで、行の高さを自動調整したいです

複数の結合セルで、行の高さを自動調整する手順は次のようになります。

  • 作業セルに値を転記
  • 作業セルと結合セルの列幅を同じに設定
  • 作業セルを折り返して全体を表示
  • 複数の結合セルの行の高さを設定する
  • 作業セルをクリア

という感じです。

複数の結合セルで、行の高さを自動調整するVBAコードは、次のようになります。

Sub TEST4()
  
  '作業セルに値を転記
  Range("C1").Resize(9) = Range("A1").Resize(9).Value
  '列幅を設定
  Range("C1").ColumnWidth = Range("A1").ColumnWidth
  Range("C1").Resize(9).WrapText = True '折り返して表示
  Range("C1").Resize(9).EntireRow.AutoFit '行の高さを自動調整
  Dim A
  For i = 0 To 2
    A = Range("A1").EntireRow.Offset(3 * i, 0).RowHeight / 3 '1行分の高さを算出
    Range("A1:A3").EntireRow.Offset(3 * i, 0).RowHeight = A '行の高さを設定
  Next
  Range("C1").Resize(9).Clear '作業セルをクリア
    
End Sub

では、実行してみます。

作業セルに値を転記します。

作業セルに値を転記

作業セルに値を転記します

作業セルの列幅と、結合セルの列幅を同じに設定します。

作業セルと結合セルの列幅を同じに設定

作業セルの列幅と、結合セルの列幅を同じに設定します

作業セルを折り返して全体を表示して、行の高さを自動調整します。

作業セルを折り返して全体を表示

作業セルを折り返して全体を表示します。

作業セルを折り返して全体を表示します

行の高さを自動調整します。

行の高さを自動調整します

3つの結合セルの行の高さを設定していきます。

行の高さを設定

1つ目のデータで、行の高さを設定します。

1つ目のデータで、行の高さを設定します

2つ目のデータで、行の高さを設定します。

2つ目のデータで、行の高さを設定します

3つ目のデータで、行の高さを設定します。

3つ目のデータで、行の高さを設定します

3つの結合セルの行の高さを設定できました。

最後に作業セルをクリアします。

作業セルをクリア

作業セルをクリアします

これで、複数行の結合セルで、行の高さを自動調整できます。

行の高さを自動調整できた

複数行の結合セルで、行の高さを自動調整できました

複数行の結合セルで、行の高さを自動調整できました。

行数が異なる場合で、行の高さを自動調整

行数が異なる場合で、行の高さを自動調整してみます。

行数が異なる結合セルで、行の高さを自動調整したい

行数が異なる結合セルで、行の高さを自動調整したいです

行数が異なる結合セルで、行の高さを自動調整する手順は、次のようになります。

  • 作業セルに値を転記
  • 作業セルと結合セルの列幅を同じに設定
  • 作業セルを折り返して全体を表示
  • 作業セルをループしていく
  • 結合セルの行数を使って行の高さを算出
  • 行の高さを設定
  • 作業セルをクリア

という感じです。

行数が異なる結合セルで、行の高さを自動調整するVBAコードです。

Sub TEST5()
  
  '作業セルに値を転記
  Range("C1").Resize(6) = Range("A1").Resize(6).Value
  '列幅を設定
  Range("C1").ColumnWidth = Range("A1").ColumnWidth
  Range("C1").Resize(6).WrapText = True '折り返して表示
  Range("C1").Resize(6).EntireRow.AutoFit '行の高さを自動調整
  Dim A, B
  For i = 1 To 6
    '値が入力されている場合
    If Cells(i, "C") <> "" Then
      A = Cells(i, "A").MergeArea.Rows.Count '結合セルの行数を取得
      B = Cells(i, "C").EntireRow.RowHeight / A '1行分の高さを算出
      Cells(i, "A").MergeArea.EntireRow.RowHeight = B '行の高さを設定
    End If
  Next
  Range("C1").Resize(6).Clear '作業セルをクリア
    
End Sub

では、実行してみます。

作業セルに値を転記します。

作業セルに値を転記

作業セルに値を転記します

作業セルの列幅と、結合セルの列幅を同じに設定します。

作業セルと結合セルの列幅を同じに設定

作業セルの列幅と、結合セルの列幅を同じに設定します

作業セルを折り返して全体を表示します。

作業セルを折り返して全体を表示

作業セルを折り返して全体を表示します。

作業セルを折り返して全体を表示します

行の高さを自動調整します。

行の高さを自動調整します

結合セルの行数を使って、行の高さを算出して、行の高さを設定していきます。

行の高さを設定

1つ目のデータの行の高さを設定します。

1つ目のデータの行の高さを設定します

2つ目のデータの行の高さを設定します。

2つ目のデータの行の高さを設定します

3つ目のデータの行の高さを設定します。

3つ目のデータの行の高さを設定します

3つのデータの行の高さを設定できました。

最後に、作業セルをクリアします。

作業セルをクリア

作業セルをクリアします

これで、行数が異なる結合セルの行の高さを自動調整できます。

行の高さを自動調整できた

行数が異なる結合セルの行の高さを自動調整できました

行数が異なる結合セルの、行の高さを自動調整できました。

おわりに

この記事では、セル結合した行の高さを自動調整する方法について、ご紹介しました。

結合したセルでは、行の高さを自動調整することができません。

なので、作業セルに値を転記して、作業セルで行の高さを自動調整することで、結合セルの行の高さを自動調整することができます。

出力用のシートでは、セル結合する必要がある場合がありますので、結合セルの行の高さを自動調整する方法について、マスターしていきましょう。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す