• 締切済み

エクセルの長文が入った結合セルを自動調整する方法

金額等を書いた見積書作成でエクセルを利用しています。 症状などの症状を記入している結合されたセルの部分があるのですが、かなりの長文が入っている場合に、一番左の行の自動調節目的で行と行の間の線をダブルクリックしても、その長文の頭の1行部分しか表示できません。 その下の長文部分もきれいに表示してくれるような機能はエクセルにありますでしょうか? どうぞ、ご教示の程よろしくお願いします。

みんなの回答

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.9

VBAで作業シートを使うコードを書いてみました。 よかったら試してみてください。 操作は、フィットする高さにしたいセルを選択し、 後記マクロを実行します。 なお、 「作業シート」というシートを予め追加しておいてください。 また、このシートが目障りであれば、非表示にしてください。 Option Explicit Sub HeightChange() Const WorkSh = "作業シート" Dim ws As Worksheet '作業シート Dim SetWidth As Long '対象結合セル幅 Dim SetHeight As Long '対称性行高 Dim c As Long '列カウンター Set ws = ThisWorkbook.Sheets(WorkSh) '選択セル(結合セル)の列幅を取得 SetWidth = 0 For c = 1 To Selection.Columns.Count SetWidth = SetWidth + ActiveCell.Columns(c).ColumnWidth Next c '作業シートに複写 ActiveCell.Range(Cells(1, 1), Cells(1, c)).Copy ws.Range("A1") '行高を取得し、対象セルにセット With ws.Range("A1") .MergeCells = False .WrapText = True End With ws.Columns(1).ColumnWidth = SetWidth ws.Rows(1).EntireRow.AutoFit SetHeight = ws.Rows(1).RowHeight ActiveCell.RowHeight = SetHeight ws.Columns(1).Delete '後処理 End Sub

すると、全ての回答が全文表示されます。
回答No.8

すみませんVBA間違っていました。 行ごとの計算ができていませんでした。 修正します。 Sub AdjustRowHeightForMergedCells() Dim inputRange As Range Dim cell As Range Dim totalChars As Long Dim rowNum As Integer Dim factor As Double Dim i As Integer Dim cellValue As String ' セルの値を格納する変数 ' 結合されたセルの範囲を選択してもらう On Error Resume Next Set inputRange = Application.InputBox("結合されたセルの範囲を選択してください:", Type:=8) On Error GoTo 0 ' 選択されたセルが空でないことを確認 If inputRange Is Nothing Then MsgBox "セルが選択されていません。", vbExclamation Exit Sub End If ' 文字数を入力してもらう totalChars = InputBox("結合されたセルの範囲に含まれる文字数を入力してください:") ' キャンセルが押された場合の処理 If totalChars = 0 Then MsgBox "文字数の入力がキャンセルされました。", vbExclamation Exit Sub End If ' 行の高さを調整するファクターを入力してもらう factor = InputBox("行の高さを調整するファクターを入力してください:") ' 各結合されたセルごとに処理を行う For Each cell In inputRange.Rows ' 各行の最初のセルであることを確認 Set cell = cell.Cells(1) ' 結合されたセルであることを確認 If cell.MergeCells Then ' セル内の値を取得 cellValue = cell.Value ' セル内に文字が含まれているかを確認 If Len(cellValue) > 0 Then ' 行数を計算 rowNum = Application.WorksheetFunction.RoundUp(Len(cellValue) / totalChars, 0) ' 行の高さを調整 cell.Rows.RowHeight = rowNum * factor Else ' 結合されたセル内に文字が含まれていない場合はスキップ ' MsgBox "結合されたセル内に文字が含まれていません。", vbExclamation ' Exit Sub ' 空のセルが見つかった場合、処理を終了する End If End If Next cell MsgBox "結合されたセルの行の高さを調整しました。", vbInformation End Sub

すると、全ての回答が全文表示されます。
回答No.7

詳しいことがわからないので、なんともなのですが、VBAを作ってみました。 「開発」から”Visual Basic"と、進んで ”Microsoft Visual Basic for Applications” の、窓が開いたら 「挿入」 「標準モジュール」と進んで、下記を、コピペしてください。 Sub AdjustMergedCellRowHeightInRange() Dim inputRange As Range Dim cell As Range Dim charCount As Integer Dim rowNum As Integer Dim newHeight As Double Dim charPerLine As Integer Dim rowHeightFactor As Double Dim i As Integer ' ユーザーに範囲を入力してもらう On Error Resume Next Set inputRange = Application.InputBox("変更する範囲を選択してください:", Type:=8) On Error GoTo 0 ' 選択されたセルが空でないことを確認 If inputRange Is Nothing Then MsgBox "セルが選択されていません。", vbExclamation Exit Sub End If ' ユーザーに文字数の指定を求める charPerLine = InputBox("1行あたりの文字数を入力してください:") ' ユーザーに行の高さのファクターを入力してもらう rowHeightFactor = InputBox("行の高さに乗じるファクターを入力してください:") ' 各行ごとに処理を行う For i = 1 To inputRange.Rows.Count ' 各行の範囲を取得 Set cell = inputRange.Rows(i) ' 結合されたセルであることを確認 If cell.MergeCells Then ' 文字数に基づいて行数を計算 charCount = cell.Cells(1).Characters.Count rowNum = Application.WorksheetFunction.RoundUp(charCount / charPerLine, 0) ' 行の高さを調整 newHeight = (rowNum * rowHeightFactor) ' ファクターによって行の高さを調整 cell.Rows(1).RowHeight = newHeight End If Next i End Sub 結合したセルは、「セルの書式設定」で、「配置」タブ 横位置:左詰め 縦位置:中央揃え ”折り返して全体を表示する”に、チェックを入れておいてください。 窓の ”マクロの実行”アイコンをクリックしても 「開発」の 「マクロ」をクリックしても構いません。 「マクロ」をクリックした場合 ”AdustMergedCellRowHeightInRange”が、青色反転していると思いますので、「実行」ボタンをクリックしてください。 変更する範囲を指定します。 例:C3:I5 いち行あたりの文字数を入力します。(これは行数を計算するためにいれるので、大きい数字だと行数が少なく、小さい数字だと行数が大きくなります、つまり高さが高くなります。色々いテレ見て試してください。 例:60 ”行に乗じるファクター”を、入力します。これは、フォントによって高さが変わるので、使っているフォントによって変化させます。大きくすると高さが高くなります。 例:40 文字数と、ファクターを、調節して高さを調整してみてください。

すると、全ての回答が全文表示されます。
回答No.6

内容がわからないのですが、 印刷用のシートを作って データを、INDEX関数で呼び出せばいいのではないでしょうか? 例えば、通し番号がついているとして その番号を、印刷用のシートに入力すれば その行のデータを、印刷用のページに貼り付けることができると思います。 簡単なマクロで、番号を付加して何十ページでも印刷することはできます。数枚なら、手動で、番号入力、印刷を繰り返せばいいと思います。

すると、全ての回答が全文表示されます。
回答No.5

ご質問ありがとうございます! Shift+Enterで改行でいけると思います!

すると、全ての回答が全文表示されます。
回答No.4

数式バーの 右側のアローボタン(数式バーの展開(Ctrl+Shift+U)) を、クリックすると、数式バーが立てに広がりますので、全文を表示したいセルをクリックすると、全文が表示されますが、それでは駄目なのでしょうか? 添付画像は、すでに展開しているので、数式バーの折りたたみ(Ctrl+Shift+U)と、表示されています。

techhouse
質問者

補足

回答頂きありがとうございます。 ファイルのみで送信であれば、それで十分なのかもなのですが、プリントアウトして提出の書類で、ほぼ毎日数件作成しなければならない資料のため、自動で済むとありがたいなと思い、質問させて頂きました。 やはり、マクロで解決するのがベストのようですね。 たすかります。

すると、全ての回答が全文表示されます。
  • chayamati
  • ベストアンサー率41% (260/625)
回答No.3

>その下の長文部分もきれいに表示してくれるような機能は  エクセルにありますでしょうか? !次の2つがあります 1.折り返したい位置にマウスカーソルを合わせて《ALT+Enter》で  改行されます 2.テキストボックス貼り付ける  《挿入リボン》《テキストボックス》  《sheet上で対角線でドラッグ》《文字列を入力》 セルの結合で結合されたセルにも上記を適用できます

すると、全ての回答が全文表示されます。
  • kon555
  • ベストアンサー率51% (1849/3570)
回答No.2

 Excel独自の機能としては存在しません。  いわゆるマクロ機能、vbaという形でプログラムする事で対応可能にはなります。  検索すると色々と出てきますので、もし環境的にvbaが使用可能なら、使い物になるマクロを探す事も出来ると思います。 https://daitaideit.com/vba-autofit-rowheight-of-merge-cell/ https://shikumika.org/entry/2023/06/05/180000  あるいは業務でExcelをよく使用するなら、ご自身で勉強して作成してみるのもいいですね。  初心者でも少し勉強すれば、先述したような誰かの作ったマクロを下記のような入門用サイトを見ながら改造する事は十分可能です。 https://excel-ubara.com/excelvba1/ https://www.javadrive.jp/excelvba/

すると、全ての回答が全文表示されます。
  • okvaio
  • ベストアンサー率26% (2016/7725)
回答No.1

右クリックで、 セルの書式設定→配置タブ→折り返して全体を表示✔ にしてみて下さい。

techhouse
質問者

補足

"セルの書式設定→配置タブ→折り返して全体を表示" この設定をやってみたのですが、結合していないセルならば、全文を表示するように自動調整してくれることは確認できました。 現在のセルが、C~I列までを結合したセルで、これの場合だと、ダブルクリックで頭の1行目だけで自動調節されてしまいます。 もし解決法ありましたら、よろしくお願いします。

すると、全ての回答が全文表示されます。

関連するQ&A