- 締切済み
EXCEL 一番右側にある値を表示させる方法
まず、A列に商品名、B列に現在の価格、C列に仕入先、D列に適用日、B~D列までが1セットとして入力されている。B~D列は現在の適用内容(仮に4月とします)で、5月に内容変更があった商品はE~G列にそれを入力します。6月(H~J列)、7月(K~M列)・・・と入力してゆき、最終的にAL~AN列に最新の内容を表示させる。ということをやりたいのですが、何かうまい方法はありますでしょうか。 わがままを言うと、なるべくマクロは使わず、関数レベルでやりたいです。みなさんの力を貸して下さい。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! 一例です。 データは3行目からあるとします。 3列で1セットのセルには空白(一つや二つだけのデータではなく、必ず三つのデータが入っている)がない という前提で・・・ AL3セルに =IF(COUNTA($B3:$AK3)>2,INDEX($A3:$AK3,,LARGE(IF($A3:$AK3<>"",COLUMN($A3:$AK3)),4-COLUMN(A1))),"") これは配列数式になってしまいますので、Shift+Ctrl+Enterキーで確定! この画面からコピー&ペーストする場合は AL3セルに貼り付け後、数式バー内で一度クリック! 編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入り配列数式になります。 これをAN3までオートフィルでコピー!そのまま行方向にオートフィルでコピーではどうでしょうか? ※ 最後にAN列の表示形式は「日付」にしておきます。m(_ _)m
- keithin
- ベストアンサー率66% (5278/7941)
>B列に現在の価格、C列に仕入先、D列に適用日 この順番で1セットという前提で。 AL2からAN2に =INDEX(B2:AK2,MATCH(MAX(B2:AK2)+1,B2:AK2,1)-2) =INDEX(B2:AK2,MATCH(MAX(B2:AK2)+1,B2:AK2,1)-1) =INDEX(B2:AK2,MATCH(MAX(B2:AK2)+1,B2:AK2,1)) と記入します 途中月の記載に抜けがあっても構いませんが,記入された月の3列は記入されるとします。 #参考 全く記載が無い場合の処理を追加して =IF(COUNTA(B2:AK2),INDEX(B2:AK2,MATCH(MAX(B2:AK2)+1,B2:AK2,1)-2),"") などのようにしてもいいです。
- KURUMITO
- ベストアンサー率42% (1835/4283)
例えばA2セルに商品名、B1セルに4月、B2セルに現在の価格、C2セルに仕入先、D2セルに適用日と入力してからB1セルからD2セルを範囲として選択したのちにAN列まで横にドラッグコピーします。AL1セルには4月と表示されますのでそのセルを最新データと文字を変更します。 そこでお示しのようなデータの変更が3行目以下で行われるとしたら、最新データの列、AL3セルには次の式を入力してAN3セルまで横にドラッグコピーしたのちに下方にもドラッグコピーします。 =IF($A3="","",IF(INDEX($A$2:$AK$2,MATCH(10^10,$A3:$AK3))="適用日",INDEX($A3:$AK3,MATCH(10^10,$A3:$AK3)-(3-COLUMN(A1))),IF(INDEX($A$2:$AK$2,MATCH(10^10,$A3:$AK3))="現在の価格",INDEX($A3:$AK3,MATCH(10^10,$A3:$AK3)+COLUMN(A1)-1),""))) 最後にAN列を選択して右クリックし「セルの書式設定」から「表示形式」で「日付」から好みの表示にします。
- M_Sato
- ベストアンサー率54% (550/1003)
B列の左側で「ウィンドウ枠の固定」をしてはどうでしょうか? そして最新の内容がA列の隣りにくるように、枠の右側の表示を動かしておけばいいのですから。