
No.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
No.4
- 回答日時:
たびたびごめんなさい。
>なお、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

No.3
- 回答日時:
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
No.2
- 回答日時:
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
No.1
- 回答日時:
こんばんは!
>一つのセルを35文字で別セルに改行して5行・・・
すなわち1セルに35文字ずつ表示したい!という解釈です。
文字列はA1セルにあり、B1セル以降に35文字ずつ表示する場合は
B1セルに
=MID(A$1,(ROW(A1)-1)*35+1,35)
という数式を入れフィルハンドルで下へコピーしてみてください。m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/12/26 12:05
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/03/09 16:55
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/04/21 08:59
- Excel(エクセル) Excelにの以下の設定方法について教えてください! C列にデータ入力の設定をしています。(出、入を 3 2022/06/22 01:33
- Excel(エクセル) エクセルの数式で教えてください。 1 2022/07/08 13:46
- Excel(エクセル) Excel>マクロ>特定のセルで同じ情報が登録されている行を1行にまとめたい(文字連結) 6 2023/01/05 16:30
- Excel(エクセル) エクセル セル内の文字数を超えたら自動的に折り返して表示 2 2023/07/24 05:32
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Excel(エクセル) エクセルの数式で教えてください。 3 2023/04/17 09:25
- Excel(エクセル) 現在のセルの文字列を右隣のセルの名前にするマクロをつくりたい 4 2023/01/12 09:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのdatedif関数を使って...
-
特定のセルだけ結果がおかしい...
-
9月17日でサービス終了らし...
-
【マクロ】【配列】3つのシー...
-
エクセルのVBAで集計をしたい
-
vba テキストボックスとリフト...
-
エクセル ドロップダウンリスト...
-
【マクロ】列を折りたたみ非表...
-
【関数】同じ関数なのに、エラ...
-
ページが変なふうに切れる
-
【マクロ】アクティブセルの時...
-
【条件付き書式】シートの中で...
-
【マクロ】オートフィルターの...
-
Office2021のエクセルで米国株...
-
【マクロ】3行に上から下に並...
-
【マクロ】EXCELで読込したCSV...
-
エクセルの循環参照、?
-
【マクロ】A列にある、日付(本...
-
Excelファイルを開くと私だけVA...
-
【エクセル】期限アラートについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル
-
【マクロ】WEBシステムから保存...
-
エクセルの循環参照、?
-
エクセル ドロップダウンリスト...
-
エクセルのdatedif関数を使って...
-
特定のセルだけ結果がおかしい...
-
【マクロ】A列にある、日付(本...
-
【マクロ】EXCELで読込したCSV...
-
【マクロ】アクティブセルの時...
-
【エクセル】期限アラートについて
-
iPhoneのExcelアプリで、別のシ...
-
【関数】同じ関数なのに、エラ...
-
Excelの新しい空白のブックを開...
-
【マクロ】3行に上から下に並...
-
【マクロ】宣言は、何のために...
-
VBA チェックボックスをオーバ...
-
Excelについての質問です 並べ...
-
【マクロ】アクティブセルの2...
-
【関数】不規則な文章から●●-●●...
おすすめ情報
出来ましたが、禁則処理についてはどうでしようか、何か方法がありますか。Excelでは難しいようですが、マクロということでしようか。すみません、初歩の自分で申し訳ありません。
すみません。少し形式が変わりました。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まで入力しています。ほんとう申し訳ありません、もう少し教えてくださいませんか。勉強しないで、聞くのは大変心苦しいのですが、お教え下さい。
再三のことで大変心苦しいです。ご対応して下さり申し訳ありません。上記のマクロで試しました。すると、4行しか表示されず、そして4行目の部分と5行目がおかしな表示になります(途切れた感じです)。但し、番号の部分との関係と「禁則処理」は、すごいできで感謝しています。
なお、30名ほどの人のデーターを処理します。1人目の人だけができますが、後の人はできません。ほんとうに申し訳ありません。お忙しい中、対応して下さること言葉に言い表せない感謝の気持ちです。お教え頂ければ幸いです。
再々再質問です。8人分の文章を、Wordで作成してA1~A16のセルにコピー、ペーストして、マクロを実行すると、1人目・4人目・7人目だけが表示されて、2・3・5・6人目が表示されません。私のやり方が悪いのでしょうか。お教え下さい。初心者であり、再々再質問で大変申し訳ありません。
また、1人目を処理して、改めて2人目をすると1人目の1行だけ残って他の4行は消えるのですね。
今回の説明でよくわかりました。また、完成できました、色々とお世話になりました、何度も親切にお教え下さりありがとうございました。私もマクロを勉強して、教授できるようにまでなってみたいと思います。誠にありがとうございました。