• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルのデータの抽出)

エクセルのデータの抽出方法とは?

このQ&Aのポイント
  • 仕事で1000個ぐらいの地名と住所がセットになったエクセルのデータを別のシートに抽出する方法を教えてください。
  • 普通にマクロを使っても最初のデータしか抽出されず、残りの999個は結局1000のマクロをつくらなければなりません。しかし、一つのマクロで済ませる方法はありますか?
  • エクセルデータには地名と住所が入っています。マクロを使わずに一括で抽出する方法を教えてください。

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.4

n-junです。 >ついでにソースコードをどうやって保存すればいいのでしょうか? 保存は通常のブックの保存ですけど。 >少し伺いたいことがあるのですが ~ これはいったい何なのでしょうか? マクロの自動記録が有効になっているのではないですか? 記録を止めて余分なコードは削除して下さい。 マクロの自動記録 http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_01.html ⇒「マクロの記録終了ボタン」です。

shomarket
質問者

お礼

度々すいませんでした。 単に記録の止め忘れでした。いろいろと長いことお付き合いいただいきありがとうございました。

その他の回答 (3)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.3

n-junです。 元のデータがシート2のA列・B列だとしてます。 Sub try() Dim i As Variant i = Application.InputBox("何番目のデータ?", Type:=2) If i = False Or i = "" Then Exit Sub If Worksheets("Sheet2").Range("A" & i).Value <> "" Then Worksheets("Sheet1").Range("C5").Value = _ Worksheets("Sheet2").Range("A" & i).Value Worksheets("Sheet1").Range("H5").Value = _ Worksheets("Sheet2").Range("B" & i).Value Else MsgBox i & "行目にデータはないです" Exit Sub End If End Sub ご参考まで。

shomarket
質問者

補足

ありがとうございます。いただいたソースコードを参考にやってみたところ希望道理の結果がでました。 少し伺いたいことがあるのですが、パソコンの下のバーのエクセルのファイルを最小化したり前に出したりすると なぜかソースコードのEnd Subの後に Application.WindowState = xlNormal Application.WindowState = xlMinimized という文字列がVBエディタに出てきてしまいます。これはいったい何なのでしょうか? ついでにソースコードをどうやって保存すればいいのでしょうか? 普通に保存ボタンを押すとEnd Subの後に ActiveWorkbook.Save という文字列が追加され、以降マクロを実行しようとする コンパイルエラーと表示されてしまいます。 これらはどうすれば解決できるのでしょうか?

回答No.2

おっしゃっていることはできますが、まだ情報不足でこれでは具体的なコードなどは書けません。 データの指定(1や2など)の仕方は ・ユーザーフォームを表示させ番号を入力させる方法 ・特定のセルに入力欄を設け番号を入力させる方法 ・該当の行を選択させておく方法 などがあると思います。 これで行番号を取得できるので、あとはその行のデータをコピーして 貼り付けるだけです。 貼り付け先は「空のフォーム」と書かれてますが、ユーザーフォームのことですか?それとも別のシートってことですか? 別のシートの場合、シート名は決まっていますか?またそのシートで貼り付けるべき場所(セル)は決まってますか?

shomarket
質問者

補足

最近知ったのですがVBAというプログラムを使わないと希望するようなことはできないということでしょうか? 私はVBAについてはぜんぜん知りません。後で勉強しようと思います。 空のフォームというのは別にある普通のエクセルのシートのことです。 例えば同じファイル中に、1000個のデータがあるシートが名前sheet2でその前にある名前sheet1がデータを送りたい先のシートです。 sheet1は具体的にはセルのB5B6の真ん中に 地名 と書いてあり、 その横のC5からE6範囲に ○×消防署 と入れたいのです。 住所についても同様で、セルG5G6の真ん中に 住所 と書かれており、H5からJ6の範囲に △○区000 と入れたいのです。 舌足らずですいません。つまりC5からE6範囲とH5からJ6の範囲にそれぞれのデータを貼り付けたのです。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

どんな条件で、別のシートのどこに出力したいのかが不明です。 取り敢えず >普通にマクロを使っても最初のデータしか抽出されず こちらのコードを提示されてみては如何でしょう。 あとは元データの他に、希望する結果を提示してみるとか。

shomarket
質問者

補足

すいません。質問の仕方を間違えました。最初のデータの○×消防署と△○区000をそれぞれコピーして別のシートにペーストし、マクロに記憶させています。たぶんそれで最初のデータを記録したMacro1というマクロが作られているのだと思います。私がやりたいことは 番号を指定してマクロを実行することによってそれぞれの地名と住所を別のシートにある空のフォームに出力することです。例えば1を指定してマクロを実行、1番目の地名と住所がフォームに出力される。 2を指定してマクロを実行、2番目のデータが空のフォームに出力されるといった感じです。

関連するQ&A