キースは、列AからHを使用するワークシートを持っています。彼は、各列を比例した量だけ広げることができるようにしたいと考えています。たとえば、8つの列すべてを選択した場合、H列の右端をつかんで右にドラッグすると、すべての列が比例して配置されます。彼は、このタイプの列の拡大を行う方法があるかどうか疑問に思います。

キースが何について話しているのかをよりよく理解するために、おそらく例が必要です。マウスを使用して列幅を調整する通常の方法は、列を選択してから、列ヘッダー間の仕切りを右または左にドラッグすることです。列Aの幅が5、列Bが10、列Cが15であるとします。A:Cを選択し、列Cヘッダーの右側にある仕切りを20にドラッグすると、33%増加します。列C。理想的には、列Aと列Bの両方も33%サイズ変更されますが(キースが望むように)、代わりに、列Cと一致するように両方とも幅20に設定されます。

さらに、修飾キー(Ctrl、Alt、またはShift)を押しながらマウスをドラッグしても、効果はありません。列幅はすべて互いに等しく設定されています。右クリックしてドラッグしようとしても、コンテキストメニューを表示する以外は何もしません。したがって、私たちが実行できたすべてのテストから、私たちが発見できたExcelの列幅を比例的に調整する方法はありません。

おそらく最も簡単な方法は、マクロを使用して列幅を調整することです。

以下はそのようなアプローチの良い例です。

Sub ProportionalWidth()

Dim C As Range     Dim sRaw As String     Dim sTemp As String     Dim P As Single

sRaw = InputBox("Increase width by how what % (0 to 100)?")

P = Val(sRaw)

If P >= 0 And P <= 100 Then         P = 1 + (P / 100)

sTemp = ""

For Each C In Selection.Columns             sTemp = sTemp & "Column " & ColumnLetter(C.Column)

sTemp = sTemp & ": " & C.ColumnWidth & " ==> "

C.ColumnWidth = C.ColumnWidth * P             sTemp = sTemp & C.ColumnWidth & vbCrLf         Next C         MsgBox sTemp     Else         MsgBox "Out of range; no adjustment made"

End If End Sub
Function ColumnLetter(Col As Long) As String     Dim Arr     Arr = Split(Cells(1, Col).Address(True, False), "$")

ColumnLetter = Arr(0)

End Function

この例には、実際には2つのマクロがあります。最初の(ProportionalWidth)は、選択した列の幅を変更します。 2番目の(ColumnLetter)は、数値の列番号を列文字に変換するために使用されます。これは、列の幅の前後のレポート(sTemp)をまとめる場合にのみ使用されます。

列を選択してマクロを実行すると、それらの列をどれだけ広くするかを尋ねられます。 0〜100の数値を入力し、[OK]をクリックすると、列がそのパーセンテージで拡大されます。さらに、各列の元の幅と調整された幅を示すメッセージボックスが表示されます。

このマクロは列を広げるだけであることに注意してください。これを使用して列を比例的に狭くしたい場合は、おそらく負の値を処理するように変更する必要があります。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(13429)は、Microsoft Excel 2007、2010、2013、および2016に適用されます。