- ベストアンサー
エクセル リスト作成について
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
No.1です。 補足を読ませてもらいました。 実際の表の配置が判らないので、問題解決にならないかもしれませんが・・・ =IF(OR($A$6=""),"",INDEX($D$19:$AA$142,MATCH($A$6,$AB$19:$AB$142,0)+ROW(A6)-1,COLUMN(A6))) の中の ・・・ +ROW(A6)-1,COLUMN(A6))) が少し引っかかります。 括弧内の(A6)部分を(A1) に、訂正してみてはどうでしょうか? このA1をオートフィルするたびに行の場合は A2・A3・・・ 列の場合はB1・C1・・・ と変化していきますので ROW(A1)=1・ROW(A2)=2・・・ COLUMN(A1)=1・COLUMN(B1)=2 ・・・ といった具合に数値が増えていきます。 そしてINDEX関数で範囲指定した何行目?かをMATCH関数で調べてオートフィルするたびに、 行・列とも一つずつ増える数式にしたいます。 補足にある数式では 数式を入れたセルの場合、INDEX関数で範囲指定した表で MATCHしたセルの「5」行下で「5」列右側のセルを表示してしまうと思います。 以上、長々と書きましたが お役に立ちますかね?m(__)m
その他の回答 (3)
- keithin
- ベストアンサー率66% (5278/7941)
A5に =SUMPRODUCT((A9:A100=A1)*(B9:B100=B1)*ROW(A9:A100)) と記入しておくと何行目をヒットしたのか(を調べるのが重いのでここ一箇所だけで計算して求めておきます)判りますから あとは C1: =IF($A$5=0,"",INDEX(C:C,$A$5+ROW(C1)-1)) などのようにして,下に右にコピーしておけばいいです。 勿論A5は判りやすくそこにしただけですから,邪魔にならないどこでやっても構いません。 #おまけ ゼロが出るのがイヤなら,実際のデータに応じて 123の数字ならセルの書式の表示形式を # と設定しておく 文字なら式を =IF(上述)&"" とする など工夫します。
補足
ありがとうございます とても簡単な方法ですんなり実現いたしました 続けて質問して良いのかわかりませんがこの表のように「い」「3」は実際の数値がありませんが選択してしまいます(C1:J4は空欄になるのでいいのですが) 色々と教えて頂いてる間に(リストでなくてもいいのですが) A1「あ」と選択した場合はB1「1.2.3」 A1「い」と選択した場合はB1「1.2」の選択肢しか出ないような方法はあるでしょうか これが一番理想に近い状態なのですが… どうぞ宜しくお願い致します
- MackyNo1
- ベストアンサー率53% (1521/2850)
A1,B1セルの値が必ずリスト内に1つだけあるなら以下の式をC1セルに入力して右方向にオートフィルしてください。 =INDEX(C:C,SUMPRODUCT((A9:A100=A1)*(B9:B100=B1)*ROW(A9:A100)))
お礼
ありがとうございます 添付しましたようにA1(あが3つ・いが2つ)もB1(1が2つ・2が2つ)も同じ値がいくつもあります こちらは実際の表が細かいので簡単にしてありますが重機械の表なので品名は同じ「ダンプ」でも規格が「2トン・4トン・10トン」というようになります 他の機会是非試させて頂きます
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! 本来であればセルの結合がないほうがオートフィルする場合は簡単なのですが、 今回は4行ごとにセルの結合があるみたいなので・・・ 作業用の列を1列使わせてもらいます。 作業列K9セルに =A9&B9 としてオートフィルで下へずぃ~~!っとコピーします。 そして、C1セルに =IF(OR($A$1="",$B$1=""),"",INDEX($C$9:$J$28,MATCH($A$1&$B$1,$K$9:$K$28,0)+ROW(A1)-1,COLUMN(A1))) という数式を入れ、列方向と行方向にコピーしてはどうでしょうか? 尚、範囲指定の領域は質問の画面どおりにしていますので、 データ量によって範囲指定の領域はアレンジしてみてください。 以上、参考になれば良いのですが 他に良い方法があれば読み流してくださいね。m(__)m
補足
早速やってみました 添付しました表は実際に使うものを簡単にしたものだったのですがコチラは問題なく出来ました ただA1を選択した後B1を選択としたかったのですが教えて頂いた式では「い」「3」のような表にない選択もしてしまいます せっかく教えて頂いたのでK9をそのまま生かして =IF(OR($A$1=""),"",INDEX($C$9:$J$28,MATCH($A$1,$K$9:$K$28,0)+ROW(A1)-1,COLUMN(A1)))としてみました お蔭様で添付した表では実現出来ました 実際の表に応用してみた所 =IF(OR($A$6=""),"",INDEX($D$19:$AA$142,MATCH($A$6,$AB$19:$AB$142,0)+ROW(A6)-1,COLUMN(A6))) 数値が一行ズレてしまいます 式は直したつもりなのですがどうしてでしょう もしこれだけでお分かりになれば教えて頂けないでしょうか 無理なようでしたらもう一度添付して質問を起こします
お礼
その通りでした 意味も分からずにいじったのが悪かったのですね なぜA1なのか大変参考になりました 関数を覚えると楽しいですが難しくて… また機会がありましたらどうぞ宜しくお願い致します