• 締切済み

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

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

みんなの回答

  • HohoPapa
  • ベストアンサー率65% (454/690)
回答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% (254/607)
回答No.3

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

  • kon555
  • ベストアンサー率52% (1749/3354)
回答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% (1782/6813)
回答No.1

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

techhouse
質問者

補足

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

関連するQ&A

  • エクセルで結合したセルの高さの自動調整方法?

    エクセル2000、Win2000です。 いくつかのセルを横に結合し、セル内で「折り返して全体を表示する」にしています。 セルを結合してない場合は、入力文字数が多くなっても行の高さを自動調整にすれば、ちゃんと折り返して全部表示されますが、結合したセルの場合は、自動調整がきかず、 いちいち手動で調整しなくてはいけません。 1.結合セルでも自動調整する方法はないですか? 2.ない場合、VBAで行の高さを変えてみようと思いますが、セル内で折り返しているかどうか、および何行に折り返されているかはどう判別すればいいでしょうか?

  • エクセル:結合したセルの高さ自動設定

    EXCEL2000で結合したセルの高さ自動設定がききません。 結合したセルは ・文字の配置 横位置:左詰 縦位置:上詰め ・文字の制御 折り返して全体を表示 セルを結合する になっています。 セルを5つ結合して、その結合したセルの横幅を文字列が 越えたら次の行にいって、かつその折り返し部分が見えるように したいんです。 結合していない単体のセルの場合は、折り返され、かつ 折り返し部分が見えるように高さが変わります。 結合したセルでの高さ自動設定はできないのでしょうか? 教えてください。よろしくお願いします。

  • エクセルの行幅の自動調節

    エクセルで、改行を含む10行以上のデータを1つのセルに記入しています。 このとき、直接記入すれば自動的に全体が見えるように高さ(行の幅)が調節されるのですが (「折り返して全体を表示」にしています。)、 コピペで貼り付けたものはなぜか全体が表示されません。 折り返して表示はされるのですが、10行のコピペなら8~9行くらい見えるように行幅が大きくなるだけで見えない部分があります。 さらに、10行全部見えるようにしようと行の番号が書いてある左の部分(3行目なら「3」と「4」の間)をダブルクリックしても 適切な行幅になるはずが、変化ありません。行幅をドラッグして大きくすれば大きくはなるのですが・・・ なぜでしょうか? エクセルで、改行を含む10行以上のデータを1つのセルに記入しています。 このとき、直接記入すれば自動的に全体が見えるように高さ(行の幅)が調節されるのですが (「折り返して全体を表示」にしています。)、 コピペで貼り付けたものはなぜか全体が表示されません。 折り返して表示はされるのですが、10行のコピペなら8~9行くらい見えるように行幅が大きくなるだけで見えない部分があります。 さらに、10行全部見えるようにしようと行の番号が書いてある左の部分(3行目なら「2」と「3」の間)をダブルクリックしても 適切な行幅になるはずが、変化ありません。行幅をドラッグして大きくすれば大きくはなるのですが・・・ なぜでしょうか?

  • 結合セルでの行の高さの自動調整

    エクセルでの質問です。 結合セルに折り返して表示の設定がしてあり、文章が入力されています。入力方法が統一されていないため、セルによって、一行だったり、長文だったり、セル内で改行して箇条書きで入力されていたりします。 文章の下が切れてしまうセルがあるので、手作業で行の高さを広げています。行数が何百行もあったりするのでとても手間と時間がかかってしまいます。いい方法がないかと、“マクロでセル内の文字数が50以上なら行の高さを30にする”としてみたのですが、箇条書きのセルだとうまくいきません。そこで、“セル内に3行以上なら、行の高さを30 とする”というように行数を数えることは可能でしょうか? また、他に良い方法があれば教えてください。宜しくお願いします。

  • 【エクセル】 結合セルで行の高さを自動調整する方法

    通常、セルに多数の文字を書き込んでも列幅を変更 したくないときには、セルの書式設定で 「折り返して全体を表示する」 としておけば、列幅を広くすることなく、行の高さ が自動調整されます。 これを、結合セルでやろうとするとどうしても 自動調整してくれません。 結合セルでも、行の自動調整機能が働く方法を 教えてください。 よろしくお願いします。

  • エクセルのセル~結合セルへのコピーの仕方を教えて

    フォーマットのセルがありますが 結合セルで出来ています マクロの設定も含まれているようです Aの一列の中で上下2つのセルで一つになっています それが五行あります 左にはエクセルのもともとの枠の番号が1から10まであって Aの縦のセルの数は五行です そのAの縦に名簿のセルを例えば5名分貼り付けますと もともとの結合前のセルに戻って5行貼り付けられてしまいます 左にあるエクセルのもともとの枠の番号ですと1から5までに 貼り付けられるのです わたしはもともとの結合セルの5つのセルにはめ込みたいのですが いっぺんには出来ません 一つづつですとできます なぜなのでしょう 結合セルにまとめてコピーできる方法を教えてください マクロの設定はくずれてもあらかじめ消してもかまいません 私がしたいのは コピーして改めて作ったものの印刷だけです よろしくお願いします

  • EXCELでセルの結合をして

    EXCELでセルの結合をして 2セル 1セル 3セル の複数行 2セル 1セル 3セル 2セル 1セル 3セル 2セル 1セル 3セル 2セル 1セル 3セル 2セル 1セル 3セル の5行の2行目以降を1つ行を下げようと3行から5行を選択してコピーして4行目に貼り付けたらセルがすべて1セルになってセル結合がガタガタになるのですが、セル結合を維持した状態で行をずらす方法を教えて下さい。 行の追加だとそれ以降の右側のセルにもセル結合があるのでただ単に行の追加ではだめなんです。

  • エクセル2007 結合セル

    エクセル2007 結合セル 下の画像のようなエクセルシートを 練習用に2枚作成しました。 上段が月の入力フォームで、 下段が各個人の営業成績表です。 ここで、下段の成績表の1行目が B列からI列まで、セル結合されており その中に表題の( 月分)が表示されています。 ここの月の前の空白部分に上段の入力フォームの黄色で 入力した月の数字をを自動的に表示させることはできるのでしょうか。 結合させなければ、簡単にできたと思いますが、 結合している前提で、教えていただけるとありがたいです。 よろしくお願いします。

  • エクセル 自動セル結合

    エクセルについての質問です。 1つのセルにずっと文章を打ち込んでいき、そのセルをこえる長さの文章になったとき、その文全てが表示されるよう自動的にセルを結合していくようにするには、どのような設定をすればいいのですか? いちいち「結合して中央揃え」をしなければならず、困っています。 ご教授よろしくお願いします。

  • 【エクセル:セル内の文書結合】 右に並んだ全てを結合するには?

    既出でしたら申し訳ございません。 エクセルで下記「サンプルイメージ」での記載状況の際 1行A列のセルに、1行目B列からZZ列に記入された 全ての文書を、結合する方法があれば教えて頂けないでしょうか? 尚、1行A列のセル内の表示方法は、結合するセル毎に改行され、 結合するセルが未記入の場合は、そのセルは結合対象から外したいと 考えています。 以上、わかりにくければ補足いたしますのでご指摘下さい。 ご回答頂ければ幸いです。 サンプルイメージ 下記の通り入力されているものを・・・   <A><B><C><D>・・・・<ZZ> 1)     あ   い   う        わ 2)     あ       う        わ 3)     あ   い   う 4)     あ        このように表示したい   <A><B><C><D>・・・・<ZZ> 1) あ   あ   い   う        わ    い    う    わ 2) あ   あ       う        わ    う    わ 3) あ   あ   い   う    い    う 4) あ   あ        

専門家に質問してみよう