[[20150519153859]] 『特殊な表の個数を求めるには?』(MAGU45) ページの最後に飛ぶ

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

 

『特殊な表の個数を求めるには?』(MAGU45)

次のような表があります。

 A  1個
 B  1個
 C  2個
   50回

 D  2個
 E  3個
 F  1個
 G  1個
   20回
   :
   :

これを、

 A  1個  50
 B  1個  50
 C  2個 100
   50回

 D  2個  40
 E  3個  60
 F  1個  20
 G  1個  20
   20回
   :
   :

というようにしたいのですが、エクセルの関数だけで、計算できるでしょうか?

よろしくお願いします。

< 使用 Excel:Excel2013、使用 OS:Windows8 >


 その表、下記みたいに作成することは不可能ですか?
 ※回が入力されているセルは表示形式で0"回"

 	A	B
 1	50回	
 2	A	1
 3	B	1
 4	C	2
 5		
 6	20回	
 7	D	2
 8	E	3
 9	F	1
 10	G	1
(se_9) 2015/05/19(火) 16:12

	A	B
 1	A	1
 2	B	1
 3	C	2
 4	50回		
 5	
 6	D	2
 7	E	3
 8	F	1
 9	G	1
10   20回	

このような形には出来ました。
これが、15000行くらいあります。
(MAGU45) 2015/05/19(火) 16:27


 	A	B
 1	50回	
 2	A	1
 3	B	1
 4	C	2

 だったら関数を提示できたのですが、そうじゃないみたいなのでマクロで・・・。
 どうしても関数で、ということであれば上級者からの回答をお待ちください。

 Sub test()

     Dim i As Long, c As Long

     For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
         If Range("B" & i).Value <> "" Then
            c = Range("A" & i).End(xlDown)
            Range("C" & i).Value = Range("B" & i) * c
         End If
     Next

 End Sub

 ※追記
 マクロなら
 c = Range("A" & i).End(xlDown)
 の部分を
 c = Replace(Range("A" & i).End(xlDown), "回", "")
 にすれば表示形式で0"回"にしなくても大丈夫です。
(se_9) 2015/05/19(火) 17:10 追記17:27

	A	B	C
1	A	1個	50
2	B	1個	50
3	C	2個	100
4	50回		
5			
6			
7	D	2個	40
8	E	3個	60
9	F	1個	20
10	G	1個	20
11	20回		
12			
13			

 C1 =IF(B1="","",SUBSTITUTE(B1,"個",)*SUBSTITUTE(INDEX(A1:A$15000,MATCH("*回",A1:A$15000,0)),"回",))

 下へコピー。

 「回」と「個」が数値のみなら

 C1 =IF(B1="","",B1*INDEX(A1:A$15000,MATCH(TRUE,INDEX(A1:A$15000<MAX(A:A)+1,),)))

 下へコピー。
 
(GobGob) 2015/05/19(火) 17:59

うまく計算できました。

se_9さん、GobGobさんありがとうございました。
(MAGU45) 2015/05/19(火) 22:08


コメント返信:

[ 一覧(最新更新順) ]


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