[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『どうやったらこの表を作れるのか教えてください。』(JJ)
お手数ですが、今作ろうとしてるエクセルの表を画像キャプチャしましたので
これを見てください。
まず、B列は任意の数字です。これは好きに入力できる数字です。
A列は適当に番号を振っただけですので、あまり気にしないでください。
私がしようとしていることですが、Y2が23なので、B列から23を
探そうとしてます。
で、B3とB18に23がありますよね。
B3に1番目にきているからY3に1
その後、B18に15番目にきているからY4に15と自動で出るようにしたいのです。
例えばB20にも23を入力した場合、B18に23があるのでY5は2という風に
自動で出る表を完成させたいのです。
どういう関数を使用すればいいのでしょうか。
すみませんが、教えてください。
よろしくお願いします。
< 使用 アプリ:Excel2000、使用 OS:WindowsVista >
Y3=INDEX(A$1:A$100,SMALL(INDEX((B$1:B$100<>C$2)*10^16+ROW(B$1:B$100),),ROW(C1)))
(ryopo^2) 2014/09/18(木) 22:13
無理やり Y3=IF(COUNTIF($B$3:$B$20,Y$2)<ROW(A1),"",SMALL(IF($B$3:$B$20=Y$2,ROW($B$3:$B$20)-2,""),ROW(A1))-IF(ROW()=3,0,SMALL(IF($B$3:$B$20=Y$2,ROW($B$3:$B$20)-2,""),ROW(A1)-1))
と入力してCtrl+Shift+Enterで配列数式 行と列方向にコピー
(稲葉) 2014/09/18(木) 22:36
今、教えていただいた数式を当てはめてみましたところ、無事できました。
これこれこれこれえええええ! この表を作りたかったんです。
こんな凄い数式、自分じゃ思いつきませんでした。
ずっとifで何とかしようとばかり思っていまして・・・
こんな難しい数式でようやく出来上がるのですね・・・。
自分の未熟さを痛感しております。
ホントにこちらで質問してよかったです。
本当にありがとうございました。
(JJ) 2014/09/18(木) 23:00
で、自分なりに色々調べたのですが、配列数式を使うと処理が重くなるそうで、
計算方法を自動から手動にすると一時的にこの現象は解消されますが、F9で再計算を
すると再度、また固まってしまいます。
これはもう、どうすることもできないのでしょうか?
それとも私が使っているエクセルが古いからなのでしょうか?
最新のエクセルにすると重くなくなるのでしょうか?
何とか固まらずに快適にこの表を活用できるようにはならないでしょうか?
よろしくお願いします。
(JJ) 2014/09/19(金) 18:34
>どういう関数を使用すればいいのでしょうか。
数式じゃないとダメなんですか? なんか、マクロ向きの話しのような気がします。 ・・と言っても、私自身はマクロを書く気はないですけど。
>何とか固まらずに快適にこの表を活用できるようにはならないでしょうか?
実際のデータ量はどうなっているんですか?(データ範囲の行数と列数)
(半平太) 2014/09/19(金) 22:22
マクロ向きな話な気がしますねぇ 実際のデータが1,000行越えるようなら 配列数式ではなくマクロで処理された方が快適だと思います たぶんoffsetなどで作っても揮発性関数で どのセル弄って も再計算されるのででストレスは残るかと
実際のデータと詳細な表配置がわかればコード書いてみます
(稲葉) 2014/09/19(金) 23:47
こんな感じでもいいかな
Y3:=IF(COUNTIF($B:$B,Y$2)<ROW(A1),"",MATCH(Y$2,$B3:$B100,0)) Y4:=IF(COUNTIF($B:$B,Y$2)<ROW(A2),"",MATCH(Y$2,INDEX($B$4:$B100,SUM(Y$3:Y3)):$B100,)) (By) 2014/09/20(土) 09:31
私が使おうとしている実際のデータはこれです。
http://www.rupan.net/uploader/download/1411225747.xls
pass:jisakudata
横の行はc3からam3まで
縦の列はとりあえず1000くらいまでで設定したのですが、
できればもっと下まで使いたいと思ってました。
よろしくお願いします。
(JJ) 2014/09/21(日) 00:13
こんな感じでいかがでしょうか? Sub jj() Dim tbl Dim c As Long, r As Long, rr As Long, 差 As Long tbl = Range("A2").CurrentRegion For c = 3 To UBound(tbl, 2) 検索値 = tbl(1, c) rr = 2 差 = 1 For r = 2 To UBound(tbl) If tbl(r, 2) = "" Then Exit For If tbl(r, 2) = 検索値 Then tbl(rr, c) = 差 rr = rr + 1 差 = 1 Else 差 = 差 + 1 End If Next r Next c Range("A2").CurrentRegion.Offset(1, 2).ClearContents Range("A2").CurrentRegion = tbl End Sub
(稲葉) 2014/09/21(日) 07:16
稲葉さん、本当にありがとうございます。
教えていただいたマクロのプログラムで快適に使えるようになりました。
本当に助かりました。ありがとうございます。
(JJ) 2014/09/24(水) 02:45
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.