プロが教える店舗&オフィスのセキュリティ対策術

10字~50字程の全角文字がランダムに入っている列があり、それを20字以上の場合は20字で改行された状態にしてメモ帳に貼り付ける必要があるのですが、何か良い方法はありませんでしょうか。

具体的には、
------------------------------------------------------------------------
あいうえおかきくけこさしすせとたちつてとなにぬねのはひふへほまみむめもやゆよん

あいうえおかきくけこさしすせとたちつてと
なにぬねのはひふへほまみむめもやゆよ

------------------------------------------------------------------------
という状態でメモ帳に反映させたいです。


エクセルでの改行は、メモ帳にダブルクォーテーション付きで反映されてしまうため、困っています。

関数でもマクロ処理でも構いません。
最終的にメモ帳に改行したものが反映されていればOKです。

できれば、指定した範囲のセル全てそれぞれが一度で改行、メモ帳に反映されると助かります。


どなたか、力を貸してください。。

A 回答 (5件)

No.4です。


補足の件について・・・
結局B列の文字数で前回同様の操作を行えばよい!というコトですね?

↓のコードに変更してマクロを実行してみてください。
今回もデータは1行目からあるとします。

Sub Sample2()
Dim i As Long, k As Long, cnt As Long
For i = Cells(Rows.Count, "B").End(xlUp).Row To 1 Step -1 '←最終列取得のためなので「A」のままでもOK
If Len(Cells(i, "B")) > 20 Then
cnt = Int(Len(Cells(i, "B")) / 21)
Rows(i + 1 & ":" & i + cnt).Insert
For k = 1 To cnt
With Cells(i + k, "B")
.Value = Mid(.Offset(-1), 21, Len(.Offset(-1)))
.Offset(-1) = Replace(.Offset(-1), .Value, "")
End With
Next k
End If
Next i
Columns.AutoFit
End Sub

※ 前回のコードとほとんど同じです。「A」列の部分を「B」列に変えただけです。
こんな感じでよろしいのでしょうかね?m(_ _)m
    • good
    • 0
この回答へのお礼

さっそくのご回答、ありがとうございます!
無事できました!!

すばらしいです!!!

お礼日時:2013/12/17 22:31

こんにちは!


一例です。

データはA列の1行目からあるとします。
画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペーストしてマクロを実行してみてください。

Sub Sample1() 'この行から
Dim i As Long, k As Long, cnt As Long
For i = Cells(Rows.Count, "A").End(xlUp).Row To 1 Step -1
If Len(Cells(i, "A")) > 20 Then
cnt = Int(Len(Cells(i, "A")) / 21)
Rows(i + 1 & ":" & i + cnt).Insert
For k = 1 To cnt
With Cells(i + k, "A")
.Value = Mid(.Offset(-1), 21, Len(.Offset(-1)))
.Offset(-1) = Replace(.Offset(-1), .Value, "")
End With
Next k
End If
Next i
End Sub 'この行まで

これでA列に20文字以内に分割されますので、
これをメモ帳にコピー&ペーストしてみてください。m(_ _)m

この回答への補足

早速ありがとうございます!すごい!なるほど、分割して下のセルに繰り下げていく、ということなんですね。
ずっと同一セル内で改行>貼り付けとしか考えてませんでした。
なので、最初の質問に書かなかったのですが、実は、改行させたい文字列の隣に、その文字列の名称が入る列があるんです。。今更すみません。
下のようになります。


 A列       B列
りんご   りんごの説明(40字以上の場合)
なし    なしゃの説明(40字以下の場合)
みかん   みかんの説明(20字以下の場合)

これを

りんご     りんごの説明・・・・・・・
        りんごの説明の続き・・・
        さらにりんごの説明・・・
なし      なしの説明云々・・・
        なしがどうのこうの
みかん     みかんとは・・・・


このように、もともと対になっていたA列とB列が、B列が改行されたあとも、対応するようにできないでしょうか。

上の例で言うと、B列の改行が3行にわたるのか、2行になるのか、1行になるのかによってA列の繰り下げ方が変わってしまうので、どのようにしたらいいのか、想像もできません。

アドバイスいただけないでしょうか。

どうぞよろしくお願いします!!

補足日時:2013/12/17 21:36
    • good
    • 0

既に有用な回答が提示されていますが、エクセルで改行された状態になっているものをメモ帳に貼り付けたい場合の方法としては、



(1)一旦ワードパッドに貼り付ける。
 (ワードパッドでなくても、改行コードを認識するエディタならなんでも)
(2)ワードパッド(orエディタ)の文字列をコピーしてメモ帳に貼り付ける。

という手順でも可能です。ご参考まで。
    • good
    • 0
この回答へのお礼

ありがとうございます!なるほど、ワードパッドだと改行が反映されるのですね!
考えすらしませんでした。助かりました!

お礼日時:2013/12/17 21:38

対象文字列がA列に入っているとして、B列に20文字ごとに切り分けた文字列を入れています。


B列をコピーしてメモ帳に貼り付けてください

Sub Sample()
  nRow = 1
  nLength = 20
  nMaxRow = Cells(Rows.Count, 1).End(xlUp).Row
  For i = 1 To nMaxRow
    sTarget = Range("A" & i)
    For j = 1 To Len(sTarget) Step nLength
      Range("B" & nRow) = "'" & Mid(sTarget, j, nLength)
      nRow = nRow + 1
    Next j
  Next i
End Sub
「エクセルで改行したものをメモ帳に貼り付け」の回答画像2

この回答への補足

わかりやすくありがとうございます!
分割して下のセルに貼り付けていくのですね・・・

実は、上の回答4の方にも書いたのですが、
完全に説明不足でした。


 A列       B列
りんご   りんごの説明(40字以上の場合)
なし    なしゃの説明(40字以下の場合)
みかん   みかんの説明(20字以下の場合)

これを

りんご     りんごの説明・・・・・・・
        りんごの説明の続き・・・
        さらにりんごの説明・・・
なし      なしの説明云々・・・
        なしがどうのこうの
みかん     みかんとは・・・・


このように、もともと対になっていたA列とB列が、B列が改行されたあとも、対応するようにできないでしょうか。

今更、ほんとすみません・・・

補足日時:2013/12/17 21:41
    • good
    • 0

A1セルに10字~50字程の全角文字があるとして、以下の式をB1セル入れて下にドラッグコピー。


=MID($A$1,(ROW(B1)-1)*20+1,20)
    • good
    • 0
この回答へのお礼

ありがとうございます!関数でもできるのですね!助かりました!

お礼日時:2013/12/17 21:42

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