• ベストアンサー

VBA 患者情報データをまとめたい

VBA初心者です。 (1)ユーザーフォームより情報を入力しsheet1に一覧として登録していく (2)Sheet2で検索ボタンを設け、患者様一人の情報を表示し、印刷できるようにする。 登録したい項目が63と多いので患者様一人の表を別に作成し、一覧表示へ入力していることがそのままその表にうつっていたいです。 初心者なので説明もおかしく申し訳ございません。 誰か教えて頂きたいです。よろしくお願い申し上げます

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

続けておじゃまします。 No.2の再質問に関して・・・ とりあえず作業列の方法は成功というコトですよね? その方法で項目を行方向に表示させるやり方です。 (画像では「項目5」がないのでエラーになっていますが、これは気にしないでください) ↓の画像でSheet1の作業列I2セルに =IF(OR(Sheet2!$A$1="",A2<>Sheet2!$A$1),"",ROW()) という数式を入れオートフィルでこれ以上データはない!というくらいまで下へコピー! Sheet2のA2セルは =IF(A1="","",VLOOKUP(A1,Sheet1!A:B,2,0)) そしてSheet2のA5セルに =IF(COUNT(Sheet1!$I:$I)<ROW(A1),"",INDEX(Sheet1!$A:$G,SMALL(Sheet1!$I:$I,ROW(A1)),MATCH(A$4,Sheet1!$1:$1,0))) という数式を入れ列方向・行方向にオートフィルでコピー! (日付がある場合、表示形式を変更しておきます。) Sheet2のA5セル上で右クリック → コピー → A11セル上で右クリック → 貼り付け ただ、数式内のMATCH関数の「検索値」を変更しなくてはなりません。 (A5セルに数式を入れた場合はすぐ上の「項目」を検索値としていますので、 A11セルに数式をコピー&ペーストした場合は >MATCH(A$4,Sheet1!$1:$1,0)の部分を >MATCH(A$10,Sheet1!$1:$1,0) のようにすぐ上の行の「項目」を「検索値」とします。 この操作をA18・・・と貼り付け時点ですべて行って、あとは列方向・行方向にオートフィルでコピーです。 尚、数式内のI列は作業列ですので、実際の作業列番号に変更してみてください。 なんとかなりますかね?m(_ _)m

shinarika
質問者

お礼

本当にありがとうございました。おかげですごくいいものができました。 感謝感謝です。

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

その他の回答 (2)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

No.1です! 関数でのやり方だけ・・・ ↓の画像のようにSheet1にデータがあり、Sheet2のA1セルに「ID」を入力すると 表示されるようにしてみました。 Sheet2のA2セルは =IF(A1="","",VLOOKUP(A1,Sheet1!A:B,2,0)) という数式を入れています。 Sheet1に作業用の列を設けてみました。 作業列G2セルに =IF(OR(Sheet2!$A$1="",A2<>Sheet2!$A$1),"",ROW()) という数式を入れオートフィルでずぃ~~~!っと下へコピーしておきます。 そしてSheet2のA5セルに =IF(COUNT(Sheet1!$G:$G)<ROW(A1),"",INDEX(Sheet1!$A:$E,SMALL(Sheet1!$G:$G,ROW(A1)),MATCH(A$4,Sheet1!$1:$1,0))) という数式を入れ、列方向と行方向にオートフィルでコピーすると 画像のような感じになります。 これでA1セルのデータが変わるだけで勝手にA1セルのIDデータが表示されます。 コマンドボタンを配置する必要はありません。 (もし日付セルがある場合は表示形式を「日付」にしておきます) 尚、項目が63項目あるというコトですのでかなり横長のデータになってしまうと思います。 おそらく印刷するにしても空白部分が多くなりますので、 表示方法を工夫する必要があるかもしれませんね。 ※ 何度も言っているように実際のデータ配置がわからないので、やり方だけです!m(_ _)m

shinarika
質問者

お礼

もう一度挑戦してみたらうまくいきました。 後画像をのせたかったのですが、無理でした。すみません。もう一つ質問させてもらってもよろしいですか?前にもいったように63項目あるので一列にsheet2に載せるとA4サイズで印刷が何枚にも渡ってしまいます。ですので、5項目は1列次の6項目目からは下の行12項目目はまたその下の行にsheet1からのを反映させたいのですがどうしたらよろしいでしょうか?

shinarika
質問者

補足

ありがとうございます。 一度試したのですがうまいこといかないんです↓やり方がおかしかったのか・・・ どういったユーザーフォームを作成したかも載せてみたのでまた教えて頂いてもよろしいでしょうか? 何度も申し訳ございませんがよろしくお願い申し上げます。

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

こんばんは! ん~~~ VBAの場合は列・行番号が一つ狂っただけでも全く予想もしない動きになります。 最小限セル配置等が判らないとコードの示しようがありません。 (詳しい配置ではなく、大まかな配置で構いません) 他の方からの回答がない理由はそこらへんかもしれませんね。 ご希望としてはSheet1の列に患者さん名が入っていて、 Sheet2の特定セルに患者さん名を入力するとその患者さんデータを表示したい! という感じでしょうか? もしそうであれば関数でも可能のような気がします。 今現在はこの程度しか投稿できませんが、 ごめんなさいね。m(_ _)m

shinarika
質問者

お礼

ありがとうございました

shinarika
質問者

補足

ありがとうございます。関数でもいけるんですね!言って頂いている通りsheet1の一覧表に患者IDを入れてますので、sheet2で検索ボタンを作りそれで、患者IDを入力するとsheet1に入力している患者様データを表示させたいんです。関数のほうがよいのですかね?本当何もわかっていなくて申し訳ないです。

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

関連するQ&A

  • EXCEL VBAでユーザーフォームを使ってデータを入力したい。

    EXCEL VBAでユーザーフォームを使ってデータを入力したいと思っています。(ユーザーフォームはできています。) 入力項目が4項目あります。 名前 作業コード 開始時間 終了時間 上記4項目と登録ボタンです。 sheet1にユーザーフォームを表示し sheet2の A1に名前 B1に作業コード C1に開始時間 D1に終了時間が 登録ボタンを押すごとに どんどんデータを記録していきたいのです。 VBA初心者ですのでコードがよくわかりません。 ご教授ください。よろしくお願いいたします。

  • VBAユーザーフォーム

    VBA初心者です。ユーザーフォームを作成しシート上に一覧表示をできるように作成しました。(本を見ながらとこちらで質問等させて頂きやっとできました) なので、次にsheet1に一覧表示を作成しているので、sheet2に個別表示の仕方はどうしたらよいか教えて頂きたいです。一人の人の情報量が多く、一人分の資料もほしいのですが・・ユーザーフォームから入力後に一覧と個別とにするのはどうすれば初心者でもできますか? 質問も下手なのでわかりにくいかもしれませんが、教えて頂けたらと思います。

  • VBAに詳しい方に質問です。

    VBAに詳しい方に質問です。 私はVBA初心者です、お力添えのほどよろしくお願いいたします。 前回の質問の続きなのですが、 エクセルで入力し、それを一覧表に転記し、最終的に出力フォームにデータを呼び出し印刷するプログラムを作成しています。 そこで、一覧表から出力フォームに呼び出すVBAについて教えてください。 ☆シート2 これまでに入力したデータをすべて一覧表があります。    1     2     3   4… 1 日付    名前    年齢  電話番号 22010/06/28 山田太郎  33才 090-×× 42010/07/01 石川花子   12才  090-×× 52010/07/01 岡田君子   15才  090-××   6  7 ・ ・ ・ ☆シート3 出力.cells(1,1)に日付を入力しボタンを押すと、その日付を基準にその日付の項目すべてを出力します。     1   2    3 12010/07/01 2  3  名前  年齢  電話番号 4 石川花子 12才  090-××  5 岡田君子 15才  090-××    6  7 ・ ・ ・ このようなVBAを作り出す場合、どのような文を書いたらよいのでしょうか。 VBAに詳しい方、アドバイスのほど宜しくお願い致します。

  • Excel フォームで入力・登録後、各項目の消去の仕方は?

    VBA初心者ですm(__)m Excelで商品一覧表を作成し、フォームを作りました。 登録ボタンを押すと、商品名等が各セルに入力されますが、 それと同時にフォーム内の各項目をすべて削除して、次の入力ではまたまっさらなフォームの状態から入力できるようにするには、どうしたらよいでしょうか? よろしくお願いします。

  • EXCEL VBAでデータをどんどん入力したいのですが・・・

    こんにちは。 EXCEL VBA の初心者です。 下記のURLのようなVBAを作りたいのですがうまくいきません。 http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_080.html 3~4項目のフォームを作って登録ボタンでシートにどんどん 記録されていくマクロを作りたいのです。 上記のURLを参考に作っていますがうまくできません。 どなたか助けて下さい。 よろしくお願いいたします。

  • ExcelのVBAについて

    すみません、ご教授下さい。 エクセルVBAで簡単な住所録のようなものを作りたいのですがご教授頂けますでしょうか? 内容としては、シート1に入力フォームがあり、登録ボタンを押すと シート2へ一覧していく形です。 また、シート2に一覧していく際は新しいものが上に挿入され、 入力フォームはクリアされるという形になります。 シート1   A    B 1 顧客ID AAA 2 姓    サンプル 3 名    太郎 4 TEL   080-0000-****  →これ以降も項目を増やします。 シート2     A    B      C     D 1 顧客ID   姓     名    TEL 2  AAA   サンプル 太郎 080-0000-**** ご教授頂けますでしょうか? 何卒宜しくお願い致します。

  • VBAに詳しい方に質問です。

    VBAに詳しい方に質問です。 私はVBA初心者です、お力添えのほどよろしくお願いいたします。 エクセルで入力し、それを一覧表に転記し、最終的に出力フォームにデータを呼び出し印刷するプログラムを作成しています。 1つの項目のデータを表に転記したり、呼び出すVBAはなんとか作成できました。 しかし、複数のセルのデータを表に転記するVBAが作ることができません。 ☆シート1 入力フォームがあり、 氏名・電話番号・住所等の項目を100人ほど表で入力します。 それらをシート2へ転記します。    1     2      3    4…   1  日付    名前    年齢   電話番号 2 2010/07/01 石川花子   12才  090-×× 3 4  ↓以下100名ほど入力 5  ※列も行も数値で表すように設定してあります。 ・ ・ ・ ☆シート2 これまでに入力したデータをすべて一覧表にします。 シート1のデータはこれまでに入力されたデータの下に転記されます。    1     2     3   4… 1 日付    名前    年齢  電話番号 902010/06/28 山田太郎  33才 090-×× 912010/07/01 石川花子   12才  090-××   92  ↑このように日付欄に空白を見つけ、そこからデータを転記する。 93 ・ ・ ・ 私が考えたVBAは、 sub 転記マクロ() set 入力 = worksheet("シート1") set 一覧 = worksheet("シート2") 日付1=入力.cells(2,1) 名前1=入力.cells(2,2) 年齢1=入力.cells(2,3) 電話1=入力.cells(2,4) 日付2=入力.cells(3,1) 名前2=入力.cells(3,2) 年齢2=入力.cells(3,3) 電話2=入力.cells(3,4) '以下○○100まで ※一覧.(縦,2)に縦+1をしていき""の場所を探す。 (すみません、データを会社に置いてきたので表記の仕方を忘れてしまいました^^;) 一覧.(縦,1)=日付1 一覧.(縦,2)=名前1 一覧.(縦,3)=年齢1 一覧.(縦,4)=電話1 一覧.(縦+1,1)=日付2 一覧.(縦+1,2)=名前2 一覧.(縦+1,3)=年齢2 一覧.(縦+1,4)=電話2 '以下+100まで end sub 何も見ずに思い出しながら書いたので、もしかしたらどこか間違っているかもしれませんが、 このような感じで書いていきました。 さすがにこのようなことを100回繰り返すのは大変なので、for next関数でなんとかならないか試行錯誤したのですがなかなか解明できず困っています。 詳しい方、どうか教えてください。

  • ユーザーフォームのデータをそのまま保存する方法

    エクセルでユーザーフォームを作成し、エクセルのワークシート上のボタンからユーザーフォームを表示するようにしました。 ワークシート上のボタンをクリックして表示されたユーザーフォームにデータを入力してユーザーフォームを終了しワークシートを保存終了、再度そのワークシートを開いてボタンからユーザーフォームを表示すると入力したデータが消えてしまいます。 ユーザーフォームに入力したデータがそのまま保存できて次に開いたときにデータが残っている方法はありませんか? 今回、ユーザーフォームを作成をした目的は、ユーザーフォームに入力したデータを元に住所録等を作成するためではありません。ですからユーザーフォームに入力したデータはワークシートと連動させていません。 やりたいことは、ワークシート上に氏名一覧があり、個々の氏名欄にボタンを作成して、その人のデータ一覧をユーザーフォームで表示させるということです。 ユーザーフォームは、人数分を作成する予定です。

  • VBAエクセルのフォームについて

    お世話になっております。 VBAエクセルのフォームについて教えていただきたいのです。 VBAで入力のフォームを作ったのですが(TEXT BOXが4つ、コマンドボタン1つ、コマンドボタンを押したときに登録される用にしたい) 各シートの集計にしたい為、各シート(31のシートがあります)に入力フォームがあります、その各シートでの入力結果を1つのシートに 集計したいのですが、どの様なコードにしたらようか判りません。 素人のためお手数ですが、なるべく判りやすくお願いします。 よろしくお願いします。

  • エクセル VBA ユーザーフォームで検索したいのですが

    つい昨日触り始めた大初心者です。。 エクセルシートにて 数値を記した列と、詳細を記した列があります。 ユーザーフォームにて textboxに数値を入力し、ボタンをクリックすると 検索をして、ユーザーフォーム内のlabelに詳細が表示される、といったvbaを書いているのですが、どうにもうまくいきません。 また、textboxに検索範囲にない数値が入力されたときには Labelに「なし」と表示させたいのですが、 エラーが出てしまい、その処理もやはりうまく出来ません。 どなたかご教授いただけますでしょうか。