- ベストアンサー
エクセルでコピーする時に
任意の文字列を一文字ずつ、任意のセルに一括して貼り付けることは可能でしょうか? 例 zyxwv 上記の文字列をコピー状態にして、A1にz、B2にy、C3にx、D4にw、E5にvを一括処理で貼り付けるということです。 方法をご存知の方がいましたら教えて下さい。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
#4さんフォローどうもです。質問を良く見てませんでした。 任意と言うのは漠然としすぎですね。 マクロが解れば下記を試してみて下さい。 '斜めに貼り付け Sub Test1() Dim r1 As Range, r2 As Range On Error GoTo ER: Set r1 = Application.InputBox("コピー元のセルを1つ選択", "Copy", Type:=8) Set r2 = Application.InputBox("貼り付け先のセルを1つ選択", "Paste", Type:=8) For i = 0 To Len(r1.Text) - 1 r2.Offset(i, i).Value = Mid(r1.Text, i + 1, 1) Next i ER: End Sub '文字数分のセルを指定 Sub Test2() Dim r As Range, r1 As Range, r2 As Range On Error GoTo ER: Set r1 = Application.InputBox("コピー元のセルを1つ選択", "Copy", Type:=8) Set r2 = Application.InputBox("貼り付け先のセルをCtrlを押しながら文字数分選択", _ "Paste", Type:=8) i = 1 For Each r In r2 r.Value = Mid(r1.Text, i, 1) i = i + 1 Next r ER: End Sub
その他の回答 (5)
- imogasi
- ベストアンサー率27% (4737/17070)
元のセルをA1セルと固定するなら、 CTRLを押してA1、B2,C3,D4,E5をクリックして、下記を実行するとできます。 Sub test01() X = Cells(1, "A") Dim cl As Range i = 1 For Each cl In Selection cl = Mid(X, i, 1) i = i + 1 Next End Sub A1,B2・・の位置は任意のセルでよい。 A1の書式をもコピーするなら、上記clセルに問題にする書式をコピーするコードを入れればよい。 A1を都度相対化するなら、 Sub test01() Y = Application.InputBox("セル=?", Type:=8) X = Y Dim cl As Range i = 1 For Each cl In Selection cl = Mid(X, i, 1) i = i + 1 Next End Sub でどうでしょうか。 各文字がセットされる順序は上から下の行へ、左から右の列への制約がありますが。
お礼
ご回答ありがとうございました。 大変参考になりました。
- 134
- ベストアンサー率27% (162/600)
papayukaさんの回答の A1に zyxwv として、B1 に =MID($A1,COLUMN()-1,1) と入れて F1までコピー $A$1 と 絶対参照にしてみるだけでいいように思うんですけど =MID($A$1,COLUMN()-1,1)
- takatosen
- ベストアンサー率37% (378/1016)
貼り付けるセルが毎回違うのであれば、ご質問の趣旨に沿っているかどうかわかりませんが、次の方法ではだめでしょうか。 まず、分割したいデータが入力されたセルを指定します。 メニューバーのデータ→区切り位置で、「スペースによって・・・」を選択して次へ。 データのプレビュー画面で、区切りたい場所をクリックして指定。 「次へ」→「完了」
お礼
ご回答ありがとうございました。 分割したい文字列を横に真っ直ぐ貼り付ける場合は良いのですが、斜めとかジグザグっぽいケースもありますので、その場合は対応できないように思えました。
- papayuka
- ベストアンサー率45% (1388/3066)
A1に zyxwv として、B1 に =MID($A1,COLUMN()-1,1) と入れて F1までコピー こんな感じです。 これが手間ならマクロでしょうか、、、
お礼
ご回答ありがとうございました。 ご指摘の方法ですと、「B1にz、C2にy、D3にx、E4にw、F5にv」にはなりませんでした。
- HAL007
- ベストアンサー率29% (1751/5869)
一括でする方法はありません。 幾つものものを1文字づつ分解してセルに入れたいなら left,mid,right関数などの文字列操作関数を使えばできます。 一行だか式をいれて後下にコピーすることで差ほど手間のかかる 作業とは思えません。
お礼
ご回答ありがとうございました。 > 差ほど手間のかかる作業とは思えません。 貼り付けるセルは毎回違ってくるのですが、それでも関数を用いれば、それほど手間をかけずに可能ですか?
お礼
ご回答ありがとうございました。 大変参考になりました。