• 締切済み

マクロについての質問です。

マクロのことで質問です。まだ初心者なので調べてもわからず、うまくいかないのでおしえてください。 自分は郵便局の市町村合併のリストをエクセルでまとめたいのですが、http://www.post.japanpost.jp/cgi-zip/zipcode.php?pref=7&city=1072010&addr=%E6%97%AD%E7%94%BA&cmp=1&mode=list ←これを例にすると、まず、自分がやりたいことは、全一覧の下の行から(横の範囲は郵便番号から変更前の住所・郵便番号 )の値を一番下まで全てドラッグしコピーし、自分のエクセル(A1)に貼り付けます。その際、A列にある郵便番号の数字の行だけを残してそれに該当しない行は削除したいのです。しかも、データが無くなるまで(範囲指定ではなく)それを行いたいのですが、どういった関数や式を使用すればよいのですか?教えてください。

みんなの回答

回答No.4

ご質問内にあるURLのページを、"ア行"と書いてある行以降をコピーして そのままエクセルに貼り付けると、必要なデータ行は2セルずつ結合され、 それ以外は単行ですので、結合されていないセルだけを選択して削除すれば よいのではないでしょうか。 Sub Test()  Dim rng, LST, i  Set rng = Cells(1, 1)  LST = Range("A65536").End(xlUp).Row  For i = 2 To LST   If Cells(i, 1).MergeCells = False Then _             Set rng = Union(rng, Cells(i, 1))  Next  rng.Select  Selection.EntireRow.Delete End Sub

ange4
質問者

お礼

ありがとうございました。とても役にたちました。

全文を見る
すると、全ての回答が全文表示されます。
  • pulsa
  • ベストアンサー率57% (34/59)
回答No.3

データの最終行の値の求め方 Range("A1").CurrentRegion.Rows.Count Range("A1").SpecialCells(xlCellTypeLastCell).Row Range("A" & Rows.Count).End(xlUp).Rows このどれかですかね それぞれ、意味が違いますが、大体同じ値が返ると思います また、それぞれに一長一短があるので、どれが良いと言うのもないんですが、最後のヤツは良く見かけます 個人的には、最初ヤツが好きですね 詳しくはWebでそれぞれを比べてもらって、今回のマクロにベストな方法を選択して下さい あと、ループはdo Loopだけではありません 今回のように、開始と終了の数が使える場合は、For Nextを使うのが一般的です 質問本体で行くと、No.1の方の方法を取るのが楽かもしれませんね あくまで「俺ならこうする」ですが >数字の行だけを残してそれに該当しない行は削除したい コレを逆にフィルタリングします(オートフィルタ) 見出し(1行目)とA列に数字以外が入っている行が表示されているようにします そこで、A列の2行目以下データがある行+1までを行ごと削除します コードだとこんな具合 Range("A1").AutoFilter Field:=1, Criteria1:=">=a" '文字のみの表示 Range("A2", Cells(Range("A2").CurrentRegion.Rows.Count + 1, 1)).EntireRow.Delete 'A2から連続したデータの最終行+1(連続していなければ他の最大行を取る関数を使っても良い) ActiveSheet.AutoFilterMode = False 'オートフィルタ解除 この3行は結構強烈です ">=a"で文字(数字以外)をフィルタリングできます EntireRowは選択セルを含む行の事です フィルタリングした状態のRangeに対して作業を行うと、表示中のセルのみに反映するので、表示中セルに対して削除を反映 つまり表示中Rangeを削除 AutoFilterMode = False でオートフィルタを解除します オートフィルタはトグルと思っている方が多いと思いますが、本当はコレで解除します コメントに書いた通り、最大行が上手く取れないときは、他の関数と入れ替えてみてください じゃ

ange4
質問者

お礼

ありがとうございました。お陰でなんとか希望する配列になりました。

全文を見る
すると、全ての回答が全文表示されます。
  • siroakaki
  • ベストアンサー率47% (21/44)
回答No.2

違っていたら、すみません。 A列で値がある行を残す=A列で空白行を除くですかね。 A列で分類をかけてみたら、いかがでしょう。

全文を見る
すると、全ての回答が全文表示されます。
  • noah7150
  • ベストアンサー率46% (116/251)
回答No.1

やりたい事が今一解りませんが、文字のある行のみ複写できれば良いのでしょうか? 1行目にタイトルを付けてデータ->フィルタ->オートフィルタ で該当カラムを空白以外とし表示させ、行欄の角をクリックし複写 別のシートに貼り付けるとフィルタで隠された行は複写されませんよ

ange4
質問者

補足

回答ありがとうございます。 そうです。A列に文字のある(数字)行のみを残すプログラムをVBAで作りたいのですが、どうすればよいですか?また、合併情報のデータの数は決まっていないので、毎回貼り付けたデータの最後まで読んで削除したいです。だから、DO while LOOP などを使用して行いたいのですが、貼り付けたデータの最後まで読むという関数などないでしょうか? 専門用語などがまだ勉強不足なため、うまく表現できませんがよろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 竹島の郵便番号についての質問です。

    郵便番号検索にて 竹島の郵便番号が検索されません。 郵便局のこのサイトで竹島の郵便番号が検索できないのは手抜かりではありませんか? 実際は、〒685-0000 島根県 隠岐郡 隠岐の島町 竹島ですよね。 http://www.post.japanpost.jp/cgi-zip/zipcode.php?pref=32&city=1325280&cmp=1

  • 郵便番号と住所の対応表

    現在住所録で使っている郵便番号と住所の対応表が 少し古いみたいなので最新版をDLしたいと思います。 添付画像のようなものが欲しいのですが、 下の郵便局のサイトからDLしたものは全然違うものでした。 http://www.post.japanpost.jp/zipcode/download.html 添付画像のようなデータはどこで入手できるのでしょう。

  • エクセルマクロでの質問です

    エクセルマクロで次のような事をしようと思っています。シートAとシートBがあったとします。シートAには2列数十行のリストがあり、コマンドボタンを配置しています。リストの任意のデータを範囲指定して、ボタンを押すと、シートB上にコピーされるといったものです。 そこで分からないのは、範囲指定した状態でコマンドボタンを押した際に、指定した範囲のRangeを取得する方法です。どなたかお分かりの方いらしたら宜しくお願いします。

  • エクセルのマクロ

    あるエクセルのファイルにLIST(A列に呼びだすエクセルファイル名、B列からD列に呼びだしたエクセルに貼り付ける文字列があり、それが100行程度ある)があり、そのLIST A列に書かれているエクセルファイルを開き、その開いたエクセルファイルのある特定のセルにB列からD列にあるセルをそれぞれに貼りつける作業を繰り返すようなマクロはできないでしょうか? [流れ] LISTに書いてあるエクセルファイルを呼び出す→文字列を貼りつける→保存(できれば名前を変えて保存(その場合は、LISTのE列に名称を記載)→閉じる→次のLISTのエクセルファイルを開く→それをLISTの最後の行まで終わるまで繰り返す。 よろしくお願いします。

  • 印刷マクロを教えてください。

    マクロは初心者です。よろしくお願いいたします。 エクセルで、列AからHまでにデータを入力しています。 また、Aの1から、Aの3までは行タイトルとしています。 列A4から下の行にNo1~の順番号をいれていますが、 例えばNo20からN045までのデータ分だけを印刷したい時など、指定したNoの範囲のデータだけを印刷出来るようなマクロがあれば教えてください。 印刷Noの指定は、行番号でもかまいません。 これまでの質問で印刷関係をみてみましたが、多すぎてわかりませんでした。どなたかよろしくお願いいたします。

  • 郵便番号検索システム

    ↓のような郵便番号検索システムを作ろうと思っています。 http://www.yu-bin.net/ データ(http://www.post.japanpost.jp/zipcode/dl/oogaki.html)をDBに取り込むことは出来ましたが、カテゴリわけなどどのようにすればいいのかが疑問です… 参考URLなどありましたら教えていただければ嬉しいです。

    • ベストアンサー
    • PHP
  • EXCEL2003でマクロを作りたいのですが教えて下さい。

    エクセル2003を使っています。 マクロの初心者なので、 下記のようなマクロの作り方を詳しく教えて下さい。 他にも簡単な方法があればお願いします。     <シート1>               <シート2>   A     B   C  D    A    B  C  D 1 名前 郵便番号 住所 金額   1 名前     2    以下、データ          2 郵便番号 3                    3 住所    ・                   ・ 10                   10           金額                          <シート1>にはA1~D1までデータがあります。(50行) <シート2>の1ページ目に<シート1>の1行目のデータを入れたいです。 <シート1>は全部で50行のデータがあり、 <シート2>は1~10行までを1ページとし、50ページ作りたいです。 いろいろ調べてみたのですが、わからなかったので 説明不足かもしれませんが、よろしくお願いします。

  • Opera Serch.iniに日本郵便を追加したいのですが。

    Opera Serch.iniに日本郵便(郵便番号検索と住所検索)を追加したいのですが。上手く行きません。ご存知の方教えて頂けませんか。 検索の追加では動きませんでした。 http://www.post.japanpost.jp/zipcode/index.html OS:VISTA Opera Ver9.23

  • 2行にまたがったリストを1行に

    よろしくお願いします エクセルのリストで2行に一つのリストが入っているのですが、 普通に1行に一つのリストにする方法を教えて下さい すいません図を書こうと思ったんですがうまく書けませんでした A名前、B住所、C電話番号、D郵便番号などの住所録なのですが、 すべて1と2の2行を結合したような形で2行に1件入ってます 1行にする方法ご存じの方、教えて頂けないでしょうか

  • Excelでこのようなマクロを作りたい。

    Excelで列のA,B,Cがあります。 (列A,行1)のカラムには、果物というカラムを入れ、 (列B,行1)のカラムには、数量というカラムを入れ、 (列C,行1)のカラムには、値段というカラムを入れます。 列Aの果物というカラムの下に(すいか、バナナ、りんご)という 果物のリストがあり、列Bの数量というカラムの下に(1、2、3)という 数量のリストがあり、列Cの値段というカラムの下に(100、200、300)という値段のリストがあります。列Aのリストから、果物ではない。すいかをリストから選んだ場合に、列B,列Cの値を入力できないようにするか、列B,列Cに"-"が追加されるようなマクロを作りたいのですが… IF文を使うのはわかるのですがリストからの場合はどのように作ったら よいかわかりません!どなたか、教えてください! また、参考URLなどお願いします。

専門家に質問してみよう