• ベストアンサー

excelで続けて打った文字を

Excelで続けて打った文字を「abcdefghij・・・・」を5文字ずつ改行する方法を教えてください sheet1のA1のセルに「abcdefghijklm・・・・」 A2のセルに「bihojmpDPlon・・・・」 A3のセルに「opknobijm・・・・」 という入力があるものを sheet2の「A1」に「abcde」「A2」に「fghij」「A3」に「klm」 「A4」に「bihoj」「A5」に「mpDPl」「A6」に「on」 「A7」に「opkno」「A8」に「bijm」 のように5文字ずつ区切って表示させたいのです。 vbaでやってみましたが、うまくいきません。 どうか教えてください。 よろしくお願いします。 Windows XP pro、Excel2000です

質問者が選んだベストアンサー

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.7

沢山回答がありますが・・・基本形?かな。 Sub test() Dim i As Integer Dim j As Integer Dim tmp As String For i = 1 To 3 tmp = Cells(1, i) For j = 1 To 10 If Len(tmp) > 5 Then Cells(j, i) = Left(tmp, 5) tmp = Right(tmp, Len(tmp) - 5) Else Cells(j, i) = tmp Exit For End If Next Next End Sub

mnakayoshi
質問者

お礼

私のつたない説明の意味をお汲み取りいただき本当にありがとうございます。 本当にずうずうしいお願いなんですが、sheet1にはA1~A10000ぐらいまでデータが入っています すべてのデータをsheet2に1セルに1文字ごと5列目で改行するように書き出したいんです。 sheet1のA1にABCDEFG、A2にHIJKLMNと入っていたら sheet2のA1に「A」B1に「B」C1に「C」D1に「D」E1に「E」 A2に「F」B2「G」, A3に「H」B3に「I」C3に「J」D3に「K」E3に「L」 A4に「M」B4「N」 という具合です。 本当に説明がまちがっていて申し訳ありませんでした。 もし教えていただけたら大変助かります。

その他の回答 (6)

  • pkh4989
  • ベストアンサー率62% (162/260)
回答No.6

No.3 です。すみません。 RowとColumnを間違いました。 Sub StrEdit() Dim Rng As String Dim wIx As Integer Dim wStr As String Dim wStr2 As String Dim ExitFlg As Boolean Dim wRow As Integer ' Rng = "A1:A50" wRow = 0 For Each c In Worksheets("Sheet1").Range(Rng) wStr = c.Value If wStr <> "" Then ExitFlg = False Do While ExitFlg = False wRow = wRow + 1 If Len(wStr) > 5 Then wStr2 = Left(wStr, 5) wStr = Mid(wStr, 6) Else wStr2 = wStr ExitFlg = True End If Worksheets("Sheet2").Cells(wRow, 1) = wStr2 Loop End If Next End Sub

mnakayoshi
質問者

お礼

ご回答いただきました皆様 本当にありがとうございました。 ものすごく急がされていたので、質問を書き間違えてしまい、 本当に申し訳ありませんでした。 皆様に教えていただいた方法は大変勉強になりました。 皆様に点数を差し上げたいのですがかなわないので私見で決めさせていただきました。 私がまちがったせいで仕事の締め切りの時間が来てしまいました。 今後は落ち着いて質問させていただきます。 ありがとうございました。

  • myeyesonly
  • ベストアンサー率36% (3818/10368)
回答No.5

あ、いけない! 式を入れる場所を間違えましたね。 Sheet2に式を入れます。 A1 =mid(sheet1!a1,1,5) A2 =mid(sheet1!a1,6,5) A3 =mid(sheet1!a1,11,5) A4 =mid(sheet1!a1,16,5) ・ ・ ・ An =mid(a1,5*(n-1)+1,5) 失礼しました。m(__)m

mnakayoshi
質問者

お礼

すいません。説明が悪かったのかもしれませんが 1文字を1セルに入れたいのです。 もしおわかりでしたら教えていただけたらと思います。

回答No.4

VBAのことはよく分からないので、 私の場合、Sheet2のA1に以下の式を入れて、ダーっとしたまでコピーします。 =MID(CONCATENATE(Sheet1!$A$1,Sheet1!$A$2,Sheet1!$A$3),5*(ROW(A1))-4,5) 効率的かどうかは分からないですが…。

  • pkh4989
  • ベストアンサー率62% (162/260)
回答No.3

以下のモジュールで、実行してみてください。 Sub StrEdit() Dim Rng As String Dim wIx As Integer Dim wStr As String Dim wStr2 As String Dim ExitFlg As Boolean Dim wCol As Integer ' Rng = "A1:A50" wCol = 0 For Each c In Worksheets("Sheet1").Range(Rng) wStr = c.Value If wStr <> "" Then ExitFlg = False Do While ExitFlg = False wCol = wCol + 1 If Len(wStr) > 5 Then wStr2 = Left(wStr, 5) wStr = Mid(wStr, 6) Else wStr2 = wStr ExitFlg = True End If Worksheets("Sheet2").Cells(1, wCol) = wStr2 Loop End If Next End Sub

mnakayoshi
質問者

お礼

すいません。私の説明がまちがっていました。 やりたかったことは 「A1」のセルに「abcdefghijklm・・・・」という文字を別シートの 「A1」に「a」「B1」に「b」「C1」に「c」「D1」に「d」「E1」に「e」「A2」に「f」「B2」に「g」「C2」に「h」「D2」に「i」「E2」「j」に「A3」に「k」「b3」に「l」・・・と入れたかったのです。 本当に申し訳ありませんでした。 丁寧にご回答いただき誠に申しわけありません。 でも大変役に立つコードを教えていただいてありがとうございました。

  • myeyesonly
  • ベストアンサー率36% (3818/10368)
回答No.2

こんにちは。 まず、以下の内容を入力します。 A2 =mid(a1,1,5) A3 =mid(a1,6,5) A4 =mid(a1,11,5) A5 =mid(a1,16,5) ・ ・ ・ An =mid(a1,5*(n-2)+1,5) 入れ終わったら、A2からAn(つまりA段の終わりの列まで)を選択し、右下の角をマウスで摘んで下にドラッグ(ずりずりする)すると各段での式が入力されます。

  • castoff
  • ベストアンサー率15% (7/46)
回答No.1

vbaが解るのであれば。 原本の文字列を取得し(abcdefghij・・・・) mid関数で5文字ずつ取得して該当のセルに --------------- b=0 for i = 1 to len(原本) step 5 'パターン1 a(b) = mid(原本,i,5) b = b + 1 または 'パターン2 該当セル = mid(原本,i,5) next --------------- 見たいな感じに 入れていけばよいのでは?

関連するQ&A