セルの列をアルファベットで取得:エクセル(Excel)関数

セルの列をアルファベットで取得

別シートの場合はこちら→関数内のセル参照を別シートから数式で出す方法

HLOOKUP関数やMATCH関数で列の横の位置は取得できますが
取得数字をVLOOKUP関数やSUM関数で使う場合
列をアルファベットで取得する必要があります

エクセル表サンプル
 
1            
2   日時 佐藤 小林 井上  
3   10月21日  18,001  19,001  15,001   
4   10月23日  18,002  19,002  15,002   
5   10月24日  18,003  19,003  15,003   
6   10月25日  18,004  19,004  15,004   
7   10月26日  18,005  19,005  15,005   
8   10月27日  18,006  19,006  15,006   
9   10月28日  18,007  19,007  15,007   
10   10月29日  18,008  19,008  15,008   
11   10月30日  18,009  19,009  15,009   
12            
上記の表の2行目の名前を検査する場合
MATCH関数を使います
・関数MATCH(マッチ)
・書式=SUMIF(検査値,検査範囲,照合の型)
・内容検索条件に一致するセルの位置を数値で表します。照合の型は省略すると既定値は1です。
例)小林のセルの場所を検索
=MATCH("小林",2:2)
結果:4
検索を行に対して何番目か「2:2」と2行目を検索しています

4列目のセルです
この4列目のセルを合計しようとすると
=SUM(D3:D11)←この「D」が「4」
このままでは合計できません

セルをアルファベットで取得します
アルファベットで列を取得するにはADDRESS関数を使います
・関数ADDRESS(アドレス)
・書式=ADDRESS(検査値,検査範囲,照合の型)
・内容セルの位置をセル番号で表します。
=ADDRESS(2,4,4)
結果:D2

上記はADDRESS(2行目,4列目,4型)という意味です
※「4型」を省略すると「1型」となり結果が「$D$2」になります

3行目から11行目まで足す場合
=SUM(D3:D11)なので
D3=ADDRESS(3,4,4)
D11=ADDRESS(11,4,4)

これを=SUM(D3:D11)に入れれば、、と思いますが

=SUM(ADDRESS(3,4,4):ADDRESS(11,4,4))
エラーにもならす「入力した数式は正しくありません」と警告されます

これは上記のADDRESS関数で取得した値が文字列で、セル番号として認識されていないからです

文字列で「1234」としたのを数値にするにはVALUE関数を使いますが
同じようにセル番号として認識させるにはINDIRECT関数を使います
ADDRESSで取得した数式を全部INDIRECT()の中に入れます

D3=INDIRECT(ADDRESS(3,4,4))
D11=INDIRECT(ADDRESS(11,4,4))

これを=SUM(D3:D11)の中に入れます
=SUM(INDIRECT(ADDRESS(3,4,4)):INDIRECT(ADDRESS(11,4,4)))
結果:171045

列のアルファベット取得が ADDRESS関数
アルファベット+数字をセル番号と認識させるのが INDIRECT関数です

したがって小林を行から横に検索して合計を出す場合
上記のMATCH("小林",2:2)
=SUM(INDIRECT(ADDRESS(3,4,4)):INDIRECT(ADDRESS(11,4,4)))
に組み込み
=SUM(INDIRECT(ADDRESS(3,MATCH("小林",2:2),4)):INDIRECT(ADDRESS(11,MATCH("小林",2:2),4)))
となります
結果:171045

別シートの場合はこちら→関数内のセル参照を別シートから数式で出す方法


 SUM   指定したセル範囲の合計  
 SUMIF   検索条件に一致するセルの値を合計  
 VALUE   数値の文字列を数値に変換  
HOME

エクセル(Excel)関数

(C) 2001-2019 Digital World