プロが教える店舗&オフィスのセキュリティ対策術

Excelで、住所録を元に地域ごとの振分けをしたいと考えています。

1.ここにいろんな地域のExcelデータの住所録があります。

2.まず事前にa.千代田区、中央区 b.品川区、港区、目黒区 c.横浜市、 d福島県郡山市、などの振分け規則表を作っておく。

次にExcelデータの住所録と先ほどの表を照らし合わせて、a地域、b地域、c地域、d地域、という様に別々のファイルに振り分けたいのです。

アドバイスよろしくお願いします。

A 回答 (6件)

今コピーして試してみましたけど、うまくいってますねぇ・・・


なんでだろ?
作ったヒトから注意いくつかです。
一応Windows XPで動作確認とれています。

・1と2を同じファイル名にしていませんか?
 別名じゃないとうまいこと動かないです
・フォルダ指定はできないです
 絶対パスにしろ相対パスにしろ、かならず同じフォルダにつのファイルがある状態で開始、同じフォルダに3つめのファイルができます
・拡張子も書いてください・・・
 (拡張子不要に作れば良かったなぁと今更後悔)
    • good
    • 0
この回答へのお礼

いろいろやってみましたが、結果が変わらないのでもう一度教えてください。当方が理解した使い方は以下の通りです。

-------------
1.振分け元ファイル、というのは用意してある住所録と理解しています。
(例)住所.csv
A(住所) B(名前) C(年齢)
東京都千代田区1-2-3.... 山田太郎 15
東京都千代田区4-5-6.... 田中一郎 16
神奈川県横浜市7-8-9.... 飛鳥エイジ 17

2.振分け先ファイル、というのは作業後作られるファイルの名前でしょうか
千代田区.csv
3.抽出する文字、を「千代田区」と入力する。

これで実行すると、初めの二行など、千代田区の住所のみが集まった千代田区.csvファイルが作られる。

-----------------------------------
誤解がどこにあるでしょうか。教えてください。

お礼日時:2008/05/26 17:06

テストバッチ一応できたので試してみてください。


スペース区切り、カンマ区切りのCSVに対応しています。
バッチファイルなので拡張子は.batにしてくださいね

一応8列目(excelで言うH列)までの読み込みに対応しています。
  %%A(略)%%H
  %1(略)%8
の二つを書き換えれば、9列まで対応できます。

結果連絡お待ちしてます

===(ここから)===
@echo off

rem 設定部分。キーボード入力により設定される
echo このバッチはCSVファイルから特定行を抽出するスクリプトです。
echo このバッチファイルと同じフォルダに振り分け元CSVファイルを保存してください。
echo.
echo [設定]
echo.
echo 設定を行います。
echo 1) 振り分け元ファイル名を拡張子も含めて入力してください
set /P fromFile=
echo 2) 振り分け先ファイル名を拡張子も含めて入力してください
set /P toFile=
echo 3) 抽出する文字を入力してください。
set /P words=

rem 注意喚起
cls
echo [注意]
echo 1) 振り分け判断する列はA列に移動させてください。
echo.
echo 準備は出来ましたか?
pause

rem 1行読み取り振り分け開始命令
for /F "delims=, " %%A IN (%fromFile%) DO (call :SUB %%A %%B %%C %%D %%E %%F %%G %%H)

rem 3秒待って終了
echo 作業完了。
ping -n 4 -w 1000 127.0.0.1 > nul
exit

rem 振り分け判断部
:SUB
if %1==%words% (echo %1,%2,%3,%4,%5,%6,%7,%8 >> %toFile%)
===(ここまで)===
    • good
    • 0
この回答へのお礼

こんなに丁寧な回答を本当にありがとうございます!!
取り急ぎ現状報告です。

1.頂いたプログラムを「メモ帳」でfuriwake.batと保存しました。
2.csvファイルと同じフォルダに入れてfuriwake.batを実行。
3.dos窓が開かれて、問われる条件にしたがって入力しました。
4.「作業完了」の表示。

しかし、新しいファイルがみあたりません。こちらのcsvファイルの作り方にどこか問題があるのでしょうか?
A列に住所が来るように並べ替えみたりしていますが、試行錯誤中です。でもありがとうございます。

お礼日時:2008/05/26 10:29

>160ほどのエリアに振り分けたい


VBAの力を借りるしかないでしょう。
とりあえず、別シートのA列に160ほどのエリアが入っているとして
1、マクロの記録
  1、オートフィルター オプション 千代田区 を含む
  2、行を選択、コピィ
  3、新しいブックにコピィ
  4、名前をつけて保存
  を実行
2、マクロの記録の終了
3、VBエディターで記録した内容を編集
Sub Macro1()
GYOU = 2
Do While Sheets("Sheet1").Cells(GYOU, 1) <> ""
'マクロで記録された内容
' Selection.AutoFilter Field:=1, Criteria1:=Cells(GYOU, 1).Value
'マクロで記録された内容に上の行に似た部分あると思います。
 '最後の部分でCriteria1:="千代田区" となっている部分を
'      Criteria1:=Cells(GYOU, 1).Value に変更しておきます。
GYOU = GYOU + 1
Loop
End Sub

こんな感じではいかがでしょうか?
    • good
    • 0
この回答へのお礼

回答有難うございます。

アドバイスいただいた内容に基づいてVBAについて調べてみます。
当方、恥ずかしながらVBA、マクロなどこれまで使ったことがありませんので良く分らないのですが、これを機会に少し調べて身につけたいと思います。

ExcelのヘルプでVBAの項目から調べていこうと思います。取り急ぎお礼のみ申し上げます。有難うございました。

お礼日時:2008/05/23 09:56

自動で別ファイルにするのは・・・VBAとかcsv+bat編集とか、手段はともかく別にスクリプトが必要ですね


vlookupも、キーとなる地域行に重複があると見込まれるのでアウト。
# vlookup、hlookupはキー(検索値)が重複しないことが前提です

csv+batなら構想はありますけど、そのExcelをcsvに変換して加工するのは可ですか?
VBは・・・ちょっと詳しくないのでごめんなさい
    • good
    • 0
この回答へのお礼

回答有難うございます。

vlookup/hlookupではアウトとのこと。
一つ勉強になりました。

csv変換でも別にぜんぜんかまいません。お手数かけますが、もしもさらにアドバイスいただけるなら非常に助かります。

お礼日時:2008/05/23 10:03

別ファイルに全自動で振り分けなければなりませんか?



その辺ある程度手作業でもかまわないのであれば、オートフィルタ機能をお勧めします。
1行目は各データの項目、A列に地域が記載されていると仮定します。

1)1行目を選択、データ→フィルタ→オートフィルタ
2)A1 右のほうに現れた▼をクリックし、オプションを選択
3)抽出条件を入力。
4)抽出したデータをコピーし、別ファイルに貼り付ける

その辺も全部自動でやらせたいんだ! であれば・・・ちょっと考えます。

この回答への補足

さっそくの回答ありがとうございます。
お察しのとおり、全自動で出来れば理想的です。
実は日本全国の一万件以上の住所録を160ほどのエリアに振り分けたいのでちょっと手作業ではしんどいのです。


とりあえずそれぞれのエリアごとに市町村名を表にすることは手作業で表にしていますが、そこから先がどうも進まないのです。
本などでvlookup関数というのも調べてみましたがどうもうまくいかなくて相談しました。

ひとつのエリアに複数の市町村があるというのもめんどいのです。

補足日時:2008/05/21 23:01
    • good
    • 0

1回きりの作業なら


1、オートフィルター オプション 千代田区 を含む
2、行を選択、コピィ
3、新しいブックにコピィ
4、名前をつけて保存
を繰り返します。

*大津市と津市などの時は区分けには注意してください。

この回答への補足

回答ありがとうございます。

分量がちょっと多いので、何とか自動で作業してくれる方法はないかとあれこれ本を見たり検索したりしています。

補足日時:2008/05/21 23:13
    • good
    • 0

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