Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Excel 2016)
列番号をアルファベットへ!!
投稿日時: 18/04/26 23:37:51
投稿者: アベッチ

下記の式でD:Dとなっている2か所の部分を可変させたく
どのようにすれば良いのか迷っています。
Dなので4と言う数字をセルG1に入れてD:Dとしたいのですが、中々うまくいかず・・・
どなたかアドバイスをお願いします!!
 
=INDEX(C:C,SMALL(IF(D:D=C3,ROW(D:D)),COUNTIF(C$3:$C3,C3)))

回答
投稿日時: 18/04/27 00:15:33
投稿者: WinArrow
投稿者のウェブサイトに移動

数式の意味がよく理解できていませんが
 
単純に、数値を英字に変換する数式は
 
=CHAR(G1+64)
 
でよいかな?

回答
投稿日時: 18/04/27 07:07:17
投稿者: sy

例えばA〜Z列の範囲で可変にするなら以下のようになります。

D:D → INDEX(A:Z,0,G1)

ただROW(D:D)の部分は行数を返すだけなので、可変の範囲に関係なく、常にROW(A:A)でも同じ結果を返しますよ。

回答
投稿日時: 18/04/27 08:00:46
投稿者: WinArrow
投稿者のウェブサイトに移動

数式の意味がよくわからないので
確かなことは言えませんが、
  
単純に「4」を「D」に変換しただけでは、意図した結果が得っれないような気がします。
  
試しに
任意のセルに「D:D」を入力し
「D:D」の個所を
 そのセルのアドレスに変更してみてください。

投稿日時: 18/04/27 16:03:14
投稿者: アベッチ

色々なご回答ありがとうございます。
確かに情報不足でしたね・・・
 
     A     B     C    D     E    F    G
1    名前    1月    2月                Cまたは3
2    Aさん    10    18        Eさん    20
3    Bさん    15    53        Dさん    16
4    Cさん    11    67        Bさん    15
5    Dさん    16    29        Cさん    11
6    Eさん    20    85        Aさん    10
 
 
の表があり、ランキングとして名前と点数があります。
とあるサイトで関数のみで順位を変動させる記述を見つけました。
E2に {=INDEX(A:A,SMALL(IF(B:B=F2,ROW(B:B)),COUNTIF(F$2:$F2,F2)))}
F2に =LARGE(B:B,1)
としてそれぞれE6・F6までオートフィルします。
これでB列にある1月分のランキングは問題なくE列F列に反映されます。
さらに改良を加えたいのですが、私自身どなたかが作成した記述をちょっと変更しているレベルなので
お力添えをお願いします。
 
改良点としては現在直接1月分の列を指定していますが、G1に入れた値を読み取る感じにしたいと
思っています。
G1にBまたは2とすれば1月、Cまたは3とすれば2月となるように可変を加えたいのですが、
E2・F2に入れた関数をどのように変更すればよろしいでしょうか?
 
よろしくお願い致します!!

回答
投稿日時: 18/04/27 17:01:52
投稿者: ゆーたん

syさんのおっしゃるように、G1セルに2か3を入力するとして、
E2とF2の数式の「B:B」のところを、
INDEX(A:C,0,G$1)というかんじに変えたらいいのかな?(^_^;)
 
E2 =INDEX(A:A,SMALL(IF(INDEX(A:C,0,G$1)=F2,ROW(B:B)),COUNTIF(F$2:$F2,F2)))
配列確定。
F2 =LARGE(INDEX(A$2:C$6,0,G$1),ROW(A1))
 
※数式、重たくないでしょうか?大丈夫ならいいんですが。

回答
投稿日時: 18/04/27 17:21:19
投稿者: んなっと

別の方法で、こんなのもあるかもしれません。
1000は、A列の一番下の行番号より少し多めの数字であれば何でもいいと思います。
 
    A  B  C  D   E  F G
1  名前 1月 2月 3月       4
2 Aさん  10  85  10 Dさん 30  
3 Bさん  15  53  20 Eさん 30  
4 Cさん  15  67  20 Bさん 20  
5 Dさん  16  29  30 Cさん 20  
6 Eさん  20  85  30 Aさん 10  
 
E2
=INDEX(A:A,AGGREGATE(15,6,ROW($2:$1000)/(INDEX($2:$1000,,G$1)=F2),COUNTIF(F$2:$F2,F2)))
下方向・↓
F2
=LARGE(INDEX($2:$1000,,G$1),ROW(1:1))
下方向・↓
 
...元の式を作った人、どこかのサイトの回答者でしょうか。
少しだけ検索したけど見つかりませんでした。

投稿日時: 18/04/28 00:14:31
投稿者: アベッチ

皆様ありがとうございました!!
無事に希望通りの物が出来上がりました!!
syさんのをヒントにやってみたのですがうまくいかず
ゆーたんさんが答えを書いてくれたのでコピペしたらうまくいきました・・・。
単純に間違えただけだったかもしれません・・・。
 
んなっと さんの方式でも同じ結果が得られ勉強になりました。
元ネタは
https://oshiete.goo.ne.jp/qa/5953914.html
にあったものを自分でアレンジしたものになります!