エクセルのシートの条件付データを一括置換する方法とは?

このQ&Aのポイント
  • エクセル2003を使っている関数初心者です。成績処理を簡単にするために、シートの条件付データを一括置換する方法を教えてください。
  • シートには10人の生徒の名前と10回の評価名があり、各生徒の得点は条件付き書式によって印がつけられています。
  • シートの色付部分を「●」に置換して、今後の評定を算出するための基本シートを作りたいです。どなたか方法を教えていただけませんか?
回答を見る
  • ベストアンサー

エクセルのシートの条件付データをある印に一括置換

エクセル2003を使っている関数初心者です。普段の受業での評価に基づいて成績処理をしようと思います。以下のような場合、エクセルでどのようにすれば簡単に処理ができるか教えてください。  (1)B1セルからK1セルまでには、横並びで10人の生徒の名前が入っています。 (2)A2セルからA11セルまでには、縦並びに10回の評価名が入っています。 (3)B2セルからK11セルには、それぞれの得点が入力されています。 (4)2行目から11行目までの各生徒の得点は、「条件付き書式」によって、それぞれ異なる条件  で印がつけられています。(現在は、「セルの強調表示ルール」で、「指定範囲より大きい」「指  定範囲より小さい」「指定の範囲内」など様々な条件が付けられています。そしてその結果は、  「濃い赤の文字・明るい赤の背景」によってセルが色付けされています。) (5)以上のようなシートの色付部分だけを「●」に置換したいのです。●印に置換することによ  って●印の数によって今後、評定を算出するようにしたいのです。 (6)各行ごとの条件によって●を出力するようにすればよいのですが、対象の行数が多いことと、  学期ごとに評価対象が変わることがありますので、基本のシートを作っておきたいと思っています。どなたかお分かりでしたらお願いします。

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

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

シートの色つき部分を●に置換してその数を数えたいとのことですが色を判断し●にするなどは関数を使って対応することはできません。 色つきにするための判断基準そのものを式に導入して●に相当する数を求めることにすればよいでしょう。しかしその判断基準となるものは行によって違ってくる可能性もあるとのことですからそれぞれの行ごとに判断基準が分かるようにしそれを式に取り込むようにしてはいかがでしょう。また、セルの条件付き書式でもそれらの判断基準を取り入れた形で設定できるようにすることでしょう。 例えば次のようにします。 お示しの表でB1セルからK1セルには氏名が、A2セルから下方には試験などの項目などが入力されているとします。B列からK列の2行目から下方には項目名に対応した試験などの点数が入力されているとします。 そこで各行での判断基準となる条件ですがN1セルには「以上」、O1セルには「以下」、P1セルには「以上から」、Q1セルには「以下まで」の文字をそれぞれ入力します。 そこで例えば2行目では90以上が該当すればN2セルには90,30以下が該当すればO2セルに30,50以上で60以下が該当すればP2せるに50、Q2せるに60と入力します。3行目も同じ条件であればそれぞれのデータを下方にコピーすればよいでしょう。 そこで●に相当する該当数ですが行ごとに表示させるとしてL1セルには赤色該当数とでも入力します。 L2セルには次の式を入力して下方にドラッグコピーします。 =IF(COUNT(B2:K2)=0,"",IF(N2="",0,COUNTIF(B2:K2,">="&N2))+IF(O2="",0,COUNTIF(B2:K2,"<="&O2))+IF(P2="",0,COUNTIF(B2:K2,">="&P2))-IF(Q2="",0,COUNTIF(B2:K2,">"&Q2))) なお、セルの条件付き書式の設定ですがB2セルからK列の下行のセルを範囲として選び、その後に「ホーム」タブの「条件付き書式」から「新しいルール」をクリックします。 「数式を使用して・・・・」にチェックをして数式の窓には次の式を入力します。 =OR(B2>=$N2,B2<=$O2,AND(B2>=$P2,B2<=$Q2)) 「書式」をクリックして「塗りつぶし」のタブから赤色などを指定してOKすればよいでしょう。

id2180
質問者

お礼

ご丁寧に解説していただきありがとうございました。参考にさせていただきます。助かりました。ありがとうございました。

その他の回答 (2)

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

回答No2です。 条件付き書式の式では次の式にするのがよいでしょう。 =OR(AND($N2<>"",B2>=$N2),AND($O2<>"",B2<=$O2),AND($P2<>"",$Q2<>"",B2>=$P2,B2<=$Q2)) このようにすることでN列、O列、P,Q列などのセルを空にした場合には空にしたセルの条件が無視できるようになっています。常にN列からQ列までのすべての条件が入力されている必要もありません。

id2180
質問者

お礼

なるほど、そうゆう方法もあるのですね。参考になりました。ありがとうございました。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

まず、とりあえずあなたがやってみたかったことですが。 >以上のようなシートの色付部分だけを「●」に置換したいのです エクセルでは、条件付き書式の「結果」を直接調べたり、何かに置換したりといった事は全くできません。 そのアプローチは諦めてください。 次に、実際にあなたがやりたいことですが。 >●印の数によって今後、評定を算出するようにしたい ●に見合う点数の数を、生徒ごとに直接計算で求めます。 そこでご質問は評価項目ごとに判断基準が異なる事ですが、簡単には次のように整理します。 #参考 全ての評価項目が一律な判定基準(たとえば70点以上で●)なら、シンプルにCOUNTIF関数で計算します いま、評点がそもそも0~10とか0~100点で記録されています。 ここで、ある項目は「4点から7点」で●だとします 次の項目は「31より小さい」で●だとすると、これは言い換えると「0から30」で●だということです 別の項目が「69より大きい」で●だとすると、これは言い換えると「70から100」で●だということです #評点に100点までのような上限が無い場合は、9999点などのありえない大きい数字までとみなします つまりすべての評価は、必ず「下限と上限の間なら●」という具合に書きなおすことが出来ます。 B列に各評価項目の●の下限値を記入します C列に各評価項目の●の上限値を記入します D列の生徒のD2からD11までの点数の「下限から上限までに入っている個数」は D12: =SUMPRODUCT(($B$2:$B$11<=D2:D11)*(D2:D11<=$C$2:$C$11)) のように計算する事ができます。 右にコピーして生徒ごとの●の数を数えます。

id2180
質問者

お礼

早速、ご丁寧に教えていただきありがとうございました。教えていただいたことを参考にやってみます。

関連するQ&A

  • エクセルの置換について

    エクセルの置換について エクセル2000を使っています。 1シート内に日付(10/1、10/2・・・)が複数セルに入力されています。 このシート内のセルを毎月更新(10/3→10/31、10/4→11/1、10/5→11/2と一定周期で変更)するのですが、ひとつずつのセルに直接入力変換していくと時間が掛かる為、現状は(これも面倒ですが)置換機能で1日ずつ“すべて置換”で更新しています。 ですが、例えば11/1→11/29という置換をすると、先に打ち込んだ11/1を含むセル(11/11、11/13など)全てが置換されてしまうため、“完全に同一なセルだけを検索する”にチェックし、すべて置換をするのですが、『置換対象となる一致するデータが見つかりません。検索範囲にそのデータがないか、または条件に一致するレコードがありません。』というエラーメッセージが出てしまい、置換ができません。 11/1のように(/1)が入力されたセルだけを指定して、別の日付に全て置換する方法はどうすれば良いですか? 宜しくお願いします。

  • エクセル 置換について

    windowsXP office2003 exel を使用しています。 エクセルで置換をしようとすると、(置換対象文字があるにもかかわらず、)置換できません。 「置換対象のデータが見つかりません。検索対象のデータの書式と条件が正しく指定されているかどうか確認してください。・・・・・シートが保護されていないかどうか確認してください。」といったエラーメッセージが出てしまいます。 シートは既に編集可能なので保護されているとは思えないのですが。。。 置換が出来ないのは例えばE行とF行で、その他の行は置換可能なようです。 何か原因があるのでしょうか?

  • 条件付書式の一括コピーは可能ですか?

    A1セルにA費目予算額、B1~L1セルに期別執行高が入っています。期別執行高が、予算額を超えると赤文字になるように条件付書式を設定しています。この条件付書式を、同様の行(A2、B2~L2...A6、B6~L6)に行毎にコピーしたいのです。B1~L1セルを範囲指定した上で、B2にカーソルをおいて「書式貼付」を実行しても、うまくコピーできません。 条件付書式の一括コピーは可能ですか?詳しい方教えてください。

  • エクセル2007条件検索

    エクセル初心者で勉強中です。 今、エクセル2007で下の画像のようなシートを作成しました。 学校での生徒の試験の得点をシート化したものです。 生徒の氏名は、C6セルからC15まで最高10名とし、D列に得点を 入力しています。生徒数は最低でも1名はいるとします。 今、2行目に合格基準点、3行目に不合格基準点を 入力しています。 それをもとに、E6セルからE15セルまでにそれぞれ結果を入力しています。 結果はそれぞれ以下の条件で表示させたいのです。 合格基準点を超える生徒には”合格”と表示させます。 不合格基準点未満の生徒には”不合格”と表示させます。 その間の生徒の得点には空白にします。 ただし、画像のとおり、不合格基準点以上で、かつ、最小得点の生徒には ”*”をつけたいのです。 そこで質問なのですが、このような処理をできる数式を E列に入れたいのですが、なかなかむずかしく思いつきません。 今は手入力でしているので大変です。 いい数式やVBAのコードはあるのでしょうか。 よろしくお願いします。

  • エクセル(マクロ)置換2 置換用リストを1行ずつ読み込むには

    おはようございます。 エクセルは使いなれてますがVBAは記録を使っていて 書き換える程度なので調べてもあまり理解できず困ってます。 先程質問して、結合セルの置換に関しては解決したのですが、 もし簡単にできるのであればと質問させて頂きました。 今置換用のシートは A列に置換前の文字 B列に置換後の文字が入ってます。 そして対象のシートが置換されるようになってるのですが、 これが列ではなく 1行目に置換前の文字 2行目に置換後の文字として処理するのには どこを書き換えればよろしいのでしょうか? 色々試しましたがうまくいきませんでした。 実は、1行目に(A1セルに学生名(1)・A2のセルに住所(1))など20個くらい項目があります 2行目以降に5000行程、学生のデータが入ってます。 各会社の履歴書フォーマットは違うのですが、 入力欄が学生名(1)や住所(1)など入っている項目が同じなので 置換しております。 今は、1行ずつ下のデータを置換シートに貼り付けて 履歴書のシートで置換えをして 新しいファイルにコピーし保存して次のデータという アナログな処理をしております。 同じフォーマット(履歴書)でしたらvlookupなどが使えたのですが。。。 フォーマットによって1つのセルに、学生名(1)と住所(1)が両方入っていたりするので諦めました。 対象セルの場所も形も違いますしね・・・ 列で処理していたマクロを参考に下に貼り付けました。 明日の昼までにあと4000行を処理しなければならなくて困ってます。 お手数ですがどうぞよろしくお願いいたします。 Sub 置換() With ThisWorkbook If ActiveSheet Is .Worksheets(1) Then Exit Sub For i = 1 To .Worksheets(1).Range("A500").End(xlUp).Row ActiveSheet.Range("A1:Z200").Replace _ What:=.Worksheets(1).Range("A" & i).Value, _ Replacement:=.Worksheets(1).Range("B" & i).Value, _ LookAt:=xlPart, SearchOrder:=xlByColumns Next End With End Sub

  • エクセルのファイル内で検索置換

    エクセルで検索置換するとき、指定範囲内のみを行う場合にどうすればよいですか。ドラッグして範囲してたものの、シート全体を検索してしまいます。つまりすべて、置換、とすると置換しなくてもよいセルまで置き換えられてしまうのです。

  • Excel VBA Sheet2で指定した条件でSheet1の行削除

    Sheetが2つあるExcelブックがあります。 Sheet2で検索条件(列とキーワード)を指定し、 この条件でSheet1を検索、 Sheet1で検索にヒットした行を行削除したいと考えています。 汎用性を高める為、Sheet2で指定する検索条件は可変とし、 検索対象とする列とキーワードは任意のものを必ず指定(""は無し)。 列&キーワードをひとつの検索条件として、 Sheet2の2行目~最終行までLoopしたいのです。 InStrを使用するなど、部分的には分かるのですが、 2つの条件を同時に変えながらLoopさせる方法が 色々試してみましたが、どうしても分かりません。 VBAに詳しい方、同様の処理をしたことがある方、 どうか助けてください!宜しく御願い致します。 [Sheet1] ・・・ 元データ     A   B   C ---------------------------- 1   あ ---------------------------- 2   い   該当 ---------------------------- 3   う       閉鎖 ---------------------------- 4   え   該当 ---------------------------- 5   お ---------------------------- [Sheet2] ・・・ 行削除する範囲とキーワードを指定。     A   B ---------------------------- 1   列   キーワード ---------------------------- 2   A   あ ---------------------------- 3   B   該当 ---------------------------- 4   C   閉鎖 ---------------------------- [求めている結果] 1, 2, 3, 4行目が削除される

  • エクセル関数で文字を置換する方法

    エクセル2000のワークシート関数で、範囲を指定して特定の文字を別の文字に一発で置換できるでしょうか。例えば次の範囲で「○」のセルだけ「1」に変換したいのです。よろしくお願いします。    1列  2列  3列    1行  ○  ○   × 2行  ×  ○   ○ 3行  ×  ○   ×                 ↓    1列  2列  3列    1行  1  1    2行     1   1 3行     1

  • エクセル2007 置換の機能について

    エクセル初心者です。 教えてください。 そもそも置換(Ctrl+H)の機能なんですが、シート上で範囲指定すれば、その範囲指定された所のみの置換になるのでしょうか? それとも、シート上、置換の検索値に該当するものは、すべて置換になってしまうのでしょうか? 初歩的な質問で申し訳ございませんが、よろしくお願いいたします。 過去に置換を範囲指定してすべて置換をしたところ、範囲指定していない所まで置換してしまった苦い経験があったとおもうので・・・。 よろしくお願いいたします。

  • Excel VBA 条件付書式の条件満たすセル取得

    Excel2010のVBAで条件付書式の条件を満たすセルの番地を取得したい 具体的には、 Excel2010のあるシートのあるセル範囲(例えばA1~XFD1048576)に 条件付き書式が付けてあって、 (例えば、数式の条件が満たされたら背景色を赤色にするなど) この条件を満たすセルに指定した書式が付けられて表示されています。 この状態で、VBAで、この条件を満たしたセルの番地を、 順番に取得したいのですが、どのように記述すればよいでしょうか。 【追記】 数式をすべてのセルに入れて検出する方法や セルをひとつずつ数式に当てはめてみていく方法は、 セルが膨大なため容量的・時間的にNGです。 このため、条件付き書式で回避しています。 条件付き書式の判定結果である書式(この場合でしたら背景色が赤色) で判断する必要があります。(書式は背景色が赤色でなくてもいいです) よく分かりませんが、検索の中の書式で指定しても、 この条件付き書式の判定結果の書式はヒットしませんでした。

専門家に質問してみよう