• ベストアンサー

エクセルで選択した行の項目だけを別シートの請求書に自働入力したい

是非教えてください。急いでいます。 エクセルで請求書台帳管理をしています。 Sheet1に各行に各ユーザ毎の情報が10項目程度あるのですが、請求書に選択した行のユーザに対して、Sheet2に作ってある請求書フォーマットから請求書を出力したいと思っています。 Sheet1で印刷したい行の左側に○つけた時だけ、各項目の内容をSheet2の請求書フォーマットにデータを自働で移して印刷することは出来ますか? ○でなくてもいいので、とにかく選択した行の情報だけを別シートに自働で移せる方法を教えてください。 とても急いでいるので、どうか宜しくお願いいたします。

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

  • ベストアンサー
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.6

> マクロ良く分からないのですが、 まずALTとF11そ同時に押してください するとVBE(マクロ編集画面)が開きますので左側のSheet1などと書かれている (○を入力したいシートの名前)でダブルクリックすると 右側に入力できる画面が開きますのでそこに Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 1 Then Range("A:A").Clear Range("A" & Target.Row).Value = "○" End If End Sub をそのまま貼り付けてください。 既に何かあればそれはそのままにして最終行の下に入れてください。

jyurymicke
質問者

補足

ありがとうございます。出来ました。本当に助かります。ありがとうございます。 何回も申し訳ないのですが、後、2個質問させてもらっていいですか? 一つ目ですが、今回の一連の仕様の中で、○をA列として他の列がB~T列まで有るのですが、その内のF~J列はどれか一つしか選択できないようにするにはどうすればいいですか?うまく書けないのですが、例えばF列目に◎を選択したら、残りのG~J列には何も出ない様にしたいです。当然台帳ですので印刷したい行以外の行も同じようにしたいです。 二つ目ですが、これは一つ目の質問に絡むのですが、○で印刷行を選択した後、F列目の◎が付いたところをSheet2の請求書印刷に教えていただいたVLOOKUPでデータを移した後、◎が出ないG~J列の分に「0」が出てしまわない様にするにはどうすればいいですか? 何回も申し訳ありませんが、お願いします。

その他の回答 (5)

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.5

> ちなみに○を重複させないように、今回印刷したい行に○を付けたら、他の行 > の○は消してしまうということは出来ますか? > 前に印刷した時の行の○を消し忘れたときに対応できるようにしたいのですが? > また○をプルダウンで出したいのですが、どの様にすればいいですか? 該当するシートのマクロに以下のコードを記載してください。 A列のセルを選択すると選択したセルに○が表示されます 列を変更したい場合 Target.Column = 1の1を列数にあわせて変更してください。 Range("A:A").ClearのA:Aを列にあわせて変更してください。 Range("A" & Target.Row).Value = "○"の"A"を列にあわせて変更してください。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 1 Then Range("A:A").Clear Range("A" & Target.Row).Value = "○" End If End Sub

jyurymicke
質問者

お礼

ありがとうございます。 早速試してみます。 また質問するかもしれません。 お願いします。 とりあえずお礼まで

jyurymicke
質問者

補足

すみません。 マクロ良く分からないのですが、 マクロ開くと、以下が行がすでにあるのですが、 ここから Sub Macro1() ' ' Macro1 Macro ' Application.Goto Reference:="Macro1" End Sub ここまでがすでにあります。 上記を編集して Sub Macro1() Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 1 Then Range("A:A").Clear Range("A" & Target.Row).Value = "○" End If End Sub とすればいいと思うのですが、これで実行するとEnd Subがあるのに 「End Subが必要です」のエラーが出るのですが、どの様にするのが正しいですか?

  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.4

マクロで行うのが一番の方法だと思いますが できないのであれば シート1に請求情報が一行一件づつある。 シート2に印刷する請求書の様式がある。 という条件でしたら シート1に顧客コードみたいなのがあればそのキーでソートしておく シート2のシート1から転記するセルに顧客コードをキーとするVlookup 関数でシート1から抽出したデータを表示するようにする。 シート2に対象の顧客コードを入力しては印刷するというのはどうでしょう。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

マクロならば可能ですがそうでない場合にはワードで請求書を作りワードの差し込み印刷を利用して対応するのがよいでしょう。 いずれにしろ自動で印刷となりますとマクロで対応することになりますね。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.2

シート範囲を選択して○の列にオートフィルタを掛けて、抽出したデータを丸ごとコピーし、任意のシートに貼り付けます。 http://www.eurus.dti.ne.jp/~yoneyama/Excel/filter.htm

jyurymicke
質問者

お礼

ありがとうございます。 内容確認してみます。 色々あるんですね。試してみます。

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

どのセルにデータが入っているのか分かりませんが たとえばSheet1のA1からC7までデータがあるとした場合 Sheet2のデータを取り出したいセルに =VLOOKUP("○",Sheet1!$A$1:$C$7,2,FALSE) とすれば○の付いた行のデータが取り出せます。 上記の場合はA列に○を入力しB列のデータを取り出しています。 2を3にすればC列のデータが取り出せます。

jyurymicke
質問者

お礼

ありがとうございました。 早速試してみます。 ちなみに○を重複させないように、今回印刷したい行に○を付けたら、他の行の○は消してしまうということは出来ますか? 前に印刷した時の行の○を消し忘れたときに対応できるようにしたいのですが? また○をプルダウンで出したいのですが、どの様にすればいいですか?

関連するQ&A