• ベストアンサー
  • 困ってます

エクセルの関数について

エクセルで、以下のことを行いたいと思っています。 どのようにすれば宜しいでしょうか。 セルJ9に文字列"S"が入力されたら、セルF9、セルG10に文字列"×"を表示、セルI12に文字列"-"を表示させ、セルJ9にそれ以外の入力であればセルF9、G10、I12には何も表示させない。 ※但し、セルF9に文字列"S"以外が入力された時(何も表示させない時)は、セルF9、G10、I12の直接入力を優先させる。

共感・応援の気持ちを伝えよう!

  • 回答数6
  • 閲覧数128
  • ありがとう数7

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.5

おはようございます。 > If c.Value = "RES" Or c.Value = "JP" Or c.Value = "MIN" Or c.Value = "res" ・・・ Then > と長くなってしまいましたが そんなにたくさんあるなら、SelectCase構文に書き換えましょう。 Private Sub Worksheet_Change(ByVal Target As Range) With Target If .Column <> 10 And .Column <> 4 Then Exit Sub If .Row < 9 Then Exit Sub x = ActiveCell.SpecialCells(xlLastCell).Row Application.Calculation = xlCalculationManual Application.ScreenUpdating = fales If .Column = 10 Then If Selection.Count > 1 Then Set Rng = Range(Cells(9, 10), Cells(x, 10)) Else Set Rng = Target End If For Each c In Rng Select Case c.Value Case "S" c.Offset(0, -4).Value = "×" c.Offset(1, -3).Value = "×" c.Offset(3, -1).Value = "-" Case Else c.Offset(0, -4).Value = "" c.Offset(1, -3).Value = "" c.Offset(3, -1).Value = "" End Select Next Else If Selection.Count > 1 Then Set Rng = Range(Cells(9, 4), Cells(x, 4)) Else Set Rng = Target End If For Each c In Rng Select Case c.Value Case "RES", "JP", "MIN", "res", "jp", "res" c.Offset(0, 4).Value = "-" c.Offset(0, 9).Value = "-" Case Else c.Offset(0, 4).Value = "" c.Offset(0, 9).Value = "" End Select Next End If End With Set Rng = Nothing Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True End Sub

共感・感謝の気持ちを伝えよう!

質問者からのお礼

merlionXX様 ありがとうございました。 処理も早くなり、スマートになりました。 本当に助かりました。

関連するQ&A

  • エクセル関数にて・・・・

    エクセルのIF関数を使って計算しているのですが、うまく出来ません。 例えば、「東京」という文字列を含むセルを検索して一致したら「○」、含んでなかったら「×」と表示させたいのですが、論理式に"*東京*"としても認識してくれません。 論理式には、文字列の入力は出来ないのでしょうか? 「東京」の他に「〒」とか「A」をしてみると認識するんですが、「大阪」とかになると出来ません。 どうか教えてください。

  • エクセル if関数

    エクセル初心者なのでうまく説明できないのですが、以下のような条件で数式を入力したいのですが教えていただけないでしょうか。 例えばなのですが、A1のセルに入力されている文字列に”高橋”を含んでいたならば、C1のセルにB1のセルに入力されている数字×”1500”の計算結果を表示したい。 また同様に、A1に入力されている文字列に”伊藤”を含んでいるならば、C1のセルにB1のセルに入力されている数字×”1000”の計算結果を表示したい。 つまりひとつのセル”高橋”が入力されている場合と”伊藤”が入力されている場合の二つの条件をつけたいのですが、このようなことは可能でしょうか。 宜しくお願いいたします。

  • エクセル関数について

    エクセルの関数式についてです。 ネットでもいろいろ検索してみたのですが、どうしても解決できません。 どなたかお分かりになる方、教えてください。 たとえば。。 [A1]のセルに、"(1)という文字列が含まれる場合は、[B11]のセルのコピーを、 "(2)"という文字列が含まれる場合は、[B12]のセルのコピーを、 "(3)"という文字列が含まれる場合は、[B13]のセルのコピーを表示させたいのです。 ちなみに、[B11],[B12],[B13]のセルには、SUM関数式が入っています。

その他の回答 (5)

  • 回答No.6

すみません、#5のコードにうっかりミスがありました。 上から7行目を Application.ScreenUpdating = False 下から14行目を Case "RES", "JP", "MIN", "res", "jp", "min" に修正してください。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ご丁寧にどうもありがとうございました。

  • 回答No.4

こんばんは。 ではこれでいかが? Private Sub Worksheet_Change(ByVal Target As Range) With Target If .Column <> 10 And .Column <> 4 Then Exit Sub If .Row < 9 Then Exit Sub x = ActiveCell.SpecialCells(xlLastCell).Row If .Column = 10 Then Set Rng = Range(Cells(9, 10), Cells(x, 10)) For Each c In Rng If c.Value = "S" Then c.Offset(0, -4).Value = "×" c.Offset(1, -3).Value = "×" c.Offset(3, -1).Value = "-" Else c.Offset(0, -4).Value = "" c.Offset(1, -3).Value = "" c.Offset(3, -1).Value = "" End If Next Else Set Rng = Range(Cells(9, 4), Cells(x, 4)) For Each c In Rng If c.Value = "RES" Or c.Value = "JP" Then c.Offset(0, 4).Value = "-" c.Offset(0, 9).Value = "-" Else c.Offset(0, 4).Value = "" c.Offset(0, 9).Value = "" End If Next End If End With Set Rng = Nothing End Sub "RES"に"JP"を追加し、複数選択時もエラーが出ないようにしてみました。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

merlionXX様 本当にありがとうございました。 完成しました。 条件を増やすのはOrを使えば良かったんですね。 If c.Value = "RES" Or c.Value = "JP" Or c.Value = "MIN" Or c.Value = "res" ・・・ Then と長くなってしまいましたが、上記のようにしました。 本日ポイント発行して締め切らさせて頂きます。

  • 回答No.3

If Target.Column <> 4 Then Exit Sub ということですからD列に「RES」と入力された場合の条件追加ですね? Private Sub Worksheet_Change(ByVal Target As Range) With Target If .Column <> 10 And .Column <> 4 Then Exit Sub If .Row < 9 Then Exit Sub If .Column = 10 Then If .Value = "S" Then .Offset(0, -4).Value = "×" .Offset(1, -3).Value = "×" .Offset(3, -1).Value = "-" Else .Offset(0, -4).Value = "" .Offset(1, -3).Value = "" .Offset(3, -1).Value = "" End If Else If .Value = "RES" Then .Offset(0, 4).Value = "-" .Offset(0, 9).Value = "-" Else .Offset(0, 4).Value = "" .Offset(0, 9).Value = "" End If End If End With End Sub こんな感じでしょうか。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

merlionXX様 ありがとうございました。 助かりました。 望み通りの動作となっております。 最後ですが、 If .Value = "RES" Then 上記に条件(RES以外にもJPとか)を追加する場合は、どうすれば良いでしょうか。 (これは何種類もあります) If .Value = "RES","JP" Then では構文エラーでした・・・

質問者からの補足

すみません、 D列(もしくはJ列)に関して、セルを複数選択してDeleteすると、下記の行で、「実行時エラー"13" 型が一致しません」と言うエラーが発生します。 If .Value = "RES" Then 防げる手立てはあるでしょうか? (1セルだけの選択Deleteは問題ありませんでした)

  • 回答No.2

poppoyayaさん、こんにちは。 > ・・・ > みたいに行がずれていく感じです。 merlionXXです。 では、以下のように修正します。 9行目以下のJ列に入力された場合に作動するようにしました。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column <> 10 Then Exit Sub If Target.Row < 9 Then Exit Sub If Target.Value = "S" Then Target.Offset(0, -4).Value = "×" Target.Offset(1, -3).Value = "×" Target.Offset(3, -1).Value = "-" Else Target.Offset(0, -4).Value = "" Target.Offset(1, -3).Value = "" Target.Offset(3, -1).Value = "" End If End Sub

共感・感謝の気持ちを伝えよう!

質問者からのお礼

merlionXX様 大変ありがとうございました。 差し出がましいのですが、条件式を追加したい場合はどこに追加すれば宜しいでしょうか? 教えて頂きました内容に、以下の条件も追加したいのです。 特定のセルに"RES"と入力したら、指定のセルに値を表示させる。 (教えて頂いたものを流用させて頂く場合は、以下の条件式になります) If Target.Column <> 4 Then Exit Sub If Target.Row < 9 Then Exit Sub If Target.Value = "RES" Then Target.Offset(0, 4).Value = "-" Target.Offset(0, 9).Value = "-" Else Target.Offset(0, 4).Value = "" Target.Offset(0, 9).Value = "" End If

  • 回答No.1

ご要望のようなことはワークシート関数では不可能です。 セルJ9に文字列"S"が入力されたら、セルF9、セルG10に文字列"×"を表示、セルI12に文字列"-"を表示させたり、セルJ9にそれ以外の入力であればセルF9、G10、I12には何も表示させないということならIF関数でとても簡単なのですが、セルF9、G10、I12に直接入力もするのなら、その段階でせっかく作った関数は消えてしまいます。 このような場合には関数ではなくVBAの出番となります。 以下を試してみてください。 1.シートのタブを右クリックし、「コードの表示」を選択。 2.出てきたVisualBasicEditor(白い部分)に下記のコードをコピペ。 '*****ここから下をコピペ***** Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$J$9" Then Exit Sub If Target.Value = "S" Then Range("F9,G10").Value = "×" Range("I12").Value = "-" Else Range("F9,G10,I12").ClearContents End If End Sub '*****ここより上までをコピペ***** 3.Altキー+F11キーでワークシートへもどります。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございました。 VBAを用いて対応しようと思います。 すみませんが、セル入力1つじゃないのですが、この場合どうすれば良いでしょうか? セルJ9に文字列"S"が入力されたら、セルF9、セルG10に文字列"×"を表示、セルI12に文字列"-"を表示させたり、セルJ9にそれ以外の入力であればセルF9、G10、I12には何も表示させない。 で、以下 J10に~セルF10、G11~セルI13 J11に~セルF11、G11~セルI14 ・・・ みたいに行がずれていく感じです。

関連するQ&A

  • エクセルの関数式です

    エクセルの関数式で質問です。 一つのセル内に、複数の文字列が入力してある(半角スペースで区切りがある)中で、含む文字列のものの個数をカウントしたい場合はどうすれば良いのでしょうか? フィルタ機能で、含む文字列はできるのに・・・。 (たとえば、ひとつのセル内に 「豆腐 豆 大豆」 「豆 大豆」 「豆腐 豆」 てな感じでセル内に入力してある場合、「豆腐」を含むセル個数をカウントしたい場合はどうすれば良いんでしょうか?

  • Excel関数で自動表示は可能でしょうか。

    最近Excelを始め仕事(道路関係)に使うため勉強しています。 質問失礼致します。 下記のようなExcelシートがあるとします。   A  B  C   D E 1    ○ × 2 a1  a2 a3   a4 × 3 a2  a3 a4    4 a3  a1 a4    5 a4  a1 a2      ここで質問ですが、D2のセルに、a4と入力した時に、下の計算式を通した上で、E2のセルに×と自動表示させためにはどういった数式がひつようでしょうか? 計算式 A列から、D列に入力した文字列(D2のセルに入力したa4)と同じ文字列をみつけ、(この場合はA5セルにあるa4が抽出される)。A列で抽出された一致する文字列の行から、文字列を入力した行のA列(D2のセルにa4と入力したので、その行のA列は、a1になる)に一致する文字列を判断し、さらに、○の列か×の列か、一致するほうの○×どちらかを、自動でE2セルに表示させる。   A  B  C   D E 1    ○ × 2 a1  a2 a3   a4 × 3 a2  a3 a4   a1 ○ 4 a3  a1 a4   a1 × 5 a4  a1 a2   a2 × その数式を使って、D列に文字列を入力していくと、自動にE列に結果を表示させたいです。 ややこしくて、申し訳ありませんが、よろしくお願い致します。

  • エクセルで

    お世話になります エクセルで、セルに文字列を入力した場合に 必ず(文字列)と表示させるにはどうすればよいのでしょうか? 例)エクセルと入力すると   (エクセル)と表示される方法 数字はできるのですが、文字がどうしてもうまくいきません。 よろしくお願いします。

  • エクセルの関数について

    エクセルについて質問です。 「ある数値を入力したら常に一定の文字列を表示する」にはどの関数がいちばん便利でしょうか? 例:セルA1に101を入力→B1に「りんご」を表示 セルA2に201を入力→B2に「みかん」を表示 のように全部で50程度の数値&文字列の組み合わせ(コード表)を 判別したいと思っています。 よろしくお願いします。

  • Excelの条件式について

    Excelのセルに値を入力する際に ・セルの中に一文字「a」と入力したら「林檎」と表示 ・セルの中に一文字「b」と入力したら「ブルーベリー」と表示 ・セルの中に一文字「c」と入力したら「ココナッツ」と表示 ・その他の一文字あるいは文字列を入力した際には、その文字(あるいは文字列)がそのまま表示 されるようにするにはどのような式を書けばよろしいのでしょうか? お判りになられる方がいらっしゃいましたら教えて下さい。 よろしくお願い致します。

  • EXCELの関数について

    EXCELのTEXT関数を使用して -0.00117を文字列に変換しようとしています。 TEXT(セル,”#.####”)と入力したのですが 出力は-.00117となってしまいました。 -0.00117と出力させるにはどのようにすればいいのでしょうか?

  • エクセル 関数

    教えてください。Aセルには文字列が入力されていて、Cセルには何も数値が反映されていない時(Bセルに対する数式は有)だけにDセルに1を表示させる方法を教えてください。

  • Excelの関数について

    エクセルの関数で指定列に指定文字があったら、その右隣のセルの内容を別シートの指定セルに表示するというものはありますでしょうか? 参考として画像を添付致しますが、Sheet2のD列に「冷凍食品半額」という文字列があったら、その文字列の右隣にあるセルの内容(売上金額)をSheet1の指定セルに表示するというものです。 別シートの指定セルにIF関数を入れてやれば何とかなりそうな気がしたのですが、出来なかったので質問させて頂きます。 よろしくお願い致します。

  • EXCELの関数について教えてください。

    EXCELの関数について教えてください。 A列のセルに「18:00 」or 「18:30」 or「19:00」 or「19:30」と入力するとB列のセルに「8:00」と表示され、「17:30」と入力すると「7:00」と表示される方法を教えてください。 セルの書式の表示形式は「文字列」ではなく「時刻」に設定したいです。 多分IF関数をつかうを使うのではないかと思うのですが、書式が「時刻」のためかうまくいきません。 よろしくお願いします。

  • エクセルの関数を教えてください

    エクセルで範囲内で値もしくは文字列が入っているセルの数を数えたいのですが同じ値、文字列が同じである時はカウントしないようにしたいのですがどのような関数を使えばいいか教えてください。

専門家に質問してみよう