アプリ版:「スタンプのみでお礼する」機能のリリースについて

メモ帳の形式で保存されている住所や連絡先があるのですが、これをエクセルの形で整理したいのですが、やり方が分かりません。具体的に言うと、現在メモ帳で

お客様名
山田太郎
お客様住所
東京都豊島区池袋
お客さま連絡先
〇〇〇ー〇〇

お客様名
田中次郎
お客様住所
東京都豊島区南池袋
お客さま連絡先
〇〇〇ー△△

お客様名
鈴木三郎
お客様住所
東京都豊島区東池袋
お客さま連絡先
〇〇〇ー××


と表示されているものを、エクセルにセル区切りで、

お客様名|お客様住所    |お客様連絡先
山田太郎|東京都豊島区池袋  |〇〇〇ー〇〇
田中次郎|東京都豊島区南池袋|〇〇〇ー△△
鈴木三郎|東京都豊島区東池袋|〇〇〇ー××

という様にエクセル上で表示させたいのですが、どのようにすればいいのか分かりません。どなたか助けてください。どうかお願いします。

A 回答 (7件)

こんな感じでどうでしょう?



Sub sample()
Dim r, c As Integer
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
With fso.GetFile("D:\office\excel\Class\PVQ.txt").OpenAsTextStream(1)

r = 2
On Error Resume Next
Do Until .AtEndOfLine
For c = 1 To 7
Cells(r, c) = .ReadLine
Next
r = r + 1
Loop

Range("A:A,C:C,E:E").Delete
Cells(1, 1) = "お客様名"
Cells(1, 2) = "お客様住所"
Cells(1, 3) = "お客さま連絡先"

.Close
End With
Set fso = Nothing
End Sub
「メモ帳からエクセルにセル区切りで表示させ」の回答画像4
    • good
    • 0

No.6です。


連投失礼します。前回回答に申し添えます。
前回回答のshee1に作成さた表はあくまでも関数で表示されているものですがら、固定化する場合は表全体を「コピーして値貼付け」など(※)の手順で数式を消去してください。
※メモ帳を使うなら表全体をコピーしてメモ帳に貼付けし、貼付けされたものを再度コピーしてEXCELに貼り戻す。
    • good
    • 0

まず、シートが2つあるEXCELブックを用意します。



仮にsheet1,sheet2という2つのシートがあるとして、sheet2を「元データ」という名前に変更します。

メモ帳のデータをコビーして、「元データ」シートのA1セルを選択して貼り付けします。すると添付画像①のようになります。

次にsheet1のA1セルに

=INDEX(元データ!$A:$A,2+(ROW(A1)=1)*6+(ROW(A1)-2)*7+(COLUMN(A1)-1)*2)&""

という数式を記述し、右方向へC列までコピーします。

続いてA1~C1セルを下方向へ、データが表示されなくなるまでコピーすれば、添付画像②のような表が完成します。

但し、メモ帳にあるデータは、空白行を含めて7行でワンブロックとし、1.お客様名(見出し)、2.お客様名、3.お客様住所(見出し)、4.お客様住所、5.お客さま連絡先(見出し)、6.お客さま連絡先、7.空白行

という順番に整然とならんでいるものとし、行の欠落、1項目の複数行使用(例えば、お客様名が2行になっているetc.)などはないものとします。
「メモ帳からエクセルにセル区切りで表示させ」の回答画像6
    • good
    • 0
この回答へのお礼

ありがとうございます。データが均一ではなくて苦戦しています。(住所が2行だったり記事があったりと・・・。お知恵お出していただきありがとうございます!

お礼日時:2023/02/26 19:29

No,4ですが…



With fso.GetFile("D:\office\excel\Class\PVQ.txt").OpenAsTextStream(1)

のGetFile("ファイルパス")はご自身のファイルパスをいれてください。
    • good
    • 0

有識者なら関数やマクロなどで対応できるでしょうが、私なら


Wordに貼り付けて整形します。

手順:
メモ帳の内容をWordに貼り付け。
全選択して、[挿入]タブの[表▼]→[文字列を表にする]を選択。
空白行を含め、[列数]を[ 7 ]にして[文字列の区切りを[段落]で
[ OK ]します。これで1行が1名分になります。
奇数列がお客様名、お客様住所、お客様連絡先と空白列になり、
その列を削除することで必要な部分のみが残ります。
これをコピーして、Excelに貼り付ければ利用できます。

添付画像は、整形したWordの表です。
「メモ帳からエクセルにセル区切りで表示させ」の回答画像3
    • good
    • 0

こんばんは



方法はいろいろ考えられると思います。
1)マクロで読み込む方法
 マクロを作成する必要がありますが、一発で読み込めます。(再利用可能)
2)クエリで読み込む方法
 クエリを作成する必要がありますが、まとめて読み込めます。(再操作可能)
3)テキストで読み込んで、関数等で整形する方法
 特別な準備等は不要ですが、若干手間が掛かります。


以下は、プログラムやクエリを作成する必要のない3)の方法の例です。
データは、ご提示のように「定型のフォーマット」で保存されており、例外等はないものと仮定しています。
(データに欠落があったり、異なる規則の場合は関数式を変える必要があります)

(1)「データ」」-「データの取得と変換」-「テキストまたはCSVから」で
 対象のテキストファイルを指定して、シートにテキストを読み込みます。
 (添付図のA列のように読み込まれます)
(2)仮に、C:E列に整形するとして
 添付図では、C2セルに
=IFERROR(INDEX($A:$A,AGGREGATE(15,6,ROW($A:$A)/($A:$A=C$1),ROW(A1))+1),"")
 の式を入力し、右方、下方に適当な範囲にフィルコピーしています。
(3)C:D列は関数値ですので、固定値化したい場合は
 C:D列を選択し、コピー、値をペーストで固定値化します。

※ 365環境などであれば、FILTER関数を利用することで、もっと簡単な式で可能です。
※ データ読み込み時にクエリで編集すれば、目的の形式で読み込むことも可能でしょう。
「メモ帳からエクセルにセル区切りで表示させ」の回答画像2
    • good
    • 0

じゃあ各項目の間に「,」を入れる。


これをエクセルで読み込むと「カンマで区切られた・・」という表示が出て読み込むかどうかが決定出来たはずです。

お客様名
田中次郎
お客様住所
東京都豊島区南池袋
お客さま連絡先
〇〇〇ー△△



お客様名,田中次郎,お客様住所,東京都豊島区南池袋,お客さま連絡先,〇〇〇ー△△
お客様名,鈴木三郎,お客様住所,東京都豊島区東池袋,お客さま連絡先,〇〇〇ー××

という感じで、カンマ区切りにすれば、読み込めるよ。
ただ、加工が面倒くさいけど・・。
    • good
    • 0

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