• ベストアンサー

エクセルのマクロ 【】の中だけ抽出〒と住所を分ける

tom04の回答

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

Mp.3です。 >でも、実際に自分のやりたい事に置き換えると >エラーになってしまいます。 というコトですので、無意味かもしれませんが、前回のコードは無意味なループをしていましたので 少々時間を要したと思います。 同様の条件で↓のコードに変更してみてください。 尚、ご自身でやりたいコトに置き換えるお役に立つかもしれませんので、 コードの前提条件を載せておきます。 (1)A2(偶数行)は必ず【 と 】が含まれている。 (2)氏名の次はスペースがなくすぐに 【 がある。 (3)A3(奇数行)は 〒 から始まりすぐにハイフンを含む7桁郵便番号である。 (4)A3(奇数行)は郵便番号の次はスペース(半角・もしくは全角)があり、その後は住所となっている。 以上の規則性でコードを書いています。 Sub Sample2() 'この行から Dim i As Long, startStr As Long, endStr As Long, cnt As Long, str As String On Error Resume Next Application.ScreenUpdating = False For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row Step 2 startStr = InStr(Cells(i, "A"), "【") endStr = InStr(Cells(i, "A"), "】") cnt = cnt + 1 Cells(cnt, "B").Resize(, 2) = Left(Cells(i, "A"), startStr - 1) Cells(cnt, "D") = Mid(Cells(i, "A"), startStr + 1, endStr - startStr - 1) Cells(cnt, "E") = Mid(Cells(i + 1, "A"), 2, 8) Cells(cnt, "F") = Mid(Cells(i + 1, "A"), InStr(StrConv(Cells(i + 1, "A"), vbNarrow), " ") + 1, Len(Cells(i + 1, "A"))) Next i ActiveSheet.Columns.AutoFit Application.ScreenUpdating = True End Sub 'この行まで ※ 少しは時間短縮ができるかもしれません。m(_ _)m

osiete_01
質問者

補足

こんにちは。再度ご回答いただきまして誠にありがとうございます。 お返事が遅れ申し訳ございません。朝から四苦八苦しておりました。 単純に入れ替えて出来ると思っておりましたが、私の考えがとても甘かった様で これはやり方をお聞きしても、自分のやりたい事には 置き換える事が絶対に出来ないと思いましたので、 大変申し訳ございませんが1から説明させていただきます。 やりたい事はネットショッピングでの作業です。 大まかな説明は画像のリンクを貼るの見ていただきたいのですが、 http://www.fastpic.jp/users.php?act=gallery ネットの画面をコピーして【画像(1)】http://www.fastpic.jp/images.php?file=3812557730.jpg エクセル(2)に貼り【画像(2)】http://www.fastpic.jp/images.php?file=8222410222.jpg いらない情報を削除して並びを変え【画像(3)】http://www.fastpic.jp/images.php?file=8398550021.jpg それをエクセル(1)に貼りたい。【画像(4)】http://www.fastpic.jp/images.php?file=2006659237.jpg エクセル(1)に貼り終った状態は【画像(5)】です。http://www.fastpic.jp/images.php?file=0278749892.jpg ネットショッピングの注文情報をエクセルに移しCSVに保存して、 そのネットショッピングのシステムにアップロードしたいのですが (アップロードするのエクセルはエクセル(1)とします。)【画像(5)】の状態 注文情報はシステムのネット上にしかないので、 まず画面をコピーしてエクセルに貼り付けます。 (それを貼り付けるのはエクセル(2)とします。) ですが、アップロードする為のエクセル(1)【画像(4)】は書式が決まっておりますので 画面から貼り付けた状態のままではアップロードが出来ません。 ですので、画面からコピーした情報を、一旦エクセル(2)【画像(2)】に貼り付け、 情報の並び方をエクセル(1)と同様にしてからそれをコピーし エクセル(1)に貼り付けております。 注文情報の画面は【画像(1)】の様に1件ずつしか見る事ができませんので まとめてコピペが出来ません。 件数が少ないと、この作業も問題ないのですが 一日に100件を越す事もあるので大変です。 【画像(1)】をご覧下さい。 赤く囲まれた部分をコピーして エクセル(2)のA1のセルにペーストします。 ペーストした時のエクセル(2)の状態は【画像(2)】をご覧下さい。 ペーストした時によって違うのですが、 ネット画面の項目の紫の部分がエクセルのパターンとして紫になっている場合と 最初から色なしになっている場合があります。 それと、罫線も付いている時と付いていない時がありますが 毎回、コピーペーストしかしていませんがなぜ違うのかわかりません。 【画像(2)】は色も罫線無い場合のものです。 エクセル(2)にペーストした時に 項目が書かれている紫の部分(注文番号、注文日時、注文者情報、注文者住所、注文者電話番号)がAの列になりますがこの部分はいらないのでA列を選択して削除します。 以下、項目の上から説明させていただきます。 ◆受注番号◆ 半角で6桁ハイフン8桁ハイフン10桁の数字です。 基本は数字とハイフンのみですが、数字の右側に 【スマートフォン】【タブレット】【モバイル】【ポイント】のどれか1つが付いている時と 画像の様に2つ付いている事があります。3つ以上付いているのは無いと思います。 必要なのは数字とハイフンのみで【スマートフォン】【タブレット】【モバイル】【ポイント】が 付いている場合は取りたいです。 付いている時は数字の終わりと【 の間に半角のスペースが入っておりますが アップロードの際にスペースは不要です。 】と【 の間にはスペースはありません。 【 】が付いていない時は数字の最後にはスペースも何も付いておりません。 付いている時も 】の右側にはスペースはありません。 【スマートフォン】【タブレット】【モバイル】【ポイント】以外には見た事はありませんが この先、他に何か付いてくる事があるかもしれません。 ◆注文日時◆ 必要ないので行ごと削除します。 ◆注文者情報◆ 名前[ナマエ]とメールアドレスと性別、生年月日が入っております。 このセルをセルの書式設定で見ると 配置→文字の制御で 折り返して全体を表示するにはチェックが入っておりますが、 文字は折り返しはしたくないのでチェックを外します。 セルを結合するは反転しております。 チェックを外すと注文者情報の ・名前[ナマエ] ・メールアドレス ・性別、生年月日がそれぞれ3つのセルに別れます。 メールアドレス、生年月日の情報は必要ないので行ごと削除します。 ・名前[ナマエ] かっこの種類はこれです。→ [] ・漢字と[の間には半角スペースが入っております。 ・漢字もフリガナも苗字と名前の間のスペースは半角です。 注文者情報と書かれた項目の横に?のマーク黄色の○で囲みました。)も付いてしまうので オブジェクトにしてから削除してます。 外国人の場合は漢字の部分が英語だったり、苗字と名前の間にスペースがなかったり フリガナもない場合もあります。 フリガナもない場合は[]自体がありません。 このケースは稀ですので手入力をしようと思います。 ◆注文者住所◆ 〒マークはいりません。 〒マークと数字の間に半角のスペースあり。 数字の最後と住所の始めに半角のスペースあり。 どちらもスペースは不要です。 上記の作業をするとエクセル(2)のセルは セルA1 半角で6桁ハイフン8桁ハイフン10桁の受注番号 セルA2 名前 [ナマエ]の注文者氏名 セルA3 〒 000-0000 都道府県からの住所 セルA4 電話番号 が残ります。そこから【画像(3)】の状態にします。 【画像(3)】の行をコピーして エクセル(1)にペーストして【画像(5)】の状態にします。 A2→ 6桁ハイフン8桁ハイフン10桁の半角受注番号のみ。 B2→ 注文者氏名の漢字部分の苗字と名前(苗字と名前の間には半角スペースを入れる。) ※Bの列の見出しに「商品名」と書かれているにもかかわらず、  注文者氏名を入れますが間違っているわけではございません。 C2→ 同じく注文者氏名の漢字部分の苗字と名前(苗字と名前の間には半角スペースを入れる。) D2→ 注文者氏名のカタカナ部分の苗字と名前のみ。([ ]はいらない。苗字と名前の間には半角スペースを入れる。) E2→ 注文者電話番号半角数字とハイフンのみ。 F2→ 注文者郵便番号(〒マークなし7桁の半角数字とハイフンのみ。) G2→ 都道府県からの注文者住所。 ここまでの作業を作業(1)とさせていただきます。 セルH1~セルL1 送付先住所については以下で説明させていただきます。 次に画像(1)の下の方に緑で囲まれた部分がありますが、 こちらは上の住所と電話番号が違う場合にのみ、行う作業でこちらを作業(2)とさせていただきます。 緑で囲まれた部分の〒マークから電話番号の終わりまでをコピーしてエクセル(2)にペーストします。 郵便番号、住所、電話番号がそれぞれのセルに入ります。 〒マークは不必要。マークと数字の間には半角スペースありですが7桁の半角数字とハイフンのみ必要。 住所はスペースも何もないのでそのまま使えます。 電話番号は半角数字とハイフンのみ必要。 TEL: は必要ありません。: と数字の間には半角スペースあり。 TEL: 全角は半角かよくわかりません。そのままペーストしました。 こ入力したいセルと内容は以下の通りです。 H2→ 何も入力しません。 I2→ 何も入力しません。 J2→ 送付先電話番号半角数字とハイフンのみ。 K2→ 送付先郵便番号(〒マークなし7桁の半角数字とハイフンのみ。) L2→ 都道府県からの送付先住所。 そして、エクセル(1)へペーストして。 この繰り返しです。 【画像(5)】では一件しか情報が入っていませんが この繰り返し行って下にどんどん入力して行きたいです。 出来ればボタンでポチっとで終わってくれるととっても嬉しいです。 説明不足があるかもしれませんが、どうぞ宜しくお願いいたします。 エクセル(1)と(2)は別のエクセルデータです。 別にしている理由はエクセル(1)のデータがおかしな事になるのが怖いからです。 >(1)A2(偶数行)は必ず【 と 】が含まれている。 はい。名前 [ナマエ] で入力されており苗字と名前の間には半角スペースが入っております。 >(2)氏名の次はスペースがなくすぐに 【 がある。 いいえ。半角スペースは1つ入っております。 >(3)A3(奇数行)は 〒 から始まりすぐにハイフンを含む7桁郵便番号である。 〒 から始まっております。〒の右に半角スペース1つあり。ハイフンを含む7桁郵便番号であります。 >(4)A3(奇数行)は郵便番号の次はスペース(半角・もしくは全角)があり、その後は住所となっている。 数字の最後と住所の始めに半角のスペース1つあり。 スペースのあとは都道府県から始まる住所です 長くなりましたがお願いいたします。

関連するQ&A

  • エクセルで縦並びのデータを横1本にしたい

    楽天RMS等でよくあるデータの形ですが下記の様なデータを横並びにまとめたいと考えています。 150-0001 東京都渋谷区神宮前番地 山田ビル1F 山田太郎 00-0000-0000 すごい石鹸A 1個 150-0001 東京都渋谷区神宮前番地 山田ビル1F 山田太郎 00-0000-0000 ミラクルシャンプー 1個 150-0001 東京都渋谷区神宮前番地 山田ビル1F 山田太郎 00-0000-0000 ミラクルリンス   2個 何か良い手はありませんでしょうか。 こんなイメージです。  ↓ 150-0001 東京都渋谷区神宮前番地 山田ビル1F 山田太郎 00-0000-0000 すごい石鹸A 1個  ミラクルシャンプー 1個 ミラクルリンス   2個 よろしくお願い致します。

  • エクセル・1つのセルに入った漢字(カナ)の分け方

    エクセルにお強い方、教えてください>< A1のセルに、 山田 花子(ヤマダ ハナコ) とあるとします。 私は B1のセルに 山田 花子 C1のセルに (ヤマダ ハナコ) と、分けてデータ化させたいのですが、 どのようにマクロを組めばよいでしょうか? また、分け終わったC1の(ヤマダ ハナコ)に 置換を使って( )をとって、 カナ を かな に直すため、 PHONETICと書式のふりがな機能を使って直しても データにエラーは起きずに処理できるでしょうか? 最終的なデータとして A1セル→山田 花子(やまだ はなこ) B1セル→山田 花子 C1セル→やまだ はなこ としたいのです。 ご存知の方いらっしゃいましたら、教えてください。 宜しくお願い致します。

  • エクセルで検索&コピー&貼り付け

    セルに入力したデータを検索し、該当したデータ(重複データはありません)の行全体をコピーし、指定した場所に貼り付けることは可能でしょうか? 例: 「東京都」入力 ↓ 15行目にあったとすると「15 東京都○○区○○町○○○ー○ 山田太郎」コピー ↓ 指定したセルにペースト

  • EXCELのマクロでテキストを読み込む方法

    EXCELのマクロを使って、テキストファイルから、ある文字列を検索し、コピーしEXCELのシートのセルにペーストするマクロの書き方をご存知の方は、ご教示願います。 例えば、テキストファイル中の「dog」という文字列を検索して、EXCELの決まったセル(A、1)にコピペするというマクロです。 よろしくお願い申し上げます。

  • エクセルの質問です

    エクセルの質問です。   A   B   C    D    E    F 1         日付  A車  B車  C車 1         7/1   山田      太郎 2         7/2       太郎 3         7/3            花子 4 A車⇒ ■■ 5 B車⇒ ●● 6 C車⇒ ▼▼ 上記の表があります。 B4,B5,B6の各セルに A車、B車、C車の最終使用日付を自動で入れるようにしたいのですが可能でしょうか? D1:F3に入る名前はランダムになります。 ■■⇒にはD列の最終使用日 ●●⇒にはE列の最終使用日 ▼▼⇒にはF列の最終使用日 が入るようにしたいのです。 出来れば関数のみで出来ればと思ってるのですがもしマクロを使うならそれでもと思っています。 下手な質問ですがよろしくお願いします。

  • Excel マクロ 特定の列のみカット&ペースト

    Excel マクロ初心者です。IF文を使用しているのですが上手くいきません。 A列が「次郎」の時、1つ上の行のB~E列をカットし次郎の行へペースト、B列が空白の行削除・A列に山田を追加する。 例 A列|B列|C列|D列|E列 花子|a|あ|か|g 太郎|c|う|き|g 次郎| | た | | 三郎|e|お|く|g マクロ後 A列|B列|C列|D列|E列 山田花子|a|あ|か|g 山田次郎|c|う|き|g 山田三郎|e|お|く|g 色々と調べて試してみたのですが知識不足の為、上手くいかず・・・全文載せていただけると、とても助かります。

  • エクセルのマクロで教えてください

    すみません。もし教えていただける方がいらっしゃればお願いいたします。以下のようなエクセルのデータがあるとします。 この中で,同じ担当者の最新の日付の行のみを抽出したデータのシートを作りたいのです。以下のデータであれば,2,3,5,6,8,9行目を削除するマクロを作成したいのですが,どのようなマクロを作成ればよいのでしょうか。 A     B    C 1  担当者   日付   金額 2 たなか   8/1   10,000 3 たなか   8/10   15,000 4 たなか   8/21   20,000 5 さとう    8/2    8,000 6 さとう    8/12   12,000 7 さとう    8/22   15,000 8 やまだ   8/1     9,000   9 やまだ   8/7    12,000 10やまだ   8/15   18,000

  • Excelマクロ 統合セルの連続コピペ

    Excelマクロの初心者です 現在以下のことをマクロで行おうと思ってます。 ファイルAのシートAのC11に入ってる文章を同じファイル内にあるシート2のA46:F51の統合してあるセルにコピペします。 そして次にファイルAのシートD11に入ってる文章をシート3のA46:F51の統合してあるセルにコピペします。 このような作業をファイルAのAC11まで続けたいです。 どなたか教えて頂けないでしょうか? よろしくお願いします。

  • Excelで住所録を作る

    Excelで住所録を作っています。一つのセルに名前を入力したものを、姓と名で分けてとなりの列に表示させるには、どうしたら良いのでしょうか?手入力で分けるには、データが多すぎるので、関数が使えたらいいと思います。名前のデータから苗字だけを取り出す関数はありますか? 表 氏名     姓   名 山田太郎   山田  太郎 こんな感じの表を作りたいです。 Excel2002を使っています。 よろしくお願い致します。

  • Excelのマクロ『困ってます!』

    Excelで、以下のような機能を持ったマクロをつくりたいのですが、情けないのですが全くできません。 わかる方、どうかよろしくお願いいたします。 Sheet1のA1~D1の値(例では、東京、練馬区、○○、△△)を、 全て「含む」Sheet2のセルに目印をつけ(例は隣のセルに「○」と入力)し、 それが終わったらSheet1のA2~D2の値(例では、東京、練馬区、○○、□□)で・・・ の繰り返しです。 あくまでSheet1の値を全て「含む」ものが対象なので、Sheet2の5行目のように、 余計な値(例では★)が混じっているものも対象としたいです。 例: [Sheet1] 1 |東京都|練馬区|○○ |△△ | 2 |東京都|練馬区|○○ |□□ | 3 |東京都|目黒区|●● |■■ | 4 |埼玉県|川口市|◇◇ |×× | [Sheet2] 1 | |東京都港区・・・・ 2 | |東京都練馬区・・・・・ 3 | |東京都練馬区○○◎◎ 4 |○|東京都練馬区○○△△ 5 |○|東京都練馬区★○○★□□ 6 | |東京都練馬区★★□□ 7 |○|東京都目黒区●●■■ 8 |○|埼玉県川口市◇◇×× 9 | |神奈川県・・・・・