• ベストアンサー

Excel2007 シートと列・行を検索して入力

シート (東京・千葉・埼玉)は店舗名です、列(日付)に行(商品名)が何個入ってきたか入力しなければなりません。同じ日に同じ商品が入ってきたら合算しなければなりません。 入力はsheet1のA列に店舗名シート B列に日付 C列に商品名 D列に個数を連続して入力したいです。 このマクロを教えて頂きたいです。 よろしくお願いいたします。

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

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

こんばんは! 前提条件として・・・ (1)Sheet1の日付と各店舗Sheetの日付は必ず同月とする (2)Sheet1のA列店舗名のSheetは必ず存在する (商品に関しては仮に各Sheetに存在しない場合、1行目に追加するようにしています) とします。 (上記条件がそろわない場合はマクロが止まってしまいます) データは↓の画像のように各Sheetとも2行目以降にあるとします。 Sheet1のD列(数量)を入力 → Enter でマクロが実行されるようにしています。 各Sheetの該当セルにSheet1のデータをプラスしていっても良いのですが、 万一Sheet1のD列(数量)の入力間違いがあった場合、重複してプラスされてしまいますので 敢えてSUMIF関数を使用しています。 そのためSheet1のE列を作業用の列として使用していますので 目障りであればE列を非表示にしておいてください。 画面左下のSheet1のSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてSheet1にデータを入力してみてください。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から If Intersect(Target, Columns(4)) Is Nothing Or Selection.Count <> 1 Then Exit Sub Dim i As Long, j As Long, k As Long, str As String i = Target.Row Cells(i, 5) = Cells(i, 2) & Cells(i, 3) str = Cells(i, 1) If WorksheetFunction.CountIf(Worksheets(str).Rows(1), Cells(i, 3)) = 0 Then Worksheets(str).Cells(1, Columns.Count).End(xlToLeft).Offset(, 1) = Cells(i, 3) End If k = WorksheetFunction.Match(Cells(i, 2), Worksheets(str).Columns(1), False) j = WorksheetFunction.Match(Cells(i, 3), Worksheets(str).Rows(1), False) Worksheets(str).Cells(k, j) = WorksheetFunction.SumIf(Columns(5), _ Worksheets(str).Cells(k, 1) & Worksheets(str).Cells(1, j), Columns(4)) End Sub 'この行まで ※ 関数でないので、Sheet1のデータをクリアにしても他のSheetには反映されません。 月替わりにはすべてのSheetデータをクリアにする必要があります。 (各SheetのデータをクリアにするVBAも可能ですが、今回は割愛します) この程度で参考になりますかね?m(_ _)m

その他の回答 (2)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 ANo.1です。  申し訳御座いません。先程の私の回答に添付した画像における、東京シートの部分を作成する際に、誤って千葉シートを開いた状態でキャプチャーしておりました。  ですから、正しい画像を投稿し直させて頂きます。  もし、質問者様が御利用になられているサイトが、添付画像の表示を行っていないサイトである場合には、以下の参考URLのページを御覧下さい。 【参考URL】  Excel2007 シートと列・行を検索して入力 | Visual BasicのQ&A【OKWave】   http://okwave.jp/qa/q7677285.html

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

 関数でも簡単に出来ますが、マクロでなければだめなのでしょうか?  今仮に、各店舗毎のシートでは、印刷した際にどの店舗の情報であるのかを判り易くするために、B2セルにシート名を自動表視させるものとして、実際の合算結果の表はは4行目以下に表示させるものとします。  まず、東京シートのB2セルに次の関数を入力して下さい。(註:Excelのbookが新規に作成したばかりで、未だどこのフォルダーにもファイルとして保存されていない間はエラーとなりますので、適当なファイル名を付けて保存されてから作業を始められた方が混乱を避けるという意味で良いかも知れません) =REPLACE(CELL("filename",B1),1,FIND(".xlsx]",CELL("filename",B1))+5,)  次に、東京シートのA4セルに次の関数を入力して下さい。 =IF(OR(COUNT(Sheet1!$B:$B)=0,MAX(A$3:A3)=MAX(Sheet1!$B:$B)),"",IF(ROWS($4:4)=1,MIN(Sheet1!$B:$B),A3+1))  次に、東京シートのA4セルをコピーして、東京シートのA5以下に貼り付けて下さい。  次に、東京シートのB4セルに次の関数を入力して下さい。 =IF(COUNTIFS(Sheet1!$A:$A,$B$1,Sheet1!$B:$B,$A4,Sheet1!$C:$C,B$3),SUMIFS(Sheet1!$D:$D,Sheet1!$A:$A,$B$1,Sheet1!$B:$B,$A4,Sheet1!$C:$C,B$3),"")  次に、東京シートのB4セルをコピーして、「その日付に入って来たその商品の総数」を表示させる全てのセルに貼り付けて下さい。  次に、東京シートのコピーシートを必要な店舗数分だけ複製してから、Sheet1以外の各々のシート名を各店舗名と同じ名称に変更して下さい。  これで、各店舗のシートに、店舗毎に、日付別で商品毎の入って来た数量の合計が、自動的に表示されます。

この投稿のマルチメディアは削除されているためご覧いただけません。

関連するQ&A

  • A列を検索し一致した行を表示。さらにそれらの平均を出す。

    こんばんは、いつもお世話になっています。 今回は関数で出来るのかわからないんですが質問させてください。    A   B   C     商品名  個数 販売数 1 りんご  1   2 2 なし   3   5 3 ぶどう  7   9 4 りんご  2   4 上のようにSheet1に表があったとします。 A列の「りんご」を検索し、1行目と4行目を別シートに表示 その結果を下のように平均・最大・最小という風に表示したいのですが可能でしょうか?    A   B   C     商品名  個数 販売数 1 りんご  1   2 2 りんご  2   4 3  4 最大   2 5 最小   1 6 平均   2 実際はに作っている表の列は「Z」まであり、行も毎日入力するものなのでかなりの数になります。 自分でもいろいろ試してA列を=DGETで検索したのですが1つしか表示されなくてダメでした。 だめだめな自分にお知恵を貸してくださいm(_ _)m

  • エクセル マクロ 対象列をコピーする

    エクセル マクロについて質問です。 下記のようなデータがありますが、【商品名】ごとにまとめたものを 別のシートへ行ごとコピーをして、商品名毎にまとめたいと思っています。 マクロの構文が思いつかず、よい方法はないでしょうか。 初歩的な質問かも知れませんがおしえてください。 マクロ実施前 【県名】  【商品名】 【売り上げ日】 【その1】 【その2】 埼玉県   A 東京都   B 神奈川県  B 千葉県 A 栃木県   C 群馬県   D マクロ実施後↓↓ Aシート 【県名】  【商品名】 埼玉県   A 千葉県 A Bシート 【県名】  【商品名】 東京都   B 神奈川県  B Cシート 【県名】  【商品名】 栃木県   C 群馬県   D Dシート 【県名】  【商品名】 群馬県   D

  • 列挿入時の指定文字入力と転記をマクロでやりたい

    毎月、アンケート集計結果がエクセルで送られてきます。 中身は、商品名ごとにシートが分かれており、1行目はタイトル行となっています。(月によってデータ個数は変わります。) 年度毎の累計を別ブックで1枚のシートで作成したいと思っております。 その際マクロで、A列に月、B列に商品名と挿入し、かつ自動で、月と商品名が入力されるようにはできないでしょうか? A  B   C D 1 時間 名前 ~ ~  2 ○時 ○○ 3 ○時 ○○    ↓ A  B   C   D 1 月 商品名 時間 名前 ~ ~  2 ○月 ○○ ○時 3 ○月 ○○ ○時 また、タイトル行を除いた、複数の特定の列の最終行(入力されているセル)を取得し(上記とは別)別ブックの最終行(入力されているセルの次の空白セル)に転記できますか?

  • 【Excel】行と列で値を検索したい

    こんにちは Sheet1に表があります。 Sheet2のA列と1行に値を入力したときに、 Sheet1の交わる値を表示したいのですが、 Sheet2のB2、C2、B3、C3の式を教えて下さい。 Excel2013です。 宜しくお願いいたします。

  • 1行の中に該当する文字列の個数をカウントしたい

    お世話になります。Excelの基本的な関数の話かもしれませんが 教えていただきたいことがあります。 A B C D 東京 神奈川 千葉 埼玉 大阪 東京 福岡 東京 神奈川 千葉 東京 千葉 上記のテーブルの各行において、 F 東京 神奈川 千葉 の列に当てはまる文字列の個数をH列に表示したいと考えています。 期待したいH列の表示は H 3 2 4 です。 Fが東京だけでしたら、COUNTIF関数を使う予定でしたが、 適切な関数が思い浮かばず、調べましたがよく調べられませんでした。 上記に表現できていませんが ・テーブルの行は1000、列は30あります。 ・F列は50行ぐらいあります。 お手数ですが、ご教示下さい。よろしくお願いします。

  • エクセルで指定した数字を含む検索について

    初歩的な質問で申し訳ございません。 添付のような表があり、現在はA列にオートフィルタをかけて数字下二桁を入力後、ソートがかかった商品表示され、日付の 列に個数の入力を行っています。(A列の番号は20桁位あるので、実際は下4桁で検索しています。) 【現在の作業】 A列にオートフィルタから下4桁入力後に検索→日付の列に個数を入力→また検索 【理想の作業】 ある程度、検索する商品の番号の下4桁をどこかに候補として挙げ、その数字を含む行だけ表示→一気に個数だけ入力 VBAでもマクロの記録でも何かよい方法はございませんでしょうか? イメージとしては、1行目から5行目にあるオレンジのボックスの中に検索したい商品の番号4桁をいくつか入力し、それに該当する商品だけを7行目のA列から検索し、その枠ごとに記載された数字を含む行のみソートされ表示されるようにできると助かります。 どうぞよろしく御願いいたします!初歩的な質問で申し訳ございません。 添付のような表があり、現在はA列にオートフィルタをかけて数字下二桁を入力後、ソートがかかった商品表示され、日付の 列に個数の入力を行っています。(A列の番号は20桁位あるので、実際は下4桁で検索しています。) 【現在の作業】 A列にオートフィルタから下4桁入力後に検索→日付の列に個数を入力→また検索 【理想の作業】 ある程度、検索する商品の番号の下4桁をどこかに候補として挙げ、その数字を含む行だけ表示→一気に個数だけ入力 VBAでもマクロの記録でも何かよい方法はございませんでしょうか? イメージとしては、1行目から5行目にあるオレンジのボックスの中に検索したい商品の番号4桁をいくつか入力し、それに該当する商品だけを7行目のA列から検索し、その枠ごとに記載された数字を含む行のみソートされ表示されるようにできると助かります。 どうぞよろしく御願いいたします!

  • エクセルで行と列の入れ替え

    エクセルで表を作成している途中ですが、行と列を変更したいのですが出来ますか?ご存じの方ヨロシクお願いします。     海  山  川 東京 埼玉 千葉 を   東京  埼玉  千葉 海 山 川 に変えたいんです。

  • 特定列の転記とシート作成とシート名変更。

    A1からBU160までの表があります(1行目はタイトル行 表は可変です) この表の特定列(例えばBU列)の文字が入っているところまで選択し(タイトル行を除き)コピーするにはどうすればよいですか? また、貼付け先の転記用ブックにおいて、もともとあるシートをコピーし、新たにシートを作りたいのですが、できたシート名に日付をいれるには、どのようなマクロを組めばよいですか?

  • 1枚のシートに集計を入力して別シートで印刷

    シート1に日付と商品の個数を入力して別のシートに日付指定してその日の集計を印刷をしたいのですが日付の指定がうまうできないので教えて下さい。 エクセルは2010です。 シート1(入力のみ)      1日   2日   3日・・・・・ 商品1  2    3     5 商品2  4    1     2 商品3  3    3     3 シート2 1日←日付指定 商品1  2 商品2  4 商品3  3 シートを日数分作り印刷をするのも考えたのですが出来ればシートを増やしたくないので ご教授宜しくお願いします。

  • 日付から特定の行のセル内データを取得したい。

    列に日付、行に時間を入力データの内容は商品の販売個数です。 要するに日付毎の時間別販売数を調べたいのですが、 列の日付の下に各品名を数項目並べております。 この様なデータを個人別のシートで入力しています。 行いたい事は、そのデータを別シートで日付毎に参照したいのです。 あるセルに18と入力すれば、18日分の売り上げデータを一枚のシートに表示させたいのです。 これが一商品だけの集計なら「HLOOKUP」関数で普通に参照できるのですが、列に日付と商品、行に時間を入れているためどの様に参照すればよいのか判りません。 =HLOOKUP(A1,'名前'!A3:AF20,6,0) コレではその日の一番左の列の商品データしか参照できませんでした。 日付を入力するだけで複数の商品を時間帯毎に参照出来るような上手いやり方はありませんでしょうか? 宜しくお願い致します。

専門家に質問してみよう