• 締切済み

【EXCEL】IPアドレス範囲に該当するかの条件文

EXCELのB列に、調べたいIPアドレスが記載されています。 C列(最小値)からD列(最大値)にかけて、あらかじめ指定した アドレス範囲が記載されています。E列にC列からD列にかけての アドレス範囲を説明する文字が記載されています。 B列に記載されているIPアドレスが、B列(最小値)以上、かつ C列(最大値)以下の範囲にある時、A列にD列の説明文字が表示され、 かつ、B列のアドレスが記載されているセルの背景色を条件付き書式で 変更させたい。 <該当する場合の例> B1は(203.216.243.240)、C1は(203.216.224.0)、 D1は(203.216.255.255)、E1は(ヤフー株式会社)となっている時、 A1(空白)に、(ヤフー株式会社)と表示され、B1のセルの背景が赤色になる。 それぞれのセルに記載する条件文を教えて下さい。 なお、F列以降は空白なので計算式など自由に利用できます。 宜しくお願いします。 参考「IPv4アドレス変換ツール@Excel」 http://qx-xp.net/ipv4addressexchange_excel.aspx

  • hdddvd
  • お礼率43% (209/478)

みんなの回答

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.9

 回答番号:ANo.3、5、7です。 >B1($B$1)とB5($B$5)が、CからD列($C:$D)に書かれているいずれかの行のIPアドレス範囲に該当する場合、A1($A$1)には、IPアドレス範囲に該当した行のE列にあるセル($E$?行目)を、A5($A$5)には、IPアドレス範囲に該当した行のE列にあるセル($E$?行目)を、それぞれ表示させる。  失礼しました、ANo.5に対する補足の中の >複数行にまたがった場合 とは、その様な意味でしたか。  その場合には、まず、F1セルには、ANo.3で述べたものと同じ数式を入力して下さい。  次に、G1セルに次の数式を入力して下さい。 =IF(AND(ISNUMBER(SUBSTITUTE($C1,".",)*1),LEN($C1)-LEN(SUBSTITUTE($C1,".",))=3,ISNUMBER(SUBSTITUTE($D1,".",)*1),LEN($D1)-LEN(SUBSTITUTE($D1,".",))=3),LEFT(C1,FIND(".",C1)-1)*10^9+MID(C1,FIND(".",C1)+1,FIND(".",SUBSTITUTE(C1,".",,1))-FIND(".",C1))*10^6+MID(C1,FIND(".",SUBSTITUTE(C1,".",,1))+2,FIND("゛",SUBSTITUTE(C1,".","゛",3))-FIND(".",SUBSTITUTE(C1,".",,1))-2)*10^3+RIGHT(C1,LEN(C1)-FIND("゛",SUBSTITUTE(C1,".","゛",3))),"")  次に、G1セルをコピーして、H1セルに貼り付けて下さい。  次に、G1~H1の範囲をコピーして、同じ列の2行目以下に(C~D列においてIPアドレスが入力されている行数を上回るのに充分な行数になるまで)貼り付けて下さい。  次に、A1セルに次の数式を入力して下さい。 =IF($F1="","",IF(SUMPRODUCT(($F1>=$G$1:INDEX($G:$G,MATCH(99^9,$G:$G)))*($F1<=$H$1:INDEX($H:$H,MATCH(99^9,$G:$G))))=1,INDEX($E:$E,SUMPRODUCT(ROW($G$1:INDEX($G:$G,MATCH(99^9,$G:$G)))*($F1>=$G$1:INDEX($G:$G,MATCH(99^9,$G:$G)))*($F1<=$H$1:INDEX($H:$H,MATCH(99^9,$G:$G)))))&"",INDEX({"","「複数あり」"},MATCH(SUMPRODUCT(($F1>=$G$1:INDEX($G:$G,MATCH(99^9,$G:$G)))*($F1<=$H$1:INDEX($H:$H,MATCH(99^9,$G:$G)))),{0,2}))))  次に、F1セルをコピーして、F2以下に(B列においてIPアドレスが入力されている行数を上回るのに充分な行数になるまで)貼り付けて下さい。  次に、A1セルをコピーして、A2以下に(F列と同じ行数だけ)貼り付けて下さい。  そして、B1セルの条件付き書式設定では、「数式が」とした上で、次の数式を入力して下さい。 =SUMPRODUCT(($F1>=$G$1:INDEX($G:$G,MATCH(99^9,$G:$G)))*($F1<=$H$1:INDEX($H:$H,MATCH(99^9,$G:$G))))>0  次に、B1セルをコピーして、B2以下に、[形式を選択して貼り付け]機能を使用して、書式のみを貼り付けて下さい。  これで、B列の任意のセルに入力されているIPアドレスを数値に変換した数よりも、「C列に入力されているIPアドレスを数値に変換した数の方が小さく、且つ、D列に入力されているIPアドレスを数値に変換した数の方が大きい」という条件を満たす行が、別の行を含む範囲のどこかに存在している場合には、B列のセルの色を赤色とした上で、条件を満たす行のE列の内容を、A列のセルに表示させる事が出来ます。  又、条件を満たす行が複数存在し、どの行の説明を表示するべきか不明な場合には、 「複数あり」 と表示されます。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.8

回答2,6です。やっとご質問の意味が理解できたようです。 内容が複雑ですので作業列をふんだんに作って対応するのがよいでしょう。 回答6で示したように初めにB列のデータを区切り位置の操作でF,G,H,L列に表示させます。また、C列のデータをJ,K,L,M列に表示させます。同様にD列のデータをN,O,P,Q列に表示させます。 次にR1セルには次の式を入力して下方にオートフィルドラッグします。 =IF(F1="","",VALUE(F1&G1&H1)) S1セルには次の式を入力して下方にオートフィルドラッグします。 =IF(I1="","",I1) T1セルには次の式を入力して下方にオートフィルドラッグします。 =IF(J1="","",VALUE(J1&K1&L1)) U1セルには次の式を入力して下方にオートフィルドラッグします。 =IF(M1="","",M1) V1セルには次の式を入力して下方にオートフィルドラッグします。 =IF(N1="","",VALUE(N1&O1&P1)) W1セルには次の式を入力して下方にオートフィルドラッグします。 =IF(Q1="","",Q1) これで作業列は完成しましたので最後にA1セルには次の式を入力して下方にオートフィルドラッグします。 =IF(B1="","",IF(COUNTIF(T:T,R1)>0,IF(S1>=INDEX(U:U,MATCH(R1,T:T,0)),INDEX(E:E,MATCH(R1,T:T,0)),""),IF(COUNTIF(V:V,R1)>0,IF(S1<=INDEX(W:W,MATCH(R1,V:V,0)),INDEX(E:E,MATCH(R1,V:V,0)),""),""))) 最後には作業列が目障りでしたらF列からV列までの列を選択してから右クリックして「非表示」を選択すればよいでしょう。 なおA列に表示のあるB列のセルを赤色にするのでしたら、B列を選択してから「条件付き書式」で「数式が」などを選んで、数式の窓には=A1<>"" と入力して「書式」からは「塗りつぶし」で赤色を選択すればよいでしょう。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.7

 回答番号:ANo.3、5です。 >複数行にまたがった場合の方法をご教示ください。  A1~H1の範囲をコピーして、2行目以下に貼り付けた後、B列~D列のIPアドレスを、適時書き換えるだけでOKです。  1行ずつ書き換えるのが面倒な場合には、一旦A2~H2の範囲に貼り付けてから、B2~D2の範囲にあるセルを空欄にして、 その上で、A2~H2の範囲をコピーして、3行目以下に貼り付けた後、B列~D列に新たにIPアドレスを入力されると良いと思います。

hdddvd
質問者

補足

なんとご説明したらいいのか難しいのですが、 単純に申し上げようとするとこうなります。 B1($B$1)とB5($B$5)が、CからD列($C:$D)に書かれている いずれかの行のIPアドレス範囲に該当する場合、 A1($A$1)には、IPアドレス範囲に該当した行のE列にあるセル($E$?行目)を、 A5($A$5)には、IPアドレス範囲に該当した行のE列にあるセル($E$?行目) を、 それぞれ表示させる。 一行におけるCからE列($C:$E)の組み合わせは同じであるが、 1行目と2行目には別の組み合わせが、2行目と3行目にはまた別の 組み合わせが記載されている。 CからE列($C:$E)の組み合わせは最初に数行分記載した後は、 ほとんど書き換えることはありません。例:$C$1:$E$100 しかしBの列は、調べたいIPを都度書き換えていきます。 B1($B$1)にはさっきとは別のIPに書き換えたり、B2($B$2)に あらたに調べたいIPを書き加えます。 すると、A1($B$1)やA2($A$2)には、B1($B$1)やB2($B$2)が、 あらかじめ記載されているCからD列($C$1:$D$100)にあるいずれかの IP範囲に該当する場合、該当した●行のE列のセル($E$該当した●行番号)を 表示させる。。。 少し話か冗長しましたが、以上です。 (vlookup関数を使う必要がある?) よろしくお願いします。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.6

回答No2です。式が複雑になるので簡単には次のようにすることでしょう。 なお、次の方法ではIPアドレスが何ケタの数値の組み合わせになっていても対応することができます。 初めにB列を選択します。その後に「データ」タブの「区切り位置」で「次へ」、「区切り文字」のその他に「.」を入力して「次へ」、「表示先」の窓には$F$1と入力して「完了」します。この操作でB列にある3つの.で区切られた4つの数値がF,G,H,I列にそれぞれ表示されます。同様にしてC列を選択して区切り文字の操作で、表示先を$J$1として、それらの数値をJ,K,L,M列に表示します。D列についても表示先を$N$1として、4つの数値をN,O,P,Q列に表示させます。 その後にA1セルには次の式を入力して下方にオートフィルドラッグします。 =IF(E1="","",IF(AND(MIN(F1:I1)>=MIN(J1:M1),MAX(F1:I1)<=MAX(N1:Q1)),E1,"")) A列に表示のあるB列のセルの背景を赤にするためには次のようにします。 初めにB列を選択します。 次に「条件付き書式」で「数式が」などにして数式の窓には次の式を入力します。 =A1<>"" 同じ画面の「書式」をクリックして「塗りつぶし」のタブから赤色を選択してOKします。

hdddvd
質問者

お礼

ご回答ありがとうございます。 一行に限定したやり方としては間違いではないのですが、 複数行では実現できません。 C列からE列にかけてのアドレス範囲は排他的領域です。 実現例としては添付図のように、B列のセルのIPが、C列からE列に かけてのどの範囲に属しているかを知りたいのです。 Bのセルが検索したい数字であり、C列からE列のアドレス範囲が DBという扱いです。 よって、C列からE列のアドレスは、各行によって数字の昇順・降順に 関わらずランダムに表記されていますが、アドレス範囲は排他的領域なので C列からE列をソートして昇順にすることは想定内です。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.5

> =IF(AND(ISNUMBER(SUBSTITUTE(B1,".",)*1),LEN(B1)-LEN(SUBSTITUTE(B1,".",))=3),LEFT(B1,FIND(".",B1)-1)*10^9+MID(B1,FIND(".",B1)+1,FIND(".",SUBSTITUTE(B1,".",,1))-FIND(".",B1))*10^6+MID(B1,FIND(".",SUBSTITUTE(B1,".",,1))+2,FIND("゛",SUBSTITUTE(B1,".","゛",3))-FIND(".",SUBSTITUTE(B1,".",,1))-2)*10^3+RIGHT(B1,LEN(B1)-FIND("゛",SUBSTITUTE(B1,".","゛",3))),"") >上記の関数では何を求めているのか簡単なご説明をいただければ幸いです。  まず、 AND(ISNUMBER(SUBSTITUTE(B1,".",)*1),LEN(B1)-LEN(SUBSTITUTE(B1,".",))=3) の部分はIF関数の判定式で、 ISNUMBER(SUBSTITUTE(B1,".",)*1) の部分で、B1の値から、SUBSTITUTE関数を使用して「.」を全て取り除くと、数字のみになっている事を判定し、 LEN(B1)-LEN(SUBSTITUTE(B1,".",))=3 の部分で、「.」を全て取り除いた前後における、文字数の差が3文字である事を判定する事で、「.」が3個含まれている事、即ち「.」によって4つに区切られている事を判定しています。  それを、ANDで囲む事で、「.」によって4つに区切られている数字である事を判定しています。  次に、 LEFT(B1,FIND(".",B1)-1) の部分は、FIND関数を使って最初の「.」が、左から何番目にあるのかを求めて、それよりも前にある部分、即ちB1セルの値である 203.216.243.240 の中の 203 を取り出しています。  次に、 MID(B1,FIND(".",B1)+1,FIND(".",SUBSTITUTE(B1,".",,1))-FIND(".",B1)) の部分は、最初の「.」よりも右側で、2個目の「.」よりも左にある 216 を取り出しています。  この時、2個目の「.」の位置を求めるために、SUBSTITUTE関数を使用して、最初の「.」を取り除いた文字列中で、最初に「.」が現れる位置、即ち、元の文字列の2個目の「.」の位置(正確には、その1つ前の位置)を求めています。  次に、 MID(B1,FIND(".",SUBSTITUTE(B1,".",,1))+2,FIND("゛",SUBSTITUTE(B1,".","゛",3))-FIND(".",SUBSTITUTE(B1,".",,1))-2) の部分は、2個目の「.」よりも右側で、3個目の「.」よりも左にある 243 を取り出しています。  この時、3個目の「.」の位置を求めるために、SUBSTITUTE関数を使用して、3個目の「.」を、IPアドレスに現れる筈がない文字である「゛」(濁点)に置換し、置換後の文字列中における「゛」の位置、即ち、元の文字列の3個目の「.」の位置を求めています。  次に、 RIGHT(B1,LEN(B1)-FIND("゛",SUBSTITUTE(B1,".","゛",3))) の部分は、3個目の「.」よりも右側にある 240 を取り出しています。  そして、4個の数字の桁が重ならない様にするために、左側の区切りの数字の桁が、右側の区切りの数字の桁よりも、3桁大きな値となる様に、最初の区切りには10億、2番目の区切りには100万、3番目の区切りには1000を乗じてから、4個の数字を合計し、 203216243240 という数値を得ています。  C1とD1に対しても、同様の処理を行い、数値に変換してから、各IPアドレスの大小を比較しています。  尚、単純に全ての「.」を削除しただけでは、 203.216.224.0 の様に、3桁未満の数字が含まれている場合には、桁がずれてしまい、IPアドレスの大小を比較する事が出来なくなります。

hdddvd
質問者

お礼

IPの特質を理解して頂いている最も理想的に近い回答です。 複数行にまたがった場合の方法をご教示ください。

noname#204879
noname#204879
回答No.4

[No.1補足]へのコメント、 IPアドレスの形式を、私は誤解しておりました。 203.216.243.240 のように3桁ずつと思い込んでいたのです。 つまり、203.216.224.0 でなく、203.216.224.000 という具合に。 でも貴方は「C1は(203.216.224.0)」と仰っていたのを、いま気づきました。 私が提示した式は「3桁ずつ」の形式の場合にしか対応していないので、私の回答は無視してください。 それはソレとして、貴方の説明が理解できません。 添付図の1行目は B1: 203.216.243.240 C1: 203.216.224.000 D1: 203.216.255.255 としていたので、セル B1 を赤く表示し、セル A1 にセル E1 の内容を表示させたのです。つまり、既にセル A1 に「ヤフー株式会社」と表示されているので、「B1のIPが、別の行であるC2からD2列にかけてのアドレス範囲(ユホー株式会社)である場合にも、A1に(ユホー株式会社)と表示させる方法」はありません。 ひょっとして、その場合は、「ヤフー株式会社」と「ユホー株式会社」の二つを表示させたいということでしょうか?それは無理難題のような気がしています。 何れにしても、文章でゴチャゴチャ述べるより、貴方が期待する結果例を添付図で示した方が一目瞭然です。

hdddvd
質問者

お礼

「3桁ずつ」の形式の場合にしか対応していない件、ご連絡ありがとうございます。 私が期待する例を質問の欄に添付しました。

hdddvd
質問者

補足

捕捉になりますが、例にあげて頂いた「ヤフー株式会社」と「ユホー株式会社」の場合、同じアドレス範囲ではありません。排他的領域となります。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

 まず、F1セルに次の数式を入力して下さい。 =IF(AND(ISNUMBER(SUBSTITUTE(B1,".",)*1),LEN(B1)-LEN(SUBSTITUTE(B1,".",))=3),LEFT(B1,FIND(".",B1)-1)*10^9+MID(B1,FIND(".",B1)+1,FIND(".",SUBSTITUTE(B1,".",,1))-FIND(".",B1))*10^6+MID(B1,FIND(".",SUBSTITUTE(B1,".",,1))+2,FIND("゛",SUBSTITUTE(B1,".","゛",3))-FIND(".",SUBSTITUTE(B1,".",,1))-2)*10^3+RIGHT(B1,LEN(B1)-FIND("゛",SUBSTITUTE(B1,".","゛",3))),"")  次に、F1セルをコピーして、G1セルとH1セルに貼り付けて下さい。  次に、A1セルに次の数式を入力して下さい。 =IF(AND($E1<>"",COUNT($F1:$H1)=3),IF(OR($F1<$G1,$F1>$H1),"",$E1),"")  そして、B1セルの条件付き書式設定では、「数式が」とした上で、次の数式を入力して下さい。 =AND(COUNT($F1:$H1)=3,$F1>=$G1,$F1<=$H1)

hdddvd
質問者

お礼

=IF(AND(ISNUMBER(SUBSTITUTE(B1,".",)*1),LEN(B1)-LEN(SUBSTITUTE(B1,".",))=3),LEFT(B1,FIND(".",B1)-1)*10^9+MID(B1,FIND(".",B1)+1,FIND(".",SUBSTITUTE(B1,".",,1))-FIND(".",B1))*10^6+MID(B1,FIND(".",SUBSTITUTE(B1,".",,1))+2,FIND("゛",SUBSTITUTE(B1,".","゛",3))-FIND(".",SUBSTITUTE(B1,".",,1))-2)*10^3+RIGHT(B1,LEN(B1)-FIND("゛",SUBSTITUTE(B1,".","゛",3))),"") 上記の関数では何を求めているのか簡単なご説明をいただければ幸いです。 扱っているのがただの数値ではなく、IPアドレスというコンマ区切りのもの ですので関数がオクテット毎に計算しているのでしょうか。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

非常に長い式になりますがA1セルには次の式を入力して下方にオートフィルドラッグします。 =IF(COUNTA(B1:E1)<>4,"",IF(AND(IF(LEN(SUBSTITUTE(B1,".0",""))=15,MIN(MID(B1,1,3),MID(B1,5,3),MID(B1,9,3),MID(B1,13,3)),IF(LEN(SUBSTITUTE(B1,".0",""))=11,MIN(MID(SUBSTITUTE(B1,".0",""),1,3),MID(SUBSTITUTE(B1,".0",""),5,3),MID(SUBSTITUTE(B1,".0",""),9,3)),IF(LEN(SUBSTITUTE(B1,".0",""))=7,MIN(MID(SUBSTITUTE(B1,".0",""),1,3),MID(SUBSTITUTE(B1,".0",""),5,3)),IF(LEN(SUBSTITUTE(B1,".0",""))=3,SUBSTITUTE(B1,".0","")))))>=IF(LEN(SUBSTITUTE(C1,".0",""))=15,MIN(MID(C1,1,3),MID(C1,5,3),MID(C1,9,3),MID(C1,13,3)),IF(LEN(SUBSTITUTE(C1,".0",""))=11,MIN(MID(SUBSTITUTE(C1,".0",""),1,3),MID(SUBSTITUTE(C1,".0",""),5,3),MID(SUBSTITUTE(C1,".0",""),9,3)),IF(LEN(SUBSTITUTE(C1,".0",""))=7,MIN(MID(SUBSTITUTE(C1,".0",""),1,3),MID(SUBSTITUTE(C1,".0",""),5,3)),IF(LEN(SUBSTITUTE(C1,".0",""))=3,SUBSTITUTE(C1,".0",""))))),IF(LEN(SUBSTITUTE(B1,".0",""))=15,MAX(MID(B1,1,3),MID(B1,5,3),MID(B1,9,3),MID(B1,13,3)),IF(LEN(SUBSTITUTE(B1,".0",""))=11,MAX(MID(SUBSTITUTE(B1,".0",""),1,3),MID(SUBSTITUTE(B1,".0",""),5,3),MID(SUBSTITUTE(B1,".0",""),9,3)),IF(LEN(SUBSTITUTE(B1,".0",""))=7,MAX(MID(SUBSTITUTE(B1,".0",""),1,3),MID(SUBSTITUTE(B1,".0",""),5,3)),IF(LEN(SUBSTITUTE(B1,".0",""))=3,SUBSTITUTE(B1,".0","")))))<=IF(LEN(SUBSTITUTE(D1,".0",""))=15,MAX(MID(D1,1,3),MID(D1,5,3),MID(D1,9,3),MID(D1,13,3)),IF(LEN(SUBSTITUTE(D1,".0",""))=11,MAX(MID(SUBSTITUTE(D1,".0",""),1,3),MID(SUBSTITUTE(D1,".0",""),5,3),MID(SUBSTITUTE(D1,".0",""),9,3)),IF(LEN(SUBSTITUTE(D1,".0",""))=7,MAX(MID(SUBSTITUTE(D1,".0",""),1,3),MID(SUBSTITUTE(D1,".0",""),5,3)),IF(LEN(SUBSTITUTE(D1,".0",""))=3,SUBSTITUTE(D1,".0","")))))),E1,"")) なお、B列でA列に記載のあるセルの背景色を付けるのでしたら、B列を選択したのちに「条件付き書式」で「数式が」などを選んで数式には次の式を入力し、同じ画面の「書式」から「塗りつぶし」のタブで好みの色を指定すればよいでしょう。 =A1<>""

hdddvd
質問者

補足

残念ながら、式が長いので入力制限に引っ掛かってしまいました。

noname#204879
noname#204879
回答No.1

添付図参照 A1: =IF(AND(B1>=C1,B1<=D1),E1,"") セル B1 の条件は次のとおり 数式が    AND(B1>=C1,B1<=D1) フォント色  白 パターン色  赤

hdddvd
質問者

補足

添付図を確認しました。 添付図のB1のIPが、別の行であるC2からD2列にかけての アドレス範囲(ユホー株式会社)である場合にも、A1に (ユホー株式会社)と表示させる方法はありますか。 C列からE列にかけていくつかのアドレス範囲とその説明を 記載していき、B1のセルのIPにはそのいずれかのアドレス範囲に 該当した場合にその説明をA1に表示させるのが最終目的です。 よろしくお願いします。

関連するQ&A

  • エクセルの条件範囲と合致したもの

    エクセルの条件範囲と合致したもの こんにちは。http://okwave.jp/qa/q5924759.htmlで質問していたのですが、 うまくいかないので、教えてください。 たとえば、同じシートで、 A1/B1/C1/D1・・・・・・←セル列 (スラッシュはセルだとします) A /1 /A /1 B /2 /B /2 D /3 /C E /4 /D /3 G /5 /E /4 I /6 /F / このように、列同士(A1の列とC1の列)が同じものがあった場合、A1の隣のセルであるB1のセルの数字をA4のセルに記載したい場合の数式を教えていただきたいです。D1に新たに追加されたものに関しては空白をしたいのです。 =IF(COUNTIF($A$1:$A$6,$C$1:$C$6)=0," ",IF(COUNTIF($A$1:$A$6,$C$1:$C$6)=1,B1)) この式を考えましたが、D1の列のDの部分の数字が"4"と記載されてしまい、本来なら"3"を 記載したいのですが、ずれてしまいます。 たぶん、条件の範囲のものとIFを合体させた数式になるのかなって思うのですが、 もし数式を教えていただければ幸いです。 何度も質問してすみません。。。よろしくお願いいたします。

  • Excel2000 エクセル 範囲内で条件を満たす最小の列を返す方法

    Excel2000 エクセル 範囲内で条件を満たす最小の列を返す方法 Excelで関数を使って「ある範囲内で条件を満たす最小の列を返す」 というセルの作成方法を教えていただけませんか? 例えばA1からJ1の1行に 0 0 0 1 2 1 3 6 0 0 という数値が入力されているとします。 この10個のセルを左から順に「セル内の値>0となる」という条件に合うか調べた場合、 何列目に条件を初めて満たす事ができるかを返すセルを作りたいのです。 この場合「セル内の値>0」の条件を満たす最小の列のセルは、 「1>0」となるセルD1となり、左から4列目なので 「4」 を返したい。 出来れば「ある範囲内で条件を満たす最大の列を返すセル」の作成法も教えていただけませんか? (1)の例の場合「セル内の数値>0」の条件を満たす最大の列のセルは、 「6>0」となるセルH1となり、左から8列目なので「8」を返すようなセルを作りたい。 複数のシートにデータがあり、それらのシートに一括でこのセルを作りたいため、 補助となる行を入れるのはよいのですが、 行列を入れ替えるような操作がいらない方法が知りたいです。 どうかよろしくお願いします。

  • ExcelVBAで複数範囲した色セルと、条件で別セルも同色になるようにしたい

    ▼Excel2003を利用でSheet1とSheet2を使っての質問です▼ 下記に簡単に事例を記載いたします。(※実際にはデータが沢山あります) ★Sheet1にはA1~G3範囲横7列縦3行の表があり、表中にはA1、B1、C1、D1が空白でその次からは1~17までの数字が横列に沿って順次入っています。G3セルが最後の数字の17となっています。 横7列に入っている数字はA1、A2、A3、A4空白のセル以外は列毎にセル背景色が異なり全部で7色入っています。 ★次にSheet2に新たにA1~D4範囲内に表を作り、順次セルに数字値を入力し、例えばSheet2のA1セルが1だったら、そのSheet2のA1セル背景色をSheet1の表中の1が入力されているセルと同じ背景色にしたいです。 以上の課題をExcelVBAを使って解決したいのですがご存じの方いらっしゃいましたらVBAでどうプログラミング表現すれば良いか教えていただければ幸いです。 ちなみに私自身はExcelVBAを一度も使ったことがなく初心者です。 恐縮ながらもよろしくお願い申し上げます。

  • excel2003散布図で軸目盛範囲を自動設定にすると表示範囲が広くなり困ってます

    以下のA1~A3、B1~B3のセルを選んで散布図を作りたいのですがA1~A3に式が入っているせいか、最大最小目盛を自動に設定するとY軸範囲がとても広くなり(150,155の数値範囲に対して0~200)困ってます。 グラフデータ範囲 Y:式 A1=IF(count(D1:E1)=2,H1,"")→今回A1は150と表示されています A2=IF(count(D2:E2)=2,H2,"")→今回A2は155と表示されています A3=IF(count(D3:E3)=2,H3,"")→今回E3が空白のためA3は空白です X:値 B1=1,B2=2,B3=空白 ちなみにセルの選択範囲をA1A2,B1B2もしくはA1A2,B1~B3とするとY軸範囲は149~159と妥当な範囲を示してくれます。A3の空白を含むとY軸範囲が0~になるようです。 A1~A3、B1~B3を選択して、最大最小目盛の自動設定で範囲が149~159前後になるような方法をご存知の方、お教えください。よろしくお願いします。

  • EXCEL2003 印刷範囲の設定方法

    WindowsXp Excel2003を使用中です。 列幅 は A列(20.50 169ピクセル) B列(92.38 744ピクセル) 行高 は 全部(66) 表は 列 は A, B 行は 8 行 の表です。 この表を印刷するため 表の範囲をマウスでドラグして選択しようと shftキーを押しながら 列A B を選択しようとすると ひとりでにA B C D Eまで選択されてしまい ABだけ選択することができません。 印刷範囲は A1セルからD8セルまでの表となり 不要なCDE列が入ってしまいます。 どうしたら A1セルからB8セルまでの 範囲を選択できるのか を お教えください。

  • 条件付き書式について Excel2007

    条件付き書式についてわからないことがあるので、質問させてもらいます。 ...|A|B|C|D| 1| 2| 3| とあるとき、D1に"○"があると、A1~C1のセル背景の色を変えるという条件付き書式がわかりません。 一応 =$D1="○" というのを作ったのですが、値のないセルにのみ色がついてしまいます。 わかる方がいれば教えてください。

  • IPアドレスの求め方

    IPアドレス 187.187.187.187でネットマスク255.255.255.240/27のアドレスがあります。 このサブネットで割り当てができるホストのIPアドレスで最小と最大のものを求めよという問題があるのですが、やり方がわからないのです。 それから、ネットワークアドレス(ホスト部が0)を求めよという問題があったのですが、 これは、IPを187.187.187.0にしてから二進数にしたIPアドレスとネットマスクをANDしろという意味で合っているのでしょうか? よろしくお願いします。

  • 指定範囲の条件に合致する順位

    EXCELのVBAで以下のことをやりたいのですが、分かりません。 アドバイス頂けますでしょうか。 例として、1から40行固定の表があります。A、B、C、D列とあり、 A列は数値が必ず入っているセル(1~40)、 B列は時間のシリアル値で、値が入っているセルと入っていないセルの混在、 C列は文字列で値が必ず入っているセル、 D列は数値で、、値が入っているセルと入っていないセルの混在、という表があるとします。 この時に、 「”Bに値が入っていて、かつ、Dに値が入っていない行”の、”B列のトップ3”の、AとBのデータ」が 欲しいのですがどのようにしたらいいか分かりません。 お願いいたします

  • 【excel2003 vba】指定した文字列が入力されている「セル範囲」の表示方法?

    ◎Sheet1  A B C D E 1○○○-- 2○○○×× 3---×× 4×○--- ※「-」は空白 上記のようにセルに「○」「×」が入力されている「Sheet1」シートがあります。(例として○×の2種類を使っていますが、本当はもっとたくさんの種類の文字列があります。) vbaを使って、以下の一覧表を「List」シートに作成するコードを作成できませんでしょうか? ◎List  A     B 1○     ×  '文字列の種類 2A1:C2  D2:E3 '文字列の範囲  3B4     A4  '同上 【ToDo】 (1)1行目に文字列(○、×)を入力する (2)1行目に入力してある文字列が入力されているすべての「セル範囲」を2行目以降の各列に抽出する。 **1セル内に「○」「×」の両方が入力されているものもある。**  ⇒例えば、A1セルに「○×」と入力されていたら、「Rist」シートのA列B列の両方に「A1」が抽出されるようにしたい。 1セルごとのセル番地(○:A1,A2,B1,…)を一覧化することはできるのですが、同じ文字列をまとめた「範囲」の抽出ができないのです。 どなたかお力添えをお願いできませんでしょうか? 宜しくお願い致します。

  • Excel 3つの条件文を一つのセルにいれたい。。

    Excel、下述の 3つの条件文を一つのセルにいれたい。。です。 その一つのセルを仮にD2とします =IF(A2="","",A2*O2) =IF(B2="","",B2*O2) =IF(C2="","",C2*O2) A2に数値がはいっていなかったらD2は空白で、数値が入っていたらA2*O2の計算をする B2に数値がはいっていなかったらD2は空白で、数値が入っていたらB2*O2の計算をする C2に数値がはいっていなかったらD2は空白で、数値が入っていたらC2*O2の計算をする つまり、上述のIF文を一つにまとめたいのです。 頭が悪くてわかりません、誰か助けてください!!!!お願い致しますm(_ _)m

専門家に質問してみよう