• ベストアンサー

エクセルのファイルをA列に入っている名前ごとに保存

こんにちは、 今学生に渡すファイルを作っているのですが 明日の夕方までに5000人近い学生のファイルを作らなければならないのです(>_<) 過去の質問も見たのですが、該当の質問が見つからなかったので質問させていただきます。 ファイルは35000行あり A列  B列  C列 山田  機械関係 埼玉県 山田  車関係  千葉県 鈴木  機械関係 埼玉県 山田  機械関係 埼玉県 というデータで並んでます。 A列の山田・鈴木ごとのファイルを作りたいのです。 マクロで自動の分割と 自動の保存はそれぞれできたのですが うまくつながらないのです。 自動で5000人のファイルを作ることが不可能なのでしたら ボタンを押したら「山田.xls」のファイルが出来るという 5000回ボタンを押すアナログ方式でもいいのですが。。。。 もし少しでもアドバイスいただけたらな~と思っております(T_T) では宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

深く考えていません。山田さんのデータを、Tab区切りで、山田.txtに書き出します。最近dictionaryに凝っているのでその流れでやってみました。35000行もあって、うまく動くかどうかはわかりませんが...。XL2000用のコードです。その他条件はコードから読み取って下さい。 Sub test() Dim sourceRange As Range Dim targetRange As Range Dim myDic As Object Dim i As Long, j As Long Dim myKey As Variant Set sourceRange = ActiveSheet.Range("A1").CurrentRegion Set myDic = CreateObject("Scripting.Dictionary") For i = 1 To sourceRange.Rows.Count Set targetRange = sourceRange.Cells(i, 1) With targetRange If Not myDic.exists(.Value) Then myDic.Add .Value, targetRange.Resize(1, 3) Else Set myDic.Item(.Value) = Union(myDic.Item(.Value), targetRange.Resize(1, 3)) End If End With Next i myKey = myDic.keys For i = 0 To myDic.Count - 1 saveToText (myDic.Item(myKey(i))) Next i Set myDic = Nothing End Sub Private Sub saveToText(targetRange As Range) Dim fso As Object Dim filePath As String Dim i As Long, j As Long Dim oneLine As String Dim area As Range filePath = ThisWorkbook.Path & "\" & targetRange.Cells(1).Value & ".txt" Set fso = CreateObject("Scripting.FileSystemObject") With fso.CreateTextFile(filePath) For Each area In targetRange.Areas For i = 1 To area.Rows.Count oneLine = "" For j = 1 To area.Columns.Count If oneLine = "" Then oneLine = area.Cells(i, j).Text Else oneLine = oneLine & vbTab & area.Cells(i, j).Text End If Next j .writeLine oneLine Next i Next area .Close End With Set fso = Nothing End Sub

maaaaaaaa
質問者

お礼

ありがとうございます。 自分でも試行錯誤して作りましたが こちらの方がエラーもバグも出ず実行できました。 おはずかしい質問で申し訳なかったです(>_<) ご親切にありがとうございました。 もっと勉強いたします

その他の回答 (1)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

学生に物事を教えている方の文章とは思えません。 > A列の山田・鈴木ごとのファイルを作りたいのです。 個人別ということですか? 1行目の「山田」と2行目、4行目の「山田」は同一人物ですか? 同一人物ならどうすればいいんでしょう? 5000人もいたら同姓同名も可能性があるんじゃないですか?個人の識別は名前ではなく学籍番号とかのユニークなものにはできないのですか? > マクロで自動の分割と自動の保存はそれぞれできたのですが > うまくつながらないのです。 つながるとはどういう状態をいうのですか? 何がうまくいかないのか自作のコードを差し支えない範囲で掲示するとか、もっと具体的に書いた方がアドバイスを得られると思います。

maaaaaaaa
質問者

お礼

すみませんでした(T_T) 大学の職員として働いてるのですがはずかしい限りです。 山田という名前の前にユニークな学生コードを持っています。 VBAの本を4冊かって 無事作成することができました。 気分を害してしまうような文章を書いてしまい 本当に申し訳なかったです(>_<) もっと勉強いたします。

関連するQ&A

  • エクセル重複データのある列同士の2列を比較したい

    エクセルに詳しい方、教えて頂きたいです。 文で説明すると、難しいので例と一緒に説明させてください。 例えば、下のようなデータがあるとします。 A列 B列 山田さん 栃木県 山田さん 栃木県 山田さん 大阪府 山田さん 栃木県 鈴木さん 三重県 鈴木さん 三重県 大野さん 千葉県 大野さん 東京都 大野さん 東京都 A列はA列で重複したデータがあり、B列はB列で重複したデーターがある場合。 A列 B列 C列 山田さん 栃木県 大阪府 鈴木さん 三重県 大野さん 千葉県 東京都 上ような結果にできる方法はないでしょうか。 例えば住所録をデータで何年分かためており、整理したいが、現在の住所は一つのはずなのに間違えて住所入力したか引越ししたかで複数住所がある。現在はどちらが正しいのか確認するために、その確認資料を作成したい。(同じ名前の人で別人の人はいないとする。) 相違があるかどうかを調べるだけならと、 C列にif関数をいれて見ましたが、ベストな結果ではないと思います。 ちなみに入れた関数は、元のデータのC列目に IF(A1=A2,IF(B1=B2," ","相違あり")," ") 上のIF関数をいれて、下にデータの分だけコピペしました。 エクセルを触るのは久々で、思いつく方法をしてみました。 ですので関数でできるのか、マクロでできるのか、またはエクセルの機能を使用してできるのか、またその方法を教えて頂きたいです。 そんな表にしなくても、こういうのでいいんじゃないの?等の提案でも構いません。 よろしくお願いいたします。

  • 【エクセル】リストの照合について教えてください!!

    sheet1に、下記の様に600件の氏名が書いてあります。 A      B 1     山田太郎  2     鈴木花子 ・・・ 600   佐藤次郎 sheet2に、地域と氏名がずらっと書いてあります。 A      B      C     D    E 東京都   神奈川県   埼玉県   千葉県  茨城県 山田太郎 鈴木太郎 山田花子 佐藤次郎 ・・・ このsheet2の地域を、sheet1のC列に下記の様に入れたいのですが、 どの様に行ったら良いでしょうか? みなさんのお知恵をください!!宜しくお願い致します。 A      B      C 1     山田太郎   東京都 2     鈴木花子   神奈川県 ・・・ 600   佐藤次郎   埼玉県

  • エクセルでの列の文字列の一括置換え

    ご質問失礼いたします。 エクセルので以下のようなことを 行いたくご相談させて頂きます。 以下のようなExcel A | B   01 | 北海道 02 | 青森県 03 | 岩手県 04 | 宮城県 05 | 秋田県 06 | 山形県 07 | 福島県 08 | 茨城県 09 | 栃木県 10 | 群馬県 (47都道府県分あり) ~~~~~~ 別ワークシートに A      | B    | C    | D 山田太郎   群馬県  ○○市   ○○3丁目10-1 鈴木花子   秋田県  ○○市   ○○5丁目10-1 ~~~~~~ とあってB列の都道府県を前者のB列>A列の数字に変換し A      | B    | C    | D 山田太郎   10     ○○市   ○○3丁目10-1 鈴木花子   05     ○○市   ○○5丁目10-1 ~~~~~~ このようにしたいです。 後者の行が数千あるのと都道府県が多いので通常のExcelの一括置換えなどではなく、 効率の良い方法や関数などございましたら、是非ご教授いただければ幸いです。

  • エクセルで新たなファイルを開くマクロ

    【質問:1】 ○○○.xlsというファイル上で、 ボタンを押すと、 ×××.xlsというファイルを ”マクロを有効にする”で開いて、 (どちらもマイドキュメントに保存してあります) かつ、 ○○○からの自動リンクを反映させ更新し、 (通常ですとダイヤルログボックスがでますよね) ×××のシート1のA1セルをアクティブにする というマクロはどのように書けばいいでしょうか? 【質問:2】 ×××.xlsにおいて、 ボタンを押すと、 ×××を”保存せずに閉じ”て、 かつ○○○.xls(既に開いてあります)の シート1のA1セルをアクティブにする というマクロはどのようにかけばいいでしょうか?  よろしくご教示のほどお願い致します。

  • 【VBA】同一ディレクトリ内のファイル名取得とA列

    【VBA】同一ディレクトリ内のファイル名取得とA列、B列のコピペ A.xlsに同一ディレクトリ内にあるyyyymmdd.csvファイルを順に読み取り A.xlsの A1に対象ファイル名 B列に対象ファイル内のA列をコピペ C列に対象ファイル内のB列をコピペ 次のファイルはD1 その次はG1 ・ ・ といった処理をさせたいです。 どのように記述すればよいでしょうか。 よろしくお願いしますm(._.)m

  • Excelのマクロについて

    質問の内容なのですが、ファイルA.xlsのファイルの中にtestAというシートがあったとします。 A(列) B ・赤組 田中 ○○ 鈴木 ×× 高橋 △△ ・青組 田代 ○○ 鈴木 △△ 広瀬 ×× ・白組 三浦 ×× 橋本 ○○ 鈴木 △△ 上記のようになっている状態で赤組の「鈴木」に該当するセル内の文字列を別のファイルである ファイルB.xlsのtestBというシートの任意のセル(仮にD7とします)に貼り付けることは可能なのでしょうか? よろしくお願い致します。

  • Excel Sheet を自動、セルにも自動でデー

    自動でできるのであれば、こういう事がしたいのですが、 初心者レベルでもできる方法があれば教えて頂けませんか。 <例> ・Sheet1:氏名、住所が書かれたリストがあります ・Sheet2:個人ファイル的な表があります ・Sheet2の表のセルに、Sheet1の氏名を自動で表示し、  Sheet1リストの氏名の数だけ、同じ表が書かれたSheetを自動作成したい。 ■Sheet1   A列   B列 1 田中  東京都 2 山田  神奈川県 3 鈴木  埼玉県 ■Sheet2  作成されている表のD3セルにSheet1のA1のデータ「田中」を自動で表記 ■Sheet3  Sheet2と同じ表のD3セルにSheet1の「山田」と自動表記された  新しいSheetが自動で作成されるようにしたい ■Sheet4  Sheet2と同じ表のD3セルにSheet1の「鈴木」と自動表記された  新しいSheetが自動で作成されるようにしたい Sheet1のリストと Sheet2の表が別のファイルで有る方が 対応が簡単ならでも別のファイルでもかまいません。 宜しくお願いします。

  • Excel 別ファイルに自動的に反映させたい

    Excelについて質問です。 A.xlsに入力したものをB.xlsに自動的に反映されるようにしたいです。  ABCDE 1 2 3 4 5 これのA列とD列のみを反映したいんです。 また行は毎日増えていくので、A.xlsで更新していく度に B.xlsも勝手にA列とD列だけ抜き出して自動的に更新されていくようにしたいです。

  • エクセルでA列をB列の数だけ縦に並べたデータ

    添付画像を見ていただいて、A列の名前をB列の数だけ縦に並べたD列のようなデータを作りたいのですが、関数などでできるでしょうか。 詳しく質問を書きます A2が佐藤でB2が2なので佐藤を縦に2つ並べて、その下にA3が鈴木でB3が1なので鈴木を縦に1つ並べていくというものです。名前の数は100名前後になると思います、B列の数は1~4です。 D列のようなデータを作るために毎回コピー&ペーストをしています。 もし自動でできるようになれば仕事の能率が格段にアップすると思い質問をさせていただきました。 回答よろしくお願いします。

  • エクセル、2つのファイルを1つに付き合わせる

    Excel 2003です。Book-1.xlsのA列に123/456や789/112などの数字がランダムに記載されています。Book-2.xlsのA列にBook-1.xlsと同様に123/456や789/112などの数字が、B列に5DFA456BAなどの数字とアルファベットが記載されています。これをBook-1.xlsへ2つのA列が一致する場所にB列を入れたいです。完成させたいファイルはBook-1.xlsです。一気に付き合わせる方法を教えて下さい。よろしくお願いします!

専門家に質問してみよう