- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
G2には =INDEX(B$1:F$1,MATCH("?*",B2:F2&"",0)) と記入し,コントロールキーとシフトキーを押しながらEnterで入力,下にコピー。 E2には =INDEX(B$1:F$1,MATCH(-1,B2:F2,-1)) とこちらはふつーに記入し,下にコピー。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
意外に、文章で書くと簡単だが(例 データのある一番左の列)、エクセル関数では難しいタイプの課題ひとつ。 既に出ている回答も配列数式などの回答になっている。その他も上級者で無いと、思いつくのはまず無理な式。 まあ回答を鵜呑みするしかないだろう。 ーー やさしいというわけではないが、VBA では End(xlToRight)などをよく使うので、使ってやって見た。 VBAでユーザー関数を定義する方法だと 標準モジュールに Function lft(a) Application.Volatile r = a.Row c = Range("A" & r).End(xlToRight).Column lft = Cells(1, c) End Function Function Rgt(a) Application.Volatile r = a.Row c = Range("G" & r).End(xlToLeft).Column Rgt = Cells(1, c) End Function 例データ A-I列 データはA-F列の例 G列は空白列にする。 -- 00/01 00/02 00/03 00/04 00/05 aa 10 2 00/01 00/05 bb 10 5 00/02 00/03 cc 5 50 50 00/02 00/04 dd 23 4 1 00/02 00/05 ee 2 4 6 00/01 00/05 ーーー H2は =lft(A2) 下方向に式を複写する。 I2は =rgt(A2) 下方向に式を複写する。
G2: {=MIN(IF($B2:$F2>0,$B$1:$F$1))} H2: {=MAX(IF($B2:$F2>0,$B$1:$F$1))}
お礼
ありがとうございます。シンプルでいいですね
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 一例です。 お示しの画像の配置の場合・・・ G2セルに =IF(COUNT(B2:F2),INDEX($B$1:$F$1,,MIN(IF(B2:F2<>"",COLUMN(A1:E1)))),"") H2セルに =IF(COUNT(B2:F2),INDEX($B$1:$F$1,,MAX(IF(B2:F2<>"",COLUMN(A1:E1)))),"") 上記の数式はどちらも配列数式になってしまいますので、Shift+Ctrlキーを押しながらEnterキーで確定します。 この画面からコピー&ペーストする場合は各セルに貼り付け後、数式バー内で一度クリック! 編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入り配列数式になります。 最後にG2・H2セルを範囲指定 → H2セルのフィルハンドルで下へコピーします。 ※ セルの表示形式は1行目と同じ表示形式にします。m(_ _)m
お礼
ありがとうございます。 E2というのは、H2ということではないですか?