重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

Excel2003、一つのセルを35文字で別セルに改行して5行、約175文字の文章にしたいのですがよい方法はありませんか、(自動的に改行出来るようにしたいのですが)教えて下さい。
また、Wordで作成した文章を35文字をExcelの一つのセルこどに自動的に移すことは無理でしようか。

質問者からの補足コメント

  • 出来ましたが、禁則処理についてはどうでしようか、何か方法がありますか。Excelでは難しいようですが、マクロということでしようか。すみません、初歩の自分で申し訳ありません。

    No.1の回答に寄せられた補足コメントです。 補足日時:2015/02/03 21:50
  • すみません。少し形式が変わりました。A列のA1に番号が入ります。その下(A2)に175文字の文章がはいります。上記(No.1)のようにマクロをいれました。B列の禁則処理が「、」行頭にきているところがあります。また、B列に=MID(A$7,(ROW(A7)-7)*34+1,34)(34文字に変更)しました。それに、A列にA1番号・A2文章・A3空欄・A4空欄・A5空欄・A6空欄・A7からはA1~A6までの繰り返しでA48まで入力しています。ほんとう申し訳ありません、もう少し教えてくださいませんか。勉強しないで、聞くのは大変心苦しいのですが、お教え下さい。

    No.2の回答に寄せられた補足コメントです。 補足日時:2015/02/04 16:51
  • 再三のことで大変心苦しいです。ご対応して下さり申し訳ありません。上記のマクロで試しました。すると、4行しか表示されず、そして4行目の部分と5行目がおかしな表示になります(途切れた感じです)。但し、番号の部分との関係と「禁則処理」は、すごいできで感謝しています。
    なお、30名ほどの人のデーターを処理します。1人目の人だけができますが、後の人はできません。ほんとうに申し訳ありません。お忙しい中、対応して下さること言葉に言い表せない感謝の気持ちです。お教え頂ければ幸いです。

    No.3の回答に寄せられた補足コメントです。 補足日時:2015/02/05 09:35
  • 再々再質問です。8人分の文章を、Wordで作成してA1~A16のセルにコピー、ペーストして、マクロを実行すると、1人目・4人目・7人目だけが表示されて、2・3・5・6人目が表示されません。私のやり方が悪いのでしょうか。お教え下さい。初心者であり、再々再質問で大変申し訳ありません。
    また、1人目を処理して、改めて2人目をすると1人目の1行だけ残って他の4行は消えるのですね。

    No.4の回答に寄せられた補足コメントです。 補足日時:2015/02/05 14:09
  • 今回の説明でよくわかりました。また、完成できました、色々とお世話になりました、何度も親切にお教え下さりありがとうございました。私もマクロを勉強して、教授できるようにまでなってみたいと思います。誠にありがとうございました。

    No.5の回答に寄せられた補足コメントです。 補足日時:2015/02/06 21:18

A 回答 (5件)

何度も失礼します。



最後の補足の
>Wordで作成してA1~A16のセルにコピー、ペーストして
と2番目の補足の
>A列のA1に番号が入ります。その下(A2)に175文字の文章がはいります。
>A列にA1番号・A2文章・A3空欄・A4空欄・A5空欄・A6空欄・A7からはA1~A6までの繰り返しでA48まで

が矛盾するように思えるのですが・・・
今までのコードはアップした画像のように
A2・A8・A14・A20・・・と6行毎に「175文字」の文字列セルがあり
それをA2~A6まで・A8~A12まで、A14~A18・・・
とそのセルを含めて下へ5行のセルに35文字に分割するコードです。
すなわち前回の画像の「175文字セル」のセルだけに175文字の文字が入っているという前提です。
後述のコード内の
>For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row Step 6
の部分が「A列2行目~6行おき」に!というコトになりますので、
A2セルの文字をA2~A6セルに分割、A8セルの文字をA8~A12セルに分割・・・
と連続させています。
もしA3~A6、A9~A11・・・セルにデータが入っている場合は消えてしまいます。

尚、今までのコードでは「行末禁則処理」が多い場合、最後のセルにすべての文字が表示されない可能性がありますので、
今までのコードは消去して↓のコードに変更してみてください。
(今回もC1・C2セルには禁則文字を入れておきます)

Sub Sample4()
Dim i As Long, k As Long, str As String
For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row Step 6
str = Cells(i, "A")
For k = i To i + 4
If k <= i + 3 Then
With Cells(k, "A")
.Value = Left(str, 35)
str = Mid(str, 36, Len(str))
'▼ 行末禁則処理
If InStr(Range("C2"), Right(.Value, 1)) > 0 Then
str = Right(.Value, 1) & str
End If
'▼ 行頭禁則処理
If InStr(Range("C1"), Left(str, 1)) > 0 Then
.Value = .Value & Left(str, 1)
str = Mid(str, 2, Len(str))
.Offset(1) = str
End If
End With
Else
Cells(k, "A") = str
End If
Next k
Next i
End Sub

※ あくまで前回投稿した画像の配置でのコードです。
マクロの場合は1行でも異なれば全く意図しない動きになってしまいます。m(_ _)m
この回答への補足あり
    • good
    • 0
この回答へのお礼

できました。すごく捗ります、何回もありがとうございました。

お礼日時:2015/02/07 17:10

たびたびごめんなさい。



>なお、30名ほどの人のデーターを処理します。1人目の人だけができますが、後の人はできません

↓の画像のような配置になっているという前提のコードです。
もう一度コードに手を加えてみました。
「★」の部分を変えています。

Sub Sample3()
Dim i As Long, k As Long, str As String
For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row Step 6
str = Cells(i, "A")
For k = i To i + 4 '★
Cells(k, "A") = Left(str, 35)
str = Replace(str, Cells(k, "A"), "")
'▼ 行末禁則処理
If InStr(Range("C2"), Right(Cells(k, "A"), 1)) > 0 Then
Cells(k, "A") = Left(Cells(k, "A"), 34)
str = Right(Cells(k, "A"), 1) & str
End If
'▼ 行頭禁則処理
If InStr(Range("C1"), Left(str, 1)) > 0 Then
Cells(k, "A") = Cells(k, "A") & Left(str, 1)
str = Mid(str, 2, Len(str))
End If
Next k
Next i
End Sub

※ ちゃんと検証せずに投稿してごめんなさいね。m(_ _)m
「Excel2003、セルを35文字で別セ」の回答画像4
この回答への補足あり
    • good
    • 0

No.1・2です。



>A1~A6までの繰り返しで・・・
結局A2セル・A8セル・A14セル・・・に175文字の文章が入っていて、
文章が入っているセルを含めて35文字のセルに分けたい!というコトですかね?
すなわち175文字を35文字に分割すると5セルが必要になりますね。
禁則処理を行った場合、5セルでは収まらなくなる可能性がありますので、
最後のセルは残った文字列すべてを表示するマクロにしてみました。

今回もC1セルに「行頭禁則文字」をC2セルに「行末禁則文字」を前回同様コピー&ペーストしておいてください。

そして前回のコードはすべて消去し、↓のコードに変更してマクロを実行してみてください。

Sub Sample2()
Dim i As Long, k As Long, str As String
For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row Step 6
str = Cells(i, "A")
For k = i To i + 3
Cells(k, "A") = Left(str, 35)
str = Replace(str, Cells(k, "A"), "")
'▼ 行末禁則処理
If InStr(Range("C2"), Right(Cells(k, "A"), 1)) > 0 Then
Cells(k, "A") = Left(Cells(k, "A"), 34)
str = Right(Cells(k, "A"), 1) & str
End If
'▼ 行頭禁則処理
If InStr(Range("C1"), Left(str, 1)) > 0 Then
Cells(k, "A") = Cells(k, "A") & Left(str, 1)
str = Mid(str, 2, Len(str))
End If
If k = i + 3 Then
Cells(k, "A") = str
End If
Next k
Next i
End Sub

※ 前回書いたように禁則処理を行った場合は
1セル34文字もしくは36文字になるセルも出てくると思います。m(_ _)m
この回答への補足あり
    • good
    • 0

No.1です。



禁則処理も必要だとなるとVBAになりますが、一例です。

尚、C1セルに「行頭禁則文字」の

!%),.:;?]}¢°’”‰′″℃、。々〉》」』】〕゛゜ゝゞ・ヽヾ!%),.:;?]}。」、・゙゚¢

↑の1行をこの画面からコピー&ペースト

C2セルに「行末禁則文字」の

$([\{£¥‘“〈《「『【〔$([{「£¥

↑の1行をコピー&ペーストしておいてください。
このC1・C2セルを参照して、禁則処理をやってみました。

画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)マクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)
今回もA1セルの文字列をB列に表示するようにしています。

Sub Sample1() 'この行から
Dim i As Long, cnt As Long, str As String

cnt = Int(Len(Range("A1")) / 35) + 1
str = Range("A1")
For i = 1 To cnt
Cells(i, "B") = Left(str, 35)
str = Replace(str, Cells(i, "B"), "")
'▼ 行末禁則処理
If InStr(Range("C2"), Right(Cells(i, "B"), 1)) > 0 Then
str = Right(Cells(i, "B"), 1) & str
Cells(i, "B") = Left(Cells(i, "B"), Len(Cells(i, "B")) - 1)
End If
'▼ 行頭禁則処理
If InStr(Range("C1"), Left(str, 1)) > 0 Then
Cells(i, "B") = Cells(i, "B") & Left(str, 1)
str = Mid(str, 2, Len(str))
End If
Next i
End Sub 'この行まで

※ 当然のことですが、禁則処理を行うと
ピッタリ35文字にならない行もあります。m(_ _)m
この回答への補足あり
    • good
    • 0

こんばんは!



>一つのセルを35文字で別セルに改行して5行・・・
すなわち1セルに35文字ずつ表示したい!という解釈です。

文字列はA1セルにあり、B1セル以降に35文字ずつ表示する場合は
B1セルに
=MID(A$1,(ROW(A1)-1)*35+1,35)
という数式を入れフィルハンドルで下へコピーしてみてください。m(_ _)m
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!