[[20071009103319]] 『集計管理表』(ぺい) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『集計管理表』(ぺい)
 次のように行いたいので教えてください。

  A   B   C   D

1 日付 番号 金額 備考

2 10.2  01 10,000

3 10.5 03 2,000

 というシート(データは多くて100件分)を別のシートに

  A   B   C   D   E   F

1  顧客先    顧客先   顧客先

2 日付 金額 日付 金額 日付  金額

3 10.2  10,000        10.5  2,000


 という感じで、顧客先別(10件ほどです。01、02、03という感じです)で日付と金額をひっぱってくる感じです。
 顧客先を番号で管理しています。これは増えていくので
 別シートで顧客先名簿みたいのを
 作りたいです。1暦年管理で、翌年も使用したいと思います。(原本ファイルをコピーですかね?)宜しくお願い致します。


 別シートの顧客先名簿は、A列:顧客先名、B列:番号になっているとして、
 A3 = INDEX(Sheet1!$A:$A,MATCH(VLOOKUP(A1,Sheet3!$A:$B,2,),Sheet1!$B:$B,),)
 B3 = INDEX(Sheet1!$C:$C,MATCH(VLOOKUP(A1,Sheet3!$A:$B,2,),Sheet1!$B:$B,),)
 Sheet1:上記最初のシート
 Sheet2:上記2番目のシート
 Sheet3:別シートの顧客先名簿
 こんな感じでしょうか?
 (1or8)

 最初のシートから、2番目のシートへは
 直近で、こちらが参考になりそうに思います。
[[20071003232451]]『入金管理』(ペイ)

 A1セルの値は、入力するか 
 最初のシートや、顧客先名簿から
 参照することになると思いますが。

 (HANA)

 (1or8)さんその式は訳すと何という意味ですか?
 A4、B4より下の行はどうすればいいでしょうか?私は、VLOOKUPの検査値を$A$1と固定して
 やってみましたら、Sheet1の2行目(データ1番目)の金額だけずらっと複写されてしまいました。日付は#N/Aになってしまいました。

 (HANA)さん私は同じ者なんですが、その式の意味が解らないです。勉強不足です。
 すみませんが、訳してもらっていいでしょうか?

 (ペイ)

 お・・・同じ方でしたか。(確かに同じお名前ですね。)
 配列数式は少し難しいので・・・、前回の式で前回のものは上手く行ったのですよね?
 そうで有れば、変わったところを変更してみるのはどうでしょう。

 前回はA1セルに社名を入れて
  Sheet1のB列の社名とをマッチングさせました。
 今回は、A1,C1,E1にSheet1のB列「番号」を入力し
  マッチングさせることにしましょう。

 A,B列は同じ式で出来ますよね?
 C,D列を考えると、変わったところは
 「番号が入ったA1セルがC1セルに変更」
 Sheet1に関しては変更有りません。
 
>A3{=IF(COUNTIF(Sheet1!$B$2:$B$100,$A$1)<ROW(A1),"",INDEX(Sheet1!A$1:A$100,SMALL(IF(Sheet1!$B$2:$B$100=$A$1,ROW($A$2:$A$100)),ROW(A1))))}
 こちらの式の、「$A$1」を「$C$1」に変更します。(2カ所)
 ROW(A1)やSheet1!A$1 は、そのままです。
 これらの「A1」「A$1」は、Sheet2のA1セルの値を参照しているのではありませんので。

 上手く行きそうですか?

 もしかして「番号」を表示させずに顧客先から直接
 項目だけを取り出したい と言うご希望ですかね?

 (HANA)

 もう一度確認したいのですが、
 Sheet1は、
 別のブックのSheet1をシートごとコピーします。(完成されたデータ)
   [A]     [B]     [C]     [D]
[1]日付  顧客先名 入金額 備考  
[2] 10/3     A社   10,000  a
[3] 10/4     B社   20,000  b
[4] 10/5     A社   15,000  c

 Sheet2は、

    [A]     [B]     [C]     [D]
[1]   A社        B社
[2] 日付  入金額  日付  入金額
[3] 10/3    10,000    10/4    20,000
[4] 10/5    15,000
 Sheet2に横に顧客先名を並べていく感じにしたいです。(ペイ)

 こんなんどうでっか?
 \Sheet2/のシートタブを右クリック
 その真っ白な画面に下のコードをコピペします。
 Sheet1にデータをコピーして
 Sheet2を開いてみてくらはい。興味なければパスOK。
     (弥太郎)
 '-----------------
 Private Sub Worksheet_Activate()
    Dim dic As Object, i As Long, n As Integer, tbl, x

    Set dic = CreateObject("scripting.dictionary")
    With Sheets("sheet1")
        tbl = .Cells(1, 1).Resize(.Cells(Rows.Count, 1).End(xlUp).Row, 3)
    End With
    ReDim x(1 To UBound(tbl, 1), 1 To Columns.Count)
    n = n + 1
    For i = 2 To UBound(tbl, 1)
        If Not dic.exists(tbl(i, 2)) Then
            dic(tbl(i, 2)) = Array(3, n)
            x(1, n) = tbl(i, 2)
            x(2, n) = tbl(1, 1)
            x(2, n + 1) = tbl(1, 3)
            x(3, n) = Format(tbl(i, 1), "m/d")
            x(3, n + 1) = tbl(i, 3)
            n = n + 2
        Else
            x(dic(tbl(i, 2))(0) + 1, dic(tbl(i, 2))(1)) = tbl(i, 1)
            x(dic(tbl(i, 2))(0) + 1, dic(tbl(i, 2))(1) + 1) = tbl(i, 3)
            dic(tbl(i, 2)) = Array(dic(tbl(i, 2))(0) + 1, dic(tbl(i, 2))(1))
        End If
    Next i
    Cells.ClearContents
    Cells(1, 1).Resize(UBound(x, 1), n) = x
 End Sub


 そのつもりですが・・・。

 Sheet2のA1やC1セルにも自動的に入力されたい
 と言う事ですかね?

 どこで止まっているのか教えて下さい。
 たとえば、Sheet2のA1セルに「A社」と入っている時に
 A:B列の3行以下にA社のデータを表示させる式は
 出来ていると思いますが・・・。
 これをC:D列に適用させる式が分からないのですかね?

 (HANA)

 送信の都度、衝突しております。最初から作り直してみましたので投稿します。

 Sheet1
    [A]     [B]     [C]     [D]   [E]   [F]
[1]日付  顧客先名 入金額 備考  
[2] 10/3     A社   10,000  a       1
[3] 10/4     B社   20,000  b             2
[4] 10/5     A社   15,000  c       3

 配列数式を使用しない場合は作業列(E,F列)を使います。
 E2=IF(B2=$A$11,ROW(A1),"")
 F2=IF(B2=$C$11,ROW(A1),"")
 フィルダウン

 ※会社の数だけ作業列が必要になります!

 Sheet2
    [A]     [B]     [C]     [D]
[1]   A社        B社
[2] 日付  入金額  日付  入金額
[3] 10/3    10,000    10/4    20,000
[4] 10/5    15,000

 A3=IF(COUNT(Sheet1!$E$2:$E$4)<ROW(A1),"",INDEX(Sheet1!A$2:A$6,SMALL(Sheet1!$E$2:$E$6,ROW(A1))))
 B3=IF(COUNT(Sheet1!$E$2:$E$4)<ROW(B1),"",INDEX(Sheet1!C$2:C$6,SMALL(Sheet1!$E$2:$E$6,ROW(B1))))
 C3=IF(COUNT(Sheet1!$F$2:$F$4)<ROW(C1),"",INDEX(Sheet1!A$2:A$6,SMALL(Sheet1!$F$2:$F$6,ROW(C1))))
 D3=IF(COUNT(Sheet1!$F$2:$F$4)<ROW(D1),"",INDEX(Sheet1!C$2:C$6,SMALL(Sheet1!$F$2:$F$6,ROW(D1))))
 フィルダウン

 ROW関数の( )の中がA1やB1,C1,D1となっているのはA3セルの式をコピーして変更部分だけ書き換えたためです。
 ROW(A1)でもROW(D1)でも返される値は、総て 1 ですので同じ結果となります。(ROW関数は行番号を返します)

 配列数式の場合(作業列不要)上記の式を配列数式にしたものです。(Ctrl+Shift+Enter で確定)
 A3=IF(COUNTIF(Sheet1!$B$2:$B$6,$A$1)<ROW(A1),"",INDEX(Sheet1!A$1:A$6,SMALL(IF(Sheet1!$B$2:$B$6=$A$1,ROW($A$2:$A$6)),ROW(A1))))
 B3=IF(COUNTIF(Sheet1!$B$2:$B$6,$A$1)<ROW(B1),"",INDEX(Sheet1!C$1:C$6,SMALL(IF(Sheet1!$B$2:$B$6=$A$1,ROW($A$2:$A$6)),ROW(B1))))
 C3=IF(COUNTIF(Sheet1!$B$2:$B$6,$C$1)<ROW(C1),"",INDEX(Sheet1!A$1:A$6,SMALL(IF(Sheet1!$B$2:$B$6=$A$1,ROW($A$2:$A$6)),ROW(C1))))
 D3=IF(COUNTIF(Sheet1!$B$2:$B$6,$C$1)<ROW(D1),"",INDEX(Sheet1!C$1:C$6,SMALL(IF(Sheet1!$B$2:$B$6=$C$1,ROW($A$2:$A$6)),ROW(D1))))
 (gon-2)


 (HANA)さん(弥太郎)さん(gon-2)さんありがとうございます。
 マクロはもっと勉強しないとわかりません。
 Sheet2のA,B,C,D列まではうまくいったのですが、それ以降の列でわかりません。
 ROWの後のセル値、次はE,Dなので入れたのですが(E1,F1)できませんでした。
 それとSheet1の顧客先は、番号で管理してました。でしたので、Sheet2では番号ではなく社名を入れたいと思います。
 Sheet3ではこんな感じです。
    [A]     [B]    
[1] 番号  顧客先名   
[2] 010      A社   
[3] 011      B社   
[4] 012      C社
 15社ほどです。     (ペイ)
   

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.