- ベストアンサー
Excelのマクロについて質問です
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
sub macro1() dim c as range dim mx, mn set c = range("1:1").find(what:="月", lookin:=xlvalues, lookat:=xlwhole) if c is nothing then msgbox "月 not found" exit sub end if with application.worksheetfunction mx = .max(c.entirecolumn) mn = -.min(c.entirecolumn) if mx >= mn then range("E1") = mx range("F1") = .vlookup(mx, c.resize(65536,3), 3, false) else range("E1") = mn range("F1") = .vlookup(-mn, c.resize(65536, 3), 3, false) end if end with end sub #参考 同じロジックを単純に関数だけで実現するには E1: =MAX(MAX(INDEX(A:D,0,MATCH("月",1:1,0))),-MIN(INDEX(A:D,0,MATCH("月",1:1,0)))) F1: =VLOOKUP(IF(MAX(INDEX(A:D,0,MATCH("月",1:1,0)))=E1,E1,-E1),OFFSET(INDEX(1:1,MATCH("月",1:1,0)),0,0,65536,3),3,FALSE)
その他の回答 (3)
- KURUMITO
- ベストアンサー率42% (1835/4283)
マクロを使うこともないでしょう。次の式で対応できますね。 E1セルには次の式を入力します。 =MAX(MAX(INDEX($A:$D,2,MATCH("月",$A$1:$D$1,0)):INDEX($A:$D,1000,MATCH("月",$A$1:$D$1,0))),-MIN((INDEX($A:$D,2,MATCH("月",$A$1:$D$1,0)):INDEX($A:$D,1000,MATCH("月",$A$1:$D$1,0))))) F1セルには次の式を入力します。 =IF(COUNTIF(INDEX($A:$C,1,MATCH("月",$A$1:$C$1,0)):INDEX($A:$C,1000,MATCH("月",$A$1:$C$1,0)),E1)>0,INDEX($A:$C,MATCH(E1,INDEX($A:$C,1,MATCH("月",$A$1:$C$1,0)):INDEX($A:$C,1000,MATCH("月",$A$1:$C$1,0)),0),MATCH("月",$A$1:$C$1,0)+2),IF(COUNTIF(INDEX($A:$C,1,MATCH("月",$A$1:$C$1,0)):INDEX($A:$C,1000,MATCH("月",$A$1:$C$1,0)),-E1)>0,INDEX($A:$C,MATCH(-E1,INDEX($A:$C,1,MATCH("月",$A$1:$C$1,0)):INDEX($A:$C,1000,MATCH("月",$A$1:$C$1,0)),0),MATCH("月",$A$1:$C$1,0)+2),""))
お礼
回答ありがとうございます。
- K Kazz(@JazzCorp)
- ベストアンサー率31% (549/1751)
パクリが不完全だったので訂正します。 E1に、(訂正) =MAX(MAX($A:$A),ABS(MIN($A:$A))) F1に、(変更なし) =VLOOKUP(IF(MAX($A:$A)>ABS(MIN($A:$A)),MAX($A:$A),MIN($A:$A)),$A:$C,3,FALSE) <<パクリソース>> http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1425493379 「正の数+負の数」が記載されている場合、「絶対値」で見て最大の数を、そのままの数で引っ張ってくるにはどのような関数を使用したら良いでしょうか?
お礼
回答ありがとうございます。
- K Kazz(@JazzCorp)
- ベストアンサー率31% (549/1751)
列が固定なら、そして真黒じゃないけど、 E1に、 =ABS(IF(MAX($A:$A)>ABS(MIN($A:$A)),MAX($A:$A),MIN($A:$A))) F1に、 =VLOOKUP(IF(MAX($A:$A)>ABS(MIN($A:$A)),MAX($A:$A),MIN($A:$A)),$A:$C,3,FALSE)
お礼
回答ありがとうございます。