二枚のシートから各シートへの抽出

このQ&Aのポイント
  • 会計処理する上で、普通預金シートと現金シートがあり、明細を記入していきます。項目には日付、摘要、収入、支出、残高があります。会議費を含む明細を記入する場合、普通預金と現金シートに別々に記入する必要がありますが、これを会議費シートに自動で追加する方法があるかどうか教えてください。
  • 現在の方法では、会議費を支払った場合には普通預金と会議費の2枚のシートに記入しなければならず、間違いが起こりやすくなっています。したがって、普通預金か現金のどちらかのシートに記入すると、会議費シートに自動で反映されるようにしたいと考えています。
  • 会議費シートを作成し、普通預金と現金シートに記入された会議費の明細を自動で追加する方法はありますか?現在の方法では、同じ明細を2枚のシートに記入する必要があり、分かりづらくなっています。
回答を見る
  • ベストアンサー

二枚のシートから各シートへの抽出

すみません、日を改めての再投稿です。 会計処理する上で下記のような方法が出来るかどうか教えて下さい。 「普通預金」シートと「現金」シートがあり明細を記入していきます。 項目には「日付」「摘要」「収入」「支出」「残高」があります。 そこで項目に「番号」を追加し、下記の通りに置き換えます。 会議費=1 「会議費」シートを作成し、「普通預金」と「現金」シートに記入した分は会議費シートに 追加されていくという方法は可能でしょうか? わかりづらい説明で大変申し訳ありません。 現在の方法だと、例えば「現金」で「会議費」を支払ったとすると、 「普通預金」と「会議費」 2枚に記入しなくてはならないため間違いも起こりやすくなっています。 「普通預金」か「現金」シートに記入すれば自動的に「会議費」に反映されるようにしたいということです。 一応画像も作成してみたのでご参考になれば幸いです。 よろしくお願いいたします。

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

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

No.2です! 続けてお邪魔します。 前回の続きです。 「現金」Sheet見出し上で右クリック → コードの表示 → VBE画面に↓のコードをコピー&ペースト Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'この行から Dim k As Long k = Cells(Rows.Count, 2).End(xlUp).Row If Cells(k, 7) = 1 Then Call ThisWorkbook.会議費マクロ End If End Sub 'この行まで 同様に「普通預金」Sheetにも全く同じコードで良いですのでコピー&ペーストしてみてください。 尚、会議費SheetのH列に作業用の列が見えていますが、目障りであればH列を非表示にしておいてください。 尚、すべてのSheetにまだデータがない場合は「会議費マクロ」は実行する必要ありません。 「現金」「普通預金」Sheetに入力すれば自動的に「会議費」Sheetに反映されると思います。 お役に立てば良いのですが、他に良い方法があればごめんなさいね。m(__)m

その他の回答 (2)

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

こんばんは! なかなかご希望の動きができないようですが・・・ VBAでの方法を持ってきました。 一例です。 ↓の画像(小さくて見づらいかもしれません)のような配置でやってみました。 Sheet名は 「現金」・「普通預金」・「会議費」としています。 画面左下のSheet見出し(とりあえず「会議費」Sheet)上で右クリック → コードの表示 → VBE画面が出ますので、 表示された左側のほうに「Thisworkbook」があると思いますので、そこをダブルクリック 新たに画面が表示されますので、↓のコードをコピー&ペーストしてマクロを実行してみてください (Alt+F8キー → マクロ → マクロ実行です) Sub 会議費マクロ() 'この行から Dim ws1, ws2, ws3 As Worksheet Dim i, j, k As Long Set ws1 = Worksheets("現金") Set ws2 = Worksheets("普通預金") Set ws3 = Worksheets("会議費") For i = 7 To ws1.Cells(Rows.Count, 2).End(xlUp).Row + 1 On Error Resume Next If ws1.Cells(i, 7) = 1 And WorksheetFunction.CountIf(ws3.Columns(8), _ ws1.Name & ws1.Cells(i, 2) & ws1.Cells(i, 3)) = 0 Then With ws3.Cells(Rows.Count, 2).End(xlUp).Offset(1) .Value = ws1.Cells(i, 2) .NumberFormatLocal = "yy/mm/dd" .Offset(, 1).Value = ws1.Cells(i, 3) .Offset(, 2) = ws1.Cells(i, 4) .Offset(, 3) = ws1.Cells(i, 5) .Offset(, 6) = ws1.Name & ws1.Cells(i, 2) & ws1.Cells(i, 3) End With End If Next i For j = 7 To ws2.Cells(Rows.Count, 2).End(xlUp).Row + 1 If ws2.Cells(j, 7) = 1 And WorksheetFunction.CountIf(ws3.Columns(8), _ ws2.Name & ws2.Cells(j, 2) & ws2.Cells(j, 3)) = 0 Then With ws3.Cells(Rows.Count, 2).End(xlUp).Offset(1) .Value = ws2.Cells(j, 2) .NumberFormatLocal = "yy/mm/dd" .Offset(, 1).Value = ws2.Cells(j, 3) .Offset(, 2) = ws2.Cells(j, 4) .Offset(, 3) = ws2.Cells(j, 5) .Offset(, 6) = ws2.Name & ws2.Cells(j, 2) & ws2.Cells(j, 3) End With End If Next j k = ws3.Cells(Rows.Count, 2).End(xlUp).Row Range(ws3.Cells(4, 2), ws3.Cells(k, 8)).Sort key1:=ws3.Cells(4, 2), order1:=xlAscending End Sub 'この行まで あっ!2000文字を超えそうなので 別Sheetのコードはもう一度投稿します。m(__)m

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

質問する上で下記を知って置いてください 再質問なら、前の質問番号を参考までに記す。前との関連がわかって質問が理解しやすい場合もある。 本コーナーの画像貼り付けなんだが、くっきりしたものもあるが、ぼやけて見難いとか、文字が小さすぎて見えない、とかが多い。本件も一度読者の立場で質問を見てください。見えないのではないですか。 現実問題を簡略化して、エクセルシートに例をつくり、それを質問文章の中にデータを貼り付けてほしい。 私は回答で、ほぼ全問で逆のことをしてます(エクセルのシート上で回答内容をテストし、シートをコピーして回答文に貼り付ける)。列の左右位置が乱れることもあるが。 ーー 本件の質問文ですが判りにくい。 シートは2つらしいが >普通預金」シートと「現金」シート >普通預金」と「会議費 とバラバラの表現になっている。 >項目には「日付」「摘要」「収入」「支出」「残高」があります。 は2シートともこの項目なのか >そこで項目に「番号」を追加し、下記の通りに置き換えます。会議費=1 はどちらのシートか? 番号というよりも費目「コード」(列を作る)が適当だろう。 >「会議費」シートを作成し 第3のシートを作るのか? 読み直して、他に解釈されないか推敲のこと。回答者も下記など1時間ぐらいかかるのだ。 ーーーー 質問者の技量が書いてないので判らないが、VBAは出来ず、関数ばかりを頼るなら、難しいと思う。 と言うのは関数では、条件(=本件では会議費)で該当行を別シートに抜き出すのは難しい。 Googleでimogasi方式で照会すれば、このコーナーに出た抜き出し問題で、数百は出てくると思う。しかし INDEX、MATCH、SMALL関数を組み合わせた数式 配列数式 imogasi 方式 その他の方式 VBAなどの方式 による回答があると思うが、1番目の方式の式の理解が難しいと思う。 良ければ勉強して使えば良い。 素直なのはフィルタオプションの設定で、会議費の項目の在る行を別シートに抜き出すことだ。 ただこの方式は、データ入力が1月分などまとめて入力が終わってからの方法で、入力の都度反映の方式ではない。 ーー 参考までに imogasi方式は 例データ Sheet1 日付 費目 金額 作業列 2011/3/1 交際費会費費 1 2011/3/2 定例会議費 2 1 2011/3/3 文具費 3 2011/3/4 交際費 4 2011/3/5 消耗品費 5 2011/3/6 交通費 6 2011/3/7 接待会議費 7 2 2011/3/8 会議費補助 8 3 だ行列はD列で D2には =IF(COUNTIF(B2,"*会議費*")=0,"",MAX($D$1:D1)+1) 会議費だけの表現しかないなら、式はもっとわかりやすく*は要らない。 会議費という語句が含まれていたら、上からの会議費の行の最大番号に+1して、連番を作る、と言う意味。 ーー 次にSheet2で ($C$30の部分は適当数に設定のこと) A2に =INDEX(Sheet1!$A$2:$C$30,MATCH(ROW()-1,Sheet1!$D$2:$D$30,0),COLUMN()) これをC列まで式複写 A2:C2の式を下方向に式複写 Sheet2の行番号ROW()を頼りに、SheetのD列に1,2,3・・も行を見つけて、その各列のデータを引っ張ってきている。 #N/AはD列のMAXを超えたら戸要ったIF関数をかぶせて、見えなくする(略)。 結果 2011/3/2 定例会議費 2 2011/3/7 接待会議費 7 2011/3/8 会議費補助 8 #N/A #N/A #N/A ーー このやり方はSheet2の式を適当に多数の行に用意しておけば、Sheet1で会議費行が増える都度、Sheet2に反映する。 これとてもSheet2はデータのセルすべて関数式で埋まるので、データが1000行とかを越えると(増えたとき)動作はどうなるか判らない。

関連するQ&A

  • 2枚のシートから各シートへの抽出

    会計処理する上で下記のような方法が出来るかどうか教えて下さい。 「普通預金」シートと「現金」シートがあり明細を記入していきます。 項目には「日付」「摘要」「収入」「支出」「残高」があります。 そこで項目に「番号」を追加し、下記の通りに置き換えます。 会議費=1 「会議費」シートを作成し、「普通預金」と「現金」シートに記入した分は会議費シートに 追加されていくという方法は可能でしょうか? わかりづらい説明で大変申し訳ありません。 現在の方法だと、例えば「現金」で「会議費」を支払ったとすると、 「普通預金」と「会議費」 2枚に記入しなくてはならないため間違いも起こりやすくなっています。 「普通預金」か「現金」シートに記入すれば自動的に「会議費」に反映されるようにしたいということです。 一応画像も作成してみたのでご参考になれば幸いです。 よろしくお願いいたします。

  • エクセルで番号から別のシートにデータ引用

    会計処理する上で下記のような方法が出来るかどうか教えて下さい。 「普通預金の明細記入」シートがあり通帳記帳と同じ内容を一覧で書いていきます。 項目には「日付」「摘要」「収入」「支出」「残高」があります。 そこで項目に「番号」を追加し、下記の通りに置き換えます。 会議費=1 振込=2 利息=3 「会議費」「振込」「利息」シートを作成し、「普通預金の明細記入シート」 に記入した分はそれぞれのシートに追加されていくという方法は可能でしょうか? わかりづらい説明で大変申し訳ありません。 現在の方法だと例えば「振込」で10,000円使用したとすると、 「普通預金の明細記入シート」と「振込シート」 2枚に記入しなくてはならないため間違いも起こりやすくなっています。 「普通預金の明細記入シート」に記入すれば自動的に「振込シート」に反映されるようにしたい ということです。 よろしくお願いします。

  • EXCEL シート毎の集計

    一覧表のシート(年月日、摘要、科目、金額、収入、支出、残高)から 科目(会議費・衛生費・備品etc)毎にシートに分けて、科目毎に集計するシートを作りたいのですが、どうやったら作れるのでしょうか? シートに移行したいデータは、一覧表にある科目毎のデータ(年月日、摘要、摘要の金額)です。 何か良い方法があればアドアイスお願いします。 よろしくお願い致します。

  • 異なるシートからの集計と転記について

    収入明細書と、支出明細書があります。 それぞれ書式が違います。 それぞれの明細書には日付、摘要、単価、個数、金額等を打ち込みますが、収入と、支出の明細書では若干項目や、セルなどの位置が違います。 収入、支出の明細書は取引がある場合は、1日1枚の提出なので日ごとに1シート作成していかないといけないかなと思っています。 この2つの明細書の内訳内容をもう1つの収支報告書に転記し、 日付、摘要、金額等を集計し、入出金の流れや、現金残高などを把握します。 漠然とした内容でお答え頂くにもわかりにくいのではないかと思います。ごめんなさい。 ただ、別々1日1シートで、入出金の明細の書式が違うのでどうすればいいのか全然思い浮かばず、どうすべきなのかをお知恵をいただけたらと思っています。 ・私が考えたのは、それぞれのシートを新たな1シートに必要項目のみとばす。(収入と支出でセルの位置や項目が違うのでうまくとばせないのが問題) ・上記のシートからさらに新たなシートに収支報告書用に整列させる。(収支明細書で使用しなかった行が空欄でとんでくるので邪魔になる) ・上記のシートを収支報告書にとばす。 とまでは考えたのですが、問題が山積みで… きっともっとよい方法があるのではと思っています。 私はエクセル初心者ではありませんが、独学ですので本当の意味での理解が出来ていないと思います。 わかりやすく教えて頂けたらうれしいです。 また、マクロはまったくわかりません。 少しずつ勉強していきたいと思っていますが、出来れば関数等で作成できたらと思っています。 どうかよろしくお願い致します。

  • EXCEL2007です。1つのシートから複数のシートに項目ごとに振り分けることはできますか?

    EXCEL2007を使用しています。 1つのシートに2008年度の会計をまとめていましたが,それを項目ごとにシートわけをしたいのです。 たとえば [SHEET1] 月 日 項目  内容    収入   支出   残高 4   10 会費  4月分    10000          10000 4   20 会議  定例会議       5000       5000 4   30 事務費 文具         500       4500 5  10 会費  5月分    10000          14500 となっている場合,会費だったらSHEET2,会議だったらSHEET3に,というようにしていきたいのです。 どのような関数を使用したらできるでしょうか? どなたかわかる方がいらっしゃいましたら,教えていただきたいと思います。 また,この先のSHEET1に追加していく予定なのですが,それらを自動的に振り分けることはできるでしょうか? EXCELは基本的な関数(if,sumなど)が使えるようになってきたばかりの初心者です。 よろしくお願いいたします。

  • エクセルの集計についてです。

    家計簿的なものを作っています。 ・シート1…普通預金と現金を合わせた表(全ての出入)       ・A1---日付       ・B1---入金       ・C1---出金       ・D1---残高       ・E1---摘要 ・シート2…現金(手許金のみの詳細)       ・項目はシート1と同じ内容 シート1の「摘要」の内容が"手許金"ならシート2へ全ての項目を集計する、という事は可能でしょうか。 エクセルの知識については基本的な事は分かります。

  • エクセル ある条件のとき、別のシートの行の最後に転記する方法

    エクセル ある条件のとき、別のシートの行の最後に転記する方法 現在、会計をエクセルで作成中です。 エクセル初心者で複雑な関数やマクロはわかりません。 目的は経費のらん写真では左上の消耗品費のシートに入力された場合に 別のシートに転記する方法しってる方、いたら教えてください。 ■1 現金、預金、未払金と3つの選択があります。 現金と入力されたら「現金出納帳」の1番下に転記。 同様に普通預金が選択された場合は「預金出納長」の1番下に転記。 未払金の場合は未払金の借方に転記したいです。 ■2 適用部分はそんそまま転記。 ■3 差引残高に入力されて数値が 現金の場合は「支出」欄 未払金の場合は「借方」欄 普通預金の場合は「貸方」欄 に転記するようにしたいです。 分かる方よろしくお願いします。

  • エクセルでシートの一覧表から必要な行だけを別のシートにコピーできる関数を教えてください

    エクセルで家計簿を作っています。 Sheet1にはすべての取引を記入した上で口座取引は口座毎に別のSheetに通帳記入のような形で記入したいのですが、 該当する関数が分かりません。 例えばSheet1の項目を『1列=No.,2列=日付,3列=収入費目,4列=収入内訳,5列=支出費目,6列=支出内訳,・・・10列=収入金額,11列=支出金額,12列=現金残高』とします。 口座引出の場合は収入費目=口座引出、収入内訳=銀行口座名、収入金額=口座引出額 口座預入の場合は支出費目=口座預入、支出内訳=銀行口座名、支出金額=口座預入額 です。 そこで、収入内訳or支出内訳の銀行口座名がA銀行の行のみをSheet2(A銀行)にSheet1のデータをもってきて、A銀行の残高を集計します。 例えばSheet1にデータが50行あったとして、そのうち3,10,17,29,48行目の収入内訳or支出内訳だった場合、Sheet2にはその5行のみが自動的に反映されるという関数です。 説明下手で申し訳ありませんが、ご回答頂ければ助かります。

  • シート間での連動反映

    誰か!!助けて下さい。。 現在、経理用の表を作成しています。 ひとつのブックを【月単位】として、1日~31日までをシートで・・・というようなものです。。シート名は半角で『7.30』という形式で入れています。 各シート、表の一番下のセルに『本日の現金残高』が計算表示されるようにしました。 そのセルの値をそのまま、自動的に次シートにある『前日現金残高』セルに(例:6/1〈1シート目〉→6/2〈2シート目〉→6/3・・・・)というように連動して反映〈表示〉させたいのです。。。。 ちなみに全シート、形式は全く同じです。なので両セルとも、当たり前ですがシート上で同じ位置にあります。 それからセルですが・・・ 3のI~Qまでを結合して一つのセルとして、ここが『前日現金残高』、つまりここに前日分を反映させたいです。 前日分は53のI~Qまでの結合セルで、ここが『本日の現金残高』になりま やり方がわからなくて、その部分だけ毎日コピぺしていたのですが、これだと、途中入力ミスや追加があった場合にまた一からやりなおしになってしまって困っています。 ちなみに雛形から毎月日数分コピーして使っていますが、もし上記が解決された場合、毎月1シート目(○月1日分)の『前日現金残高』セルは 前月bookの最終シートの『本日現金残高』と同じにしなくてはなりません・・・。ここは最悪、手入力でも構いませんが、こういう事を考慮に入れると、毎月のBOOK内のシート作りはどの様にしたらよいでしょうか??ただ、シートのコピペだけでは上手くいかない気がするのですが・・・・・・。 分かりにくい説明と思いますが、どうかよろしくお願いします。

  • 【エクセル】複数シートの同一セルの内容を別のシートに自動反映させたい

    エクセルについて教えてください。エクセル初心者なので、説明がうまくできないのですが、やりたいことを汲み取っていただけると助かります。 現在複数シートのシートの同一セル上に数字が記入されています。 新たに別シートを作成し、その表に数字が自動入力されるように したいのですが、何か方法はありますでしょうか。 例)(1)シート1~12のA10セルに4月-3月までの支出合計が    記入されている。   (2)別シートに縦罫4月-3月、横罫支出合計とした表を作成。   この表に月ごとの支出合計が自動的に反映されるように   したいのですが、今はセル一つずつに"=シート1のセルA10"を   入力しています。   この方法以外に便利な方法があったら教えてください。   説明下手で申し訳ございませんが、宜しくお願い致します。

専門家に質問してみよう