次の1・2を「簡単な方法」で実現できる操作を詳しく説明できる方、お願いします。200P進呈!

1)Excelで、A1、A2・・・と縦のセルに単語が1個ずつ入っています。これを単語間にスペースを入れて、メモ帳(ワード等何でもいいです)に1行で貼り付けする。セルの数は100以上を想定するので、「=A1+A2・・」のように設定して貼り付けなんてのは論外。
(例)セルA1に「私は」、セルA2に「男です」と入っている場合、メモ帳に「私は 男です」と改行なしで貼り付ける。

2)1と逆に、テキストファイルで1単語ずつスペースで区切られている1文を、ExcelのA1、A2・・・と縦のセルに1個ずつさっと貼り付ける。

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2008/12/03 00:36:36
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答6件)

id:hissssa No.1

回答回数428ベストアンサー獲得回数129

ポイント10pt

秀丸エディタ等で正規表現を使えるテキストエディタを使えばですが・・・

①その処理をしたい範囲を選んでコピーし、新規に開いたエディタに貼り付ける。その後、エディタの文字列置換で正規表現を有効にし、改行コードをスペースに置換する(置換元に"\n"、置換先に" "を記述)。

これで全体がスペース区切りの1行になるので、それをコピーして目的のWord等に貼り付ける。

②その処理をしたい行を選んでコピーし、新規に開いたエディタに貼り付ける。その後、エディタの文字列置換で正規表現を有効にし、スペースを改行コードに置換する(置換元に" "、置換先に"\n"を記述)。

これで全体が単語毎に改行されるので、それをコピーしてExcel上で先頭にしたい場所に貼り付ける。

これで一応いけますよ。

id:keronimo

間違ってはいませんが・・・

2008/12/03 00:26:31
id:SALINGER No.2

回答回数3454ベストアンサー獲得回数969

ポイント20pt

Excelからクリップボードに書き込むマクロとクリップボードから読み込むマクロを作ってみました。


まず、以下のマクロを使うためにMicrosoft Forms 2.0 Object Libraryの参照設定をしてください。

http://pc.k-solution.info/programming/vba/excelvba1.aspx


1)選択したセルから下に空白が出るまでのセルを、間に空白を入れて連結してクリップボードにコピーするマクロ。

Sub setCB()
    Dim r As Long
    Dim str As String
    Dim myDO As New DataObject
    str = Selection.Value
    r = Selection.Row + 1
    While Cells(r, Selection.Column).Value <> ""
        str = str & " " & Cells(r, Selection.Column).Value
        r = r + 1
    Wend
    myDO.Clear
    myDO.SetText str
    myDO.PutInClipboard
End Sub

2)クリップボードの文字列を空白でばらばらにして、選択したセルから下方向に貼り付けるマクロ。

Sub getCB()
    Dim myDO As New DataObject
    Dim myCF As Variant
    Dim str As Variant
    Dim i As Integer
    
    myCF = Application.ClipboardFormats
    If myCF(1) = True Then Exit Sub
    If myCF(1) = xlClipboardFormatText Then
        myDO.GetFromClipboard
        str = Split(myDO.GetText, " ")
        For i = 0 To UBound(str)
            Selection.Offset(i, 0).Value = str(i)
        Next i
    End If
End Sub

それぞれのマクロにショートカットを割り当てればより便利に使うことができると思います。

id:keronimo

このマクロ使えばいいんでしょうけど、この作成自体が「簡単な方法」ではないですよね。

2008/12/03 00:25:43
id:grape2 No.3

回答回数22ベストアンサー獲得回数2

(1)を回答  ((2)は回答なし)

  セルB1に「=" "」を入力。 セルC1に「=A1&B1」を入力。  B1、C1をコピー&ずーっと下の行まで選択してペースト。 C列全体を選択&コピー。 メモ帳を開く&ペースト。 メモ帳でCTRL+Aしてコピー。 ワードを開く&ペースト。 改行をはずす。(はずし方は: http://www.relief.jp/itnote/archives/000269.php)。

id:keronimo

わからん場合は回答しないように。

(1)面倒です。

2008/12/03 00:24:21
id:hengsu No.4

回答回数187ベストアンサー獲得回数10

Excelだけで済ませる方法。

あまり、ささっという感じではないですが。

①Excelで縦の列を選択コピーしてから、「形式を選択して貼付け」を選んで、下にある「行列を入れ替える」のオプションにチェックを付けて、空白のシートにペーストする。そのシートをテキストで保存する。

②テキストを、Excelで開く際に、区切りをスペースにして、開いて、上と同じく、コピーペースとの際に、行列を入れ替える。

id:keronimo

6の方に近いですが、結果が違いますよね。

2008/12/03 00:27:13
id:h_i No.5

回答回数2ベストアンサー獲得回数0

やり方はいろいろありますが、次のようなものはいかがでしょうか?(作業時間、約1分ぐらい)

※手順2はExcel2007の場合


1)手順1:  B2 に「=A1&" "&B1」を入力

  手順2: B2をB列全体にコピー(再下段が求める形式) 

 

2)手順1: テキストをExcelにコピー

  手順2: データ → 区切り位置 で横に並べる

  手順3: コピー → 行列を入れ替えて貼り付け

id:kamicup No.6

回答回数9ベストアンサー獲得回数0

ポイント300pt

僕なら、秀丸エディタに貼り付けて正規表現置換かマクロで整形する。

が、秀丸禁止なら・・・

まずExcelでコピーした後、別のExcelシート(作業用)に「形式を指定して貼り付け」る。このとき、オプションで行と列を入れ替えて貼り付け。そしたら、その結果を再度コピーして、メモ帳に貼り付け。これでタブ区切りの一行データになると思うので、タブ文字を空白に置換して完成。(置換ダイアログのテキストボックスにタブ文字を打てなければ、どこか別のメモ帳とかで打ったタブ文字をコピーしてきて貼り付ける。)

逆方向は、順番逆にするだけね。

id:keronimo

おお!完璧です。タブの考慮が光っています。

2008/12/03 00:34:48
  • id:SALINGER
    コードをコピーして貼り付けるだけなので他の回答よりも簡単なのですが・・・。しかも一度作れば何度でも使えます。
  • id:hengsu
    おお、タブは忘れてました。良い回答ですね。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません