[[20060512234340]] 『増減簿』(わんばんこ) ページの最後に飛ぶ

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

 

『増減簿』(わんばんこ)

 
  1    A       B     C      D

   2   みかん   100

   3   りんご     50

   4                みかん    99

   5
 
 

上記のような表があります。A5に「みかん」が入ればB5に100。「りんご」が入れ
ば 51。(A列もしくはC列の右列の最新数字に +1 される)
C5に「みかん」が記入 された場合は 98。(A列もしくはC列の右の最新数字に
 -1 される)A列、C列には「みかん」。「りんご」どちらが入った場合数字を自
動記入させたいのですがどう考えたら良いのやら解りません。お教えください。


 長すぎるかな〜^^;
 B5に =IF(A5="","",INDEX($A$1:$D4,MAX(IF($A$1:$D4=A5,ROW($A$1:$D4))),MATCH(A5,INDIRECT(MAX(IF($A$1:$D4=A5,ROW($A$1:$D4)))&":"&MAX(IF($A$1:$D4=A5,ROW($A$1:$D4)))),0)+1)+1)

 D5に =IF(C5="","",INDEX($A$1:$D4,MAX(IF($A$1:$D4=C5,ROW($A$1:$D4))),MATCH(C5,INDIRECT(MAX(IF($A$1:$D4=C5,ROW($A$1:$D4)))&":"&MAX(IF($A$1:$D4=C5,ROW($A$1:$D4)))),0)+1)-1)

 として、いずれもCtrlキーとShiftキーとEnterキーを同時に押して確定してください。
 式が{ }で括られたら成功です〜 以下コピーで。
 (かなれっと) ☆ あ、同じ行にみかんが並んだ場合は、B列の値が次の計算に使われます。

 こんな時間に衝突〜☆
以下、そのまま掲載。
  
 こんばんみ〜♪
  
     [A]    [B]    [C]    [D]
[1]   A      B      C      D
[2] みかん  100
[3] りんご   50
[4] みかん  101
[5] みかん  102
[6]               みかん  101
[7] りんご   51

 こういう表で、A1:B2は手入力の前提です。
 B4=IF(A4="","",INDEX(IF(MAX(IF($C$2:C3=A4,ROW($A$1:A2),""))<MAX(IF($A$2:A3=A4,ROW($A$1:A2),"")),$A$2:B3,$C$2:D3),
    MAX(IF($C$2:C3=A4,ROW($A$1:A2),""),IF($A$2:A3=A4,ROW($A$1:A2),"")),2)+1)
 D4=IF(C4="","",INDEX(IF(MAX(IF($C$2:C3=C4,ROW($A$1:A2),""))<MAX(IF($A$2:A3=C4,ROW($A$1:A2),"")),$A$2:B3,$C$2:D3),
    MAX(IF($C$2:C3=C4,ROW($A$1:A2),""),IF($A$2:A3=C4,ROW($A$1:A2),"")),2)-1)
として、Ctrl+Shift+Enterで配列数式を確定して下さい。
下に必要な分フィルドラッグでいかがでしょうか?
(ROUGE)※無駄に式が長いかもしれません・・・

 B5=IF(A5="","",INDIRECT(IF(INDIRECT("A"&SUMPRODUCT(MAX(($A$1:$C4=A5)*ROW($A$1:$C4))))=A5,"B","D")&
    SUMPRODUCT(MAX(($A$1:$C4=A5)*ROW($A$1:$C4))))+1)
 D5=IF(C5="","",INDIRECT(IF(INDIRECT("A"&SUMPRODUCT(MAX(($A$1:$C4=C5)*ROW($A$1:$C4))))=C5,"B","D")&
    SUMPRODUCT(MAX(($A$1:$C4=C5)*ROW($A$1:$C4))))-1)
 ★Enterで式を確定して、下にコピー
 (Maron)

 こっちでも、こんな時間に''''''''''ゴッチン''''''''''
以下そのまま貼り付けます。

 そういう事だったのね。ROUGEさんの書き込みで、やっと分かりました。
私も、長〜いのを一発。
A1:B2部分が手入力として、
B3セルに
=IF(OR(A3="",COUNTIF($A$1:$C2,A3)=0),"",IF(OFFSET($A$1,MAX(IF($A$1:$C2=A3,ROW($A$1:$C2)))-1,2)=A3,OFFSET($A$1,MAX(IF($A$1:$C2=A3,ROW($A$1:$C2)))-1,3),OFFSET($A$1,MAX(IF($A$1:$C2=A3,ROW($A$1:$C2)))-1,1))+1*IF(COLUMN()=2,1,-1))
で、配列数式として確定。B3をコピーし、D3に貼り付け。B3:D3を必要範囲まで下方コピー。
(sin)

 B4=IF(A4="","",SUM(OFFSET($A$1:$D$1,MAX(INDEX(($A$2:C3=A4)*ROW($A$2:C3),))-1,))+1)

 D4=IF(C4="","",SUM(OFFSET($A$1:$D$1,MAX(INDEX(($A$2:C3=C4)*ROW($A$2:C3),))-1,))-1)

 by しげちゃん

 ◆式を一つにしました
 B4=IF(A4="","",INDIRECT(IF(INDIRECT("A"&SUMPRODUCT(MAX(($A$1:$C3=A4)*ROW($A$1:$C3))))=A4,"B","D")&
   SUMPRODUCT(MAX(($A$1:$C3=A4)*ROW($A$1:$C3))))+SIGN(3-COLUMN()))
 ★D3と、各々下にコピー
 (Maron)

 式を一つにするとこんな感じかな
 =IF(A4&C4="","",SUM(OFFSET($A$1:$D$1,MAX(INDEX(($A$2:C3=A4&C4)*ROW($A$2:C3),))-1,))+IF(A4="",-1,1))

 あまり意味があると思いませんが・・・ 参考までに

 by しげちゃん


 > こういう表で、A1:B2は手入力の前提です。
A2:B3の誤りでした。
(ROUGE)

しげちゃんさん。ありがとうございます。完璧です。何ヶ月も試行錯誤していたのが一瞬で解決です。もっと、早く質問しておけば良かった。私の頭の中はお花畑になりました。

コメント返信:

[ 一覧(最新更新順) ]


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