ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Excel(エクセル)活用コミュの分かる方教えてくださいm( __ __ )m

  • mixiチェック
  • このエントリーをはてなブックマークに追加
エクセル ある条件のとき、別のシートの行の最後に転記する方法


現在、会計をエクセルで作成中です。
エクセル初心者で複雑な関数やマクロはわかりません。
(基本的な部分は分かります)

目的は経費の欄(写真では左上)の消耗品費のシートに入力された場合に
別のシートに転記する方法知ってる方いたら教えてください。

■1
現金、預金、未払金と3つの選択があります。
現金と入力されたら「現金出納帳」の1番下に転記。
同様に普通預金が選択された場合は「預金出納長」の1番下に転記。
未払金の場合は未払金の借方に転記したいです。

■2
適用部分はそんそまま転記。

■3
差引残高に入力されて数値が
現金の場合は「支出」欄
未払金の場合は「借方」欄
普通預金の場合は「貸方」欄
に転記するようにしたいです。


分かる方よろしくお願いします。

コメント(9)

以下の式で画像と同じようなものは出来ると思います
ただ、使い方が分からないので、消耗品費Sheetにのみ入力があり
出納帳Sheetに直接入力がないことを想定しています
また、消耗品費以外のSheetからの転記は想定していません
このようなことを想定するのであれば、VBA(マクロ)のほうが簡単かと

[消耗品費]Sheet
I6セル =IF(D6="","",D6&COUNTIF($D$6:D6,D6))
I6セルを適当な行までコピー又はオートフィル

[現金出納帳]Sheet
B7セル =IF(ISNA(MATCH("現金"&ROW()-6,消耗品費!$I:$I,0)),"",INDEX(消耗品費!$B:$H,MATCH("現金"&ROW()-6,消耗品費!$I:$I,0),1))
C7セル =IF(ISNA(MATCH("現金"&ROW()-6,消耗品費!$I:$I,0)),"",INDEX(消耗品費!$B:$H,MATCH("現金"&ROW()-6,消耗品費!$I:$I,0),2))
D7セル =IF(B7="","","消耗品")
E7セル =IF(ISNA(MATCH("現金"&ROW()-6,消耗品費!$I:$I,0)),"",INDEX(消耗品費!$B:$H,MATCH("現金"&ROW()-6,消耗品費!$I:$I,0),4))
G7セル =IF(ISNA(MATCH("現金"&ROW()-6,消耗品費!$I:$I,0)),"",INDEX(消耗品費!$B:$H,MATCH("現金"&ROW()-6,消耗品費!$I:$I,0),7))
B7:G7を適当な行までコピー又はオートフィル

[預金出納帳]Sheet
B7セル =IF(ISNA(MATCH("普通預金"&ROW()-6,消耗品費!$I:$I,0)),"",INDEX(消耗品費!$B:$H,MATCH("普通預金"&ROW()-6,消耗品費!$I:$I,0),1))
C7セル =IF(ISNA(MATCH("普通預金"&ROW()-6,消耗品費!$I:$I,0)),"",INDEX(消耗品費!$B:$H,MATCH("普通預金"&ROW()-6,消耗品費!$I:$I,0),2))
D7セル =IF(B7="","","消耗品")
E7セル =IF(ISNA(MATCH("普通預金"&ROW()-6,消耗品費!$I:$I,0)),"",INDEX(消耗品費!$B:$H,MATCH("普通預金"&ROW()-6,消耗品費!$I:$I,0),4))
G7セル =IF(ISNA(MATCH("普通預金"&ROW()-6,消耗品費!$I:$I,0)),"",INDEX(消耗品費!$B:$H,MATCH("普通預金"&ROW()-6,消耗品費!$I:$I,0),7))
B7:G7を適当な行までコピー又はオートフィル

[未払金]Sheet
B6セル =IF(ISNA(MATCH("未払金"&ROW()-5,消耗品費!$I:$I,0)),"",INDEX(消耗品費!$B:$H,MATCH("未払金"&ROW()-5,消耗品費!$I:$I,0),1))
C6セル =IF(ISNA(MATCH("未払金"&ROW()-5,消耗品費!$I:$I,0)),"",INDEX(消耗品費!$B:$H,MATCH("未払金"&ROW()-5,消耗品費!$I:$I,0),2))
D6セル =IF(B6="","","消耗品")
E6セル =IF(ISNA(MATCH("未払金"&ROW()-5,消耗品費!$I:$I,0)),"",INDEX(消耗品費!$B:$H,MATCH("未払金"&ROW()-5,消耗品費!$I:$I,0),4))
F6セル =IF(ISNA(MATCH("未払金"&ROW()-5,消耗品費!$I:$I,0)),"",INDEX(消耗品費!$B:$H,MATCH("未払金"&ROW()-5,消耗品費!$I:$I,0),7))
B6:F6を適当な行までコピー又はオートフィル
書き忘れましたが

■トピック作成時のお約束
・トピックは参加者の共有物です。
・コメントの付いたトピックの削除は原則禁止。
・タイトルは具体的かつ簡潔に
 ×悪い例『教えてください』
 ○良い例『大量のデータの中で不必要な行を削除したい』
・1トピック1質問。
・別の質問がある場合は新たにトピックを作成しましょう。
・本文には具体的な状況や経過、Excelのバージョンも書きましょう。
 ※わかりづらいタイトルは管理人または副管理人が変更する場合あり。

をお読みになっていますか?
マリ男さん>

ありがとうございます。
参考にさせていただきます。

また題名の件、申し訳ございませんでした。
その部分までは拝見していませんでした。
参考ついでに、VBAの方も書いてみました
ただ、>2でも書いたように仕様が分からないので
実際に使うには多々改良する点があると思います
参考までに


現在、消耗品費のリストに載っているものは
例えば、以下のコードで各Sheetに転記出来ると思います
Sub Macro1()
For i = 6 To Range("B" & Cells.Rows.Count).End(xlUp).Row
  If Range("D" & i) = "現金" Then
    R = Sheets("現金出納帳").Range("B" & Cells.Rows.Count).End(xlUp).Row + 1
    Sheets("現金出納帳").Range("B" & R) = Range("B" & i)
    Sheets("現金出納帳").Range("C" & R) = Range("C" & i)
    Sheets("現金出納帳").Range("D" & R) = "消耗品"
    Sheets("現金出納帳").Range("E" & R) = Range("E" & i)
    Sheets("現金出納帳").Range("G" & R) = Range("H" & i)
  ElseIf Range("D" & i) = "普通預金" Then
    R = Sheets("預金出納帳").Range("B" & Cells.Rows.Count).End(xlUp).Row + 1
    Sheets("預金出納帳").Range("B" & R) = Range("B" & i)
    Sheets("預金出納帳").Range("C" & R) = Range("C" & i)
    Sheets("預金出納帳").Range("D" & R) = "消耗品"
    Sheets("預金出納帳").Range("E" & R) = Range("E" & i)
    Sheets("預金出納帳").Range("G" & R) = Range("H" & i)
  ElseIf Range("D" & i) = "未払金" Then
    R = Sheets("未払金").Range("B" & Cells.Rows.Count).End(xlUp).Row + 1
    Sheets("未払金").Range("B" & R) = Range("B" & i)
    Sheets("未払金").Range("C" & R) = Range("C" & i)
    Sheets("未払金").Range("D" & R) = "消耗品"
    Sheets("未払金").Range("E" & R) = Range("E" & i)
    Sheets("未払金").Range("F" & R) = Range("H" & i)
  End If
Next i
End Sub

もう少し短いコードでは以下のようなコードなどでも出来ると思います
Sub Macro2()
For i = 6 To Range("B" & Cells.Rows.Count).End(xlUp).Row
  If Range("D" & i) = "現金" Or Range("D" & i) = "普通預金" Then
    WS = Right(Range("D" & i), 2) & "出納帳"
  ElseIf Range("D" & i) = "未払金" Then
    WS = Range("D" & i)
  End If
  R = Sheets(WS).Range("B" & Cells.Rows.Count).End(xlUp).Row + 1
  Sheets(WS).Range("B" & R) = Range("B" & i)
  Sheets(WS).Range("C" & R) = Range("C" & i)
  Sheets(WS).Range("D" & R) = "消耗品"
  Sheets(WS).Range("E" & R) = Range("E" & i)
  If WS = "未払金" Then
    Sheets(WS).Range("F" & R) = Range("H" & i)
  Else
    Sheets(WS).Range("G" & R) = Range("H" & i)
  End If
Next i
End Sub


また、今後追加されるものに関しては
例えば、今までのものが変更され、それを別Sheetの方でも変更する
など面倒な仕様ではなく、ただ単に新たな行に入力されたとき
それをSheetに転記するのであれば、例えば
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column >= 2 And Target.Column <= 8 And _
  Target.Row = Range("B" & Cells.Rows.Count).End(xlUp).Row And _
  Application.WorksheetFunction.CountBlank(Range(Range("B" & Target.Row), Range("H" & Target.Row))) <= 1 Then
  i = Target.Row
  If Range("D" & i) = "現金" Or Range("D" & i) = "普通預金" Then
    WS = Right(Range("D" & i), 2) & "出納帳"
  ElseIf Range("D" & i) = "未払金" Then
    WS = Range("D" & i)
  End If
  R = Sheets(WS).Range("B" & Cells.Rows.Count).End(xlUp).Row + 1
  Sheets(WS).Range("B" & R) = Range("B" & i)
  Sheets(WS).Range("C" & R) = Range("C" & i)
  Sheets(WS).Range("D" & R) = "消耗品"
  Sheets(WS).Range("E" & R) = Range("E" & i)
  If WS = "未払金" Then
   Sheets(WS).Range("F" & R) = Range("H" & i)
  Else
   Sheets(WS).Range("G" & R) = Range("H" & i)
  End If
End If
End Sub
のようなコードで出来ると思いますよ
>6
トピのタイトルが良くないので、言い難いですが
コミュのトップか>3をお読みください
>マリ男さん

>3読みました。
どうしたらいいですか?
タイトルの変更は出来ませんし、質問の削除は禁止と書かれています。
>8 CASAさん
>7は>6で別の質問をされた方がいたので書いただけです
その後、質問された方は何のコメントも残さず消されたようですが・・・

タイトルの変更をもししようとするなら
http://mixi.jp/help.pl?mode=item&item=148

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Excel(エクセル)活用 更新情報

Excel(エクセル)活用のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。