[[20200720085348]] 『年度別の新規申請者数の割合を出したい』(miki) ページの最後に飛ぶ

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

 

『年度別の新規申請者数の割合を出したい』(miki)

お世話になります。
表題の件、以下のデータの新規申請者数を出したいのですが、よい数式が思いつきません。

H21年度 申請数

A自治会 1
B自治会 1
C自治会 1
D自治会 1

H22年度 申請数

A自治会 1
B自治会 
C自治会 
D自治会 1

H22年度 申請数

A自治会 1
B自治会 1
C自治会 
D自治会 

上記は例であり、自治会数は200以上、データはH21〜H31まであります。
新規割合を出す際、過去に申請があった自治会は新規ではないので、断続的に申請される部分をなんとか抽出して、年度別の新規申請者数の割合を出したいです。

例えば。。。
A1    B1 C1 D1

         H21  H22 H23
A自治会   1        1
B自治会   1    1   1
C自治会        1   
D自治会        1   1

初年度はすべて新規なので割愛。

2年目は
=IF(SUM(B3:C3)=2,"追加申請",IF(C3=1,1,"")

2年目は上記で出せますが、申請が断続的に行われるため
1つ目のIF条件をSUMで指定することができません。
3年目のsum=3 4年目のsum=4という風に、増やしていっても
申請が断続的なので、新規申請者を割り出すことができない。

少しわかりにくい説明で申し訳ないですが、よろしくお願いします。

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


新規や追加の定義がよくわからないのですが、
B列より右に複数の「1」がある場合と直近の列に1があった場合に値を返す関数として
C列3行目の値を基準にすると
 =IF(SUM($B3:C3)>1,"追加申請",IF(C3=1,1,"") 

こんな式になります。

最初のいくつもある表がどうまとまるのか
(一つ一つの表がシートなのかブックなのか、それとも1つのシートにずらずらと並んでいるのか)
数式はどのシートのどこにある予定のものなのか
さっぱりわからないので、補足してもらえるとありがたいです。
(しょくぱん) 2020/07/20(月) 12:36


ご回答ありがとうございます。

表は1つのシート内にあります。

申請があった場合1とします。
下記表は例ですが、実際の表に近いものです。

A B C D E D F H I J K L
団体  H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31
A団体 1 1 1 1 1 1 1 1 1 1 1
B団体 1 1 1 1
C団体
D団体 1 1
E団体
F団体 1 1 1
G団体
H団体 1 1
I団体
J団体 1 1 1
K団体
L団体 1 1

上記の1が書いていない表を別で作り、以下の数式でいちよう実現できました。
=IF(SUM(B3:L3=11,"追加","")&IF(AND(B3:L3)=10,(L3=1)),"追加","")&IF(AND(B3:L3)=9,(L3=1)),"追加","")
&IF(AND(B3:L3)=8,(L3=1)),"追加","")&IF(AND(B3:L3)=7,(L3=1)),"追加","")&IF(AND(B3:L3)=6,(L3=1)),"追加","")&IF(AND(B3:L3)=5,(L3=1)),"追加","")&IF(AND(B3:L3)=4,(L3=1)),"追加","")&IF(AND(B3:L3)=3,(L3=1)),"追加","")&IF(AND(B3:L3)=2,(L3=1)),"追加","")&IF(AND(B3:L3)=1,(L3=1)),"追加","")

上記の数式はL列に使用しているものです。
年度が増えるにつれて、SUMの値を増やしていく数式で作り、最新年度のH31では上記の数式になります。

めちゃくちゃ長い数式なので、もっとシンプルにできる方法があればご教授願いたいです。

(miki) 2020/07/20(月) 16:45


よく見ていませんがとりあえずこれで。
 =IF(AND(SUM(B3:L3)>=1,L3=1),"追加","")
(しょくぱん) 2020/07/20(月) 16:52

Sub main()
    Dim rw As Long, c As Range
    rw = Range("A" & Rows.Count).End(xlUp).Offset(1).Row
    Rows(rw).Clear
    For Each c In Range("B:L").SpecialCells(2)
        If c.Value = 1 And c.EntireRow.Cells(1).Resize(, c.Column - 1).Find(1, , , xlWhole) Is Nothing Then
            Cells(rw, c.Column).Value = Val(Cells(rw, c.Column).Value) + 1 & "件新規"
        End If
    Next c
End Sub
(mm) 2020/07/20(月) 17:48

しょくぱんさん、ありがとうございました。
ご教授いただいた数式でシンプルに実現できました。

mmさんもありがとうございます。

(miki) 2020/07/21(火) 10:35


コメント返信:

[ 一覧(最新更新順) ]


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