• 締切済み

エクセル vbaでの相談です

エクセルでの質問です。 販売管理表を作りたいと思います。 sheet1を商品マスター表とし、下記の見出しがあって A1 JANコード(上一桁4からの番号で13桁) B1 商品コード (14桁) C1 商品名 D1 価格 以下A2行以降、A1行の見出しを元に商品詳細があるとします。 sheet2の下記のA1行を見出しとし、A2行から販売実績をユーザーフォームを使って入力していきたいと思います。 A1 JANコード B1 商品コード C1 商品名 D1 価格 E1 販売番号 フォームを作成し、入力窓に JAN、商品コードのいずれかを入力すると、他の入力窓にsheet1の商品マスター表から該当する商品名、価格を自動入力し登録ボタンを押すと、sheet2の該当セルに反映されるということはできますでしょうか? そして異なる商品のまとめ買いの件数も知りたいので、フォーム上で複数アイテム登録できるようにし、販売番号で件数を管理したいのですが、そちらも可能でしょうか? 販売番号も自動で通し番号が入るようにしたいです。わかりにくい文章で申し訳ありません。ご教授の程、よろしくお願い致します。

みんなの回答

回答No.3

winarrow07です。 必要ないとは思いますが一応補足です。 1個目の例は、 商品マスタがシート1にあり、A列にJANコード、B列に商品名があるとします。 んでユーザーフォームのtextbox1にJANコードを入れると商品マスタから該当するJANコードの商品名(B列)を取得しててtextbox2に入れています。 うまくいかない場合は検索値textbox1.valueをval()でかこんでみてください。 2個目の例は、 登録ボタン(CommandButton1)をクリックしたとき、シート2の最終行を取得して、それに1を足して新しいレコードの追加行を決定してます。 あとはその行のA列にtextbox1の値(JANコード)、B列にtextbox2の値(商品名)を入れています。

回答No.2

>フォームを作成し、入力窓に JAN、商品コードのいずれかを入力すると、他の入力窓にsheet1の商品マスター表から該当する商品名、価格を自動入力 フォームの入力窓の値の変化時にsheet2から該当する商品名、価格とかをvlookup等で引っ張ってきて、入力窓に入れればいいと思います。 (例) Private Sub TextBox1_Change() On Error Resume Next TextBox2.Value = Application.WorksheetFunction.VLookup(TextBox1.Value, Worksheets(1).Range("A:B"), 2, False) End Sub >登録ボタンを押すと、sheet2の該当セルに反映される 登録ボタンを押すと、sheet2の最後の行を取得しその次の行にtextboxの値を貼り付ければいいかと思います。 (例) Private Sub CommandButton1_Click() Dim NewRecordRow As Integer NewRecordRow = Worksheets(2).Cells(Rows.Count, 1).End(xlUp).Row + 1 Worksheets(2).Cells(NewRecordRow, 1).Value = TextBox1.Value Worksheets(2).Cells(NewRecordRow, 2).Value = TextBox2.Value End Sub あくまで例ですがとりあえず上記のような感じのコードでできると思います。あとは適宜読み替えて頂ければと。 自動通し番号と複数アイテム登録は応用してやってみてください。

回答No.1

可能ですが、Microsort AccessやFileMakerのほうが適しているのでは?と思います。 データベースソフトには自動で通し番号(シリアル番号)を振る機能も持ってますし、ユーザーフォームも作成できますし、複数のアクセスも可能ですし、テーブル間のリレーション機能も利用できますし、エクセルでは件数(レコード数)に制限がありますし。 どうしてもexcel

gellmax
質問者

お礼

winarrow07 様 助言いただきありがとうございます。僕もAccessを検討してみたのですが、社内的に導入は厳しい状況なんです(涙)ですので、できればexcelでチャレンジしたいと思います。よろしくお願いいたします。

関連するQ&A

  • エクセルでの並べ替え

    エクセル2000の質問です。 同じシート内に2つの表があります。 13桁のJANコードと商品名が並んだ表です。 2つとも順番がバラバラな上に片方の表にしか ないものもあります。 その2つの表をJANコード順に並べたいのです。 1バナナ  1バナナ 3りんご  2みかん こんな感じの表です。実際は13桁の番号です。 1バナナ  1バナナ 2     2みかん 3りんご  3 こういう風にしたいです。データは2000件ほどあります。 よろしくお願いします。

  • エクセルVBA ユーザーフォーム 検索

    現在VBAにてユーザーフォームにて入力したデータをシート1に転記するものを作成しました。 この転記したデータを生かして作業したいと考えております。 データは商品データで A    B C E F 商品コード 商品名  区分  単価  備考 となっており ユーザーフォームも TEXTBOX1=A TEXTBOX2=B と言う様になってます。 現在考えているのがこのデータの一部を変更したい場合、コマンドボタンを押すと商品コード入力用boxがでてきて、商品コードを入力するとA列から検索し該当する商品データをユーザーフォーム上に表示するようにしたいのです。 そのデータがA75行にあったとします。 そのユーザーフォーム上で単価を変更した場合検索した行(A75行)にそのまま上書きする様にしたいです。 説明がうまくできてないかも知れませんが、どなたかご教授願います。

  • 「JANコード」と「日付」で販売個数表を作成したい

    エクセルで販売個数表を作成していますが、うまくいかず困っています。 Sheet1のA列に現在在庫している全ての商品のJANコード、B1~AF1にある月の1日から31日までの日付が日付データとして入っています。別ブックのSheet1にA列(販売日)、B列(JANコード)、C列(販売個数)のデータがあり、この販売個数を前述の個数表にJANコードと日付を対応させて入力したいのです。(例えばMというJANコードの品物が14日に2個売れたとしたら、MというJANコードの行の14日の列のセルに2と入れたいということです。)尚、別ブックの販売個数のデータは各商品ごとに1日の総売り上げ個数が出ているため、合算をする必要はなく、C列の数字をそのまま該当するセルに直接入れることができればOKです。 できることならマクロを使って、「別ブックを参照してデータを読み込み、販売個数表に個数を反映」させたいのですが、どのように作ったらよいのか具体的に教えていただけないでしょうか?関数を使って入力する方法もあれば是非、お願いします。

  • Excel VBA での商品管理について

    今、エクセルにて商品管理をするツールを作成していました。 ユーザーフォームにて、売却した商品コードを入力すると、在庫シートから該当商品を検索し、ユーザーフォーム内に商品データが入力されるようになっています。 売上登録処理を実行した時に、売買明細シートへA列には(1)売却した商品コード、B列には(2)売却した商品名、C列には(3)売却価額、D列には(4)売却した商品の仕入価額(これは”在庫シート”の中で商品コード(B列)を検索し、在庫シートのJ列から引っ張る)という情報を転記したあと、(5)在庫シートへ記載されているその商品情報の行を削除したいのです。 (1)~(3)の処理はできたのですが、(4)の在庫シート内で商品コードを検索する というコードが書けません。 (1)~(3)の処理は、 Dim Ctrl As Control With Worksheets("売買明細") 'A列の最終セルからEndプロパティでデータの最終行を取得し、 '+1をして、次にデータを入力する行の行番号を取得 RowNum = .Cells(Rows.Count, 1).End(xlUp).Row + 1 'ワークシートの行列を指定してテキストボックスの値を1つずつセルへ代入 .Cells(RowNum, 1).Value = Me.商品コード.Value .Cells(RowNum, 2).Value = Me.商品名.Value … 以下続くとしました。 すみませんが、どなたかお知恵を貸していただけないでしょうか。 よろしくお願いいたします。

  • エクセル VBA コンボボックスで検索

    エクセルVBA初心者です。 シート1行目には工場名、2行目に見出し、3行目からデータが記入されています。 2行目に見出しとして、A列には作業者名、B列に工事番号、C列から作業時間などが記入されています。 ユーザーフォームにコンボボックス、コマンドボタンを設置し、コンボボックスには工事番号一覧が表示されるようにするところまではできましたが、コンボボックスで工事番号を選択し、コマンドボタンを実行することで、1シート内の一致する行だけを表示したいのですが、いろいろなサイトを参考に試してみたのですがうまくいきませんでした。 同じ内容のシートが複数ありますが、シート毎での検索・抽出をしたいと考えています。 どのようなコードを作成したら良いのかご教授願えたら幸いです。 よろしくお願い致します。

  • エクセルの関数、式教えてください。

    難しくてどうしてもわかりません。 無知で見よう見まねでやっております。 売上管理シートのE列 商品番号を入力すると その商品番号の 入出庫表シートJ列にある価格を 売上管理シートのT列に自動で入力するには どうしたらよいでしょうか??? 売上管理シートのT列に色々やってみたのですが、 できません。どうしてもわかりません((+_+)) 分かる方、教えてください!よろしくお願いいたします。 ≪売上管理シート≫  (E列)       ・・・・省略      (T列) 商品番号   品名   販売価格  仕入価格 1111111    スイカ   500円    200円 22222     メロン    1000円    600円 ≪入出庫表シート≫  (D列)     ・・・・省略     (J列) 商品コード   品名      仕入価格      1111111     スイカ      500円       5555555      メロン       300円   

  • ExcelのVBAについて

    ExcelのVBAについて VBA全くの初心者です。 以下のような処理を行いたいのですが、どなたかご教授をお願いします。 以下のように支店(1)~(3)のシートがあります。 1.入力シートに調べたい商品No・商品名・備考を入力する(複数行あり) 2.マクロを実行すると、商品Noを検索対象として支店(1)~(3)シートをチェックし、   一致しない行を不一致データシートに出力する もう一つ別のマクロで、 1.入力シートに調べたい商品No・商品名・備考を入力する(複数行あり) 2.マクロを実行すると、商品Noを検索対象として支店(1)~(3)シートをチェックし、、   一致する行を一致データシートに出力し、D列に対象データがあるシート名を表示する   ※可能でしたら、E列に対象データがある行番号も表示する -------------------------------- シート名:支店(1) A      B     C 商品No   商品名   備考 011    商品A   備考A 009    商品B   備考B 015    商品C   備考C -------------------------------- シート名:支店(2) A      B     C 商品No   商品名   備考 008    商品A   備考A 023    商品B   備考B 004    商品C   備考C -------------------------------- シート名:支店(3) A      B     C 商品No   商品名   備考 007    商品A   備考A 033    商品B   備考B 018    商品C   備考C -------------------------------- シート名:入力シート A      B     C 商品No   商品名   備考 ※ここに複数行入力する -------------------------------- シート名:不一致データシート A      B     C 商品No   商品名   備考 ※ここに出力される -------------------------------- シート名:一致データシート A      B     C 商品No   商品名   備考 ※ここに出力される

  • Excel VBA

    Excel VBAについて シート1にはデータが入ってます。 G列に日付、L列に商品名、N列に件数。 シート2には集計結果を入力したいです。 セルB2に、日付が10月1日から15日までで、商品名がAの件数の合計。 セルB3は、日付が10月16日から末日まで、セルB4は、日付が11月1日から15日までと半月毎に集計を半年後の末日まで繰返し、B2の数行下には、商品名Bの集計行を作り、その数行下には商品名Cの集計行を作りたいです。 これまでは関数SUMIFSで集計していましたが、複数店舗分のシートの更新・メンテナンスが大変なので、VBAでの集計を考えいろいろ調べてるのですが、方法が思い付かないので、ご教授ください。

  • MSアクセスのDBからエクセルのVBAで情報を抽出する

    いつもお世話になります。 以下のフォーマットでアクセスに十数万行のデータがあります。 JANコード,商品名,分類1,分類2,分類3,分類4 そして、エクセルのSheet1のA列に、数百から数千のJANコードが並んでいるのですが、マクロを起動させることによって、B列以降に、同じJANコードの商品名から分類4までをVLOOKUP関数のようにくっつけたいのですが、そのようなことは可能でしょうか。 尚、エクセルファイルとアクセスファイルは、同じフォルダに保存されているとします。

  • 入力フォームをテーブルの真下に転記

    エクセルのVBAで入力フォームを作成して、入力フォームのテキストをシート2の、テーブルの見出しの次の行から転記される用にしたいのですが、最終行を取得すると見出しから一行飛ばして二行目に転記されてしまいます。 テーブルを作成した時に見出しの下に空欄のデータシートが自動で追加されてしまうからでしょうか? 何か対策はあるでしょうか? コードで提示して頂くと助かります。 入力フォームはシート1で開く 転記 シート2のA列から順に、連番生成(1〜)、テキストボックス1.2.3..... 宜しくお願いします