- 締切済み
エクセルで作成した表から明細を作成したいのですが何かいい方法はないしょうか
縦軸に店舗名、横軸に日付をとり、セルにそれぞれの店舗のその日付毎の請求書番号と請求金額(別のセルです)を入力しています。 一ヶ月の表から店舗毎別シートで縦軸に日付をとり、横軸に請求書番号と請求金額をとって一覧表を作りたい訳です。 その時日付は請求書が無い日は詰めて一覧表にしたいのです。 文字列検索関数を使ったらうまくいくんじゃないかと考えたのですが どうもうまい具合にいきません。 ご存知の方がおられたら是非教えてください。 下図のようなものを作りたいのです。 A B C 請求書No. 金額 1 2/2 3422 32,989 2 2/7 3567 12,333 3 2/10 3877 34,234 4 2/14 3889 22,567 5 2/18 3922 56,444
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- Nouble
- ベストアンサー率18% (330/1783)
nice-guy7762さんの補足欄への書き込みを拝見しました 察するに 日付 店舗名 請求書No. 金額 請求書No. 金額 請求書No. 金額 請求書No. 金額… となっている表を 店舗名 請求書No. 金額 請求書No. 金額 請求書No. 金額 と言う風に折り返し 店舗名 日付 請求書No. 金額 日付 請求書No. 金額 日付 請求書No. 金額 と言う風に尚したいという事ですね ご意向は尊重しますが 余りお勧めできません と言いきってしまうと元も子もないので方法ですが VBAが一番適切だと思いますが今一自信がないので他の方法で 正規表記検索の出来るテキストエディッターをご用意下さい 無料配布もので機能面では充分だと思います セキュリティー面で心配なら精査される必要が出てくると思います ご用意頂けたなら 置換でタブをスペースに置き換えてください 同じく置換で「s」(←スペースの意味)*「s」*「s」 を 「s」「s」*「s」*\n に置き換えて 更にスペースをタブに置き換えてください 余り自信がないですが取り敢えず試行錯誤頂ければ出来ると思います ただ費用対効果は叶わないかも知れません もう一つの方法として 1日から月末まで飛んだ日付がないと仮定できたならですが まず縦と横を入れ替えます 方法は表全体をコピーして 何処かの真っ新のシート(仮にtempとシートに名付けます)に「形式を選択して貼り付け」の「行と列を入れ替える」にチェックを入れて貼り付けてください この状態でこの表の横の開いている列に対し 店舗名と同じ行に見出しとして適当に名前を付けてください 何でも良いです そしてその下に1と2を延々に交互に下へゝ入れていってください この状態で1の行に請求書ナンバー、2の行に金額となっていると思います 今見出しとして名前を入れた行の一番左に行ナンバーか記載されたところがある遠見マスのでクリックしてください 行全体が選択されると思います この状態でメニューバーの中からデータプルダウンメニュー内のフィルターメニュー内にあるオートフィルターを選んで頂くと 選択されていた行全てに下向き▽が現れると思います 先ほど見出しとして名前を付けた行に行き▽をクリックするとリストが現れますので まずは1を選んでください 今これにより横軸に店舗名、縦軸に日付が取られた表が現れたと思います 此処でまた新しいシートを店舗数分ご用意下さい 列名が表示されている戸頃を日図ヶと店舗名の2行分だけドラッグしながら選択してコピー 該当する店舗のシートへ貼り付けてください TEMPシートへ戻り今貼り付けた店舗がある列の列名をクリックして 右クリックから現れるプルダウンメニュー内より「表示しない」を選択してください 未コピーの店舗データーが日付の横に来たと思います また2列選択してコピーペースト 1列「表示しない」として下さい これを1と書かれている列と日付が書かれている列以外見えなくなるまで続けてください この段階で各店舗毎の日付と請求書ナンバーが横並びになった表が出来ていると思います 此処に金額を付け加えれば良いわけですね 金額はTEMPシートで今「表示しない」とした列を 番号の一番上、列名の一番左の四角をクリックしてシート全体を選択した後に 列名の上で右クリックにより現れるプルダウンメニューより「再表示」を選択して全て復活させて 仮の見出し名を付けた列の▽をクリックして現れるリストの中から2を選べば さっきと同様に横軸に店舗名、縦軸に日付、内容は金額となった表が現れると思います これを先ほどと同じ手法で各店舗用シートの先程貼った横に日付がずれないように貼っていきます 請求書No.と金額の間の不要な列を2列目の日付列も含め削除します 各店舗用シートのデータの一番上に見出しとしてそれぞれ 日付 請求書No. 金額と記入します 店舗用シート全てのシートに対し 日付から金額までずるっと選択し また、メニューバーの中からデータプルダウンメニュー内のフィルターメニュー内にあるオートフィルターを選んで頂くと 選択されていた部位全てに下向き▽が現れると思います 請求書ナンバーもしくは金額の場所の▽をクリックして現れるリストより 空白以外を選択してください これでお望み表が得られたと思います 如何ですか? 応用すればnice-guy7762さんの示された表も簡単にできると思いますよ
- Nouble
- ベストアンサー率18% (330/1783)
縦軸と横軸という言い回しに慣れていないせいか 伝わってくるものがいまいちありません 確かにグラフなどでは縦軸横軸という言い方はしますし 恐らくは元の表が提示されていない性だと思うのですが 例えば仰っている表がこういう表ならば同じ言い回しになるとも思えます 5月 6日 7日 8日 9日 … 店舗名 A B C D E … しかし上記のような表は情報密度が低く一般的とは言えない上 請求書ナンバーを記載する欄がないなどのこともあり にわかにはこれを指されているとは思えませんので 理解を超えてしまっています 普通はnice-guy7762様が示されているようなものの方が加工もし易い上 情報密度も格段に高くなりますので よく採用されているように見受けます ただ、仮に「まさしく上記の表だ」ということであれば ピボットテーブルを用いることが最適だと思います ピボットテーブルで見出し欄に店舗名を入れれば お考えになっている通りのものとなるように思います ですが、出来れば今一度 「どの様な表からどの様な表」という例を補足などに示して頂けますと もっと適切で具体的な回答が出来るかと存じます
- nice-guy7762
- ベストアンサー率26% (185/696)
みなさんよく質問者のような表の作り方をされるんですが、このような作り方はデータベースの考え方からすると全く間違っています。エクセルをデーターベースソフトとして活用するなら、発想を変えて次のようにしたらどうですか。 1行が1データです。 A列には店舗名。B列には日付、C列には請求書NO、D列には金額を入力します。E列以降にデータを入力してはいけません。 本店 2/2 3422 32,989 支店1 2/7 3567 12,333 本店 2/10 3877 34,234 本店 2/14 3889 22,567 支店2 2/18 3922 56,444 支店1 2/21 3658 15,265 支店2 2/21 2568 25,253 とこのようにA列には店の名前をダブって構わないので必ず入力することです。これで横1行が1データとなります。 こうしておいてNo1の方の言うように オートフィルターをかければ店名でも、日付でも集計できます。ピボットテーブルを使うと良いかもしれません。
- aikenka
- ベストアンサー率21% (5/23)
NO.1です。 下に書いた方法では、請求書No.と金額が横には並びませんね。 失礼しました。 請求書No.と金額が、1ヶ月の表にどのように入力されているかを書いたほうが回答しやすいと思います。
- aikenka
- ベストアンサー率21% (5/23)
1ヶ月の表全体にオートフィルタをかけ、 ピックアップしたい店舗の名前だけを表示させ、 表示された情報を全選択して、 別シート(店舗別シート)に、 形式を選択して貼り付け→行列を入れ替える、 で貼り付けをするのはどうですか?
補足
早速の回答ありがとうございます。 縦軸は1セル毎に店舗名です。 横軸は(10/1請求書No.)(10/1金額)(10/2請求書No.)(10/2金額)(10/3請求書No.)(10/3金額)・・・・ と交互に入力しています