- ベストアンサー
エクセルVBA(IFの使い方)
エクセルにランダムに並ぶ100以上の学校を4つに分類したいと思います。 For n = 4 To 650 a = Cells(n, 10) If a = "**学校" Then Cells(n, 9) = "AAA" End If 自分なりに以上のように書き込みました。 **学校とかいてあったら、左のセルにAAAと記入 したいと思います。 ”**学校”の部分を100個設定すれば分類は可能ですが、IFを使用して”**学校””△△学校”はAAAと記入など、一度に設定する方法がありましたら、 お教え頂きたいと思います。 勉強中ですので、どのように説明したらよいのか分からず分かりづらいとは思いますが、宜しくご指導の程お願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#3の補足に対する回答です。 「M」,「N」列には、学校名と分類の対応表のような感じで書きます。 {M} {N} {4} **学校 AAA {5} △△学校 AAA {6} □□学校 BBB {7} ◎◎学校 BBB {8} ○○学校 BBB {9} ××学校 CCC 例えば、「J4」が”□□学校”であるとして、 「I4」に次のように入力します。 =VLOOKUP(J4, M$4:N$9 , 2, FALSE) 「J4」の値と完全一致するデータを「M4」~「M9」の範囲から探して、そのデータの「M4」~「N9」の範囲の2番目の列(N列)の値を表示する、という意味です。 この場合、”□□学校”に一致するのは「M6」なので、「N6」の”BBB”が「I4」に表示されます。 実際には100件以上あるので、「M4」~「N104」くらいの範囲になると思いますので、 =VLOOKUP(J4, M$4:N$104 , 2, FALSE) の様に探す先の範囲を変更すればokです。 $は絶対参照と言って、コピーされたときに参照先のセル位置が変更されません。 「I4」の =VLOOKUP(J4, M$4:N$9 , 2, FALSE) を「I5」にコピーすると、 =VLOOKUP(J5, M$4:N$9 , 2, FALSE) となります。 コピー位置にあわせて、「J4」は「J5」に変更されますが、「M$4:N$9」はそのままです。 この場合も、同じように「J5」の値と完全一致するデータを探して表示します。 「J5」の値が”△△学校”とすると、一致する「M5」のデータの「N5」の値である”AAA”が「I5」に表示されます。
その他の回答 (3)
- rotesKomet
- ベストアンサー率31% (83/265)
>VBAでなくてできる方法がありましたら、 >よければ教えて頂けますでしょうか。 質問文の内容だけでしたら、次の方法で可能と思います。 学校名がJ列、分類(AAA,BBBなど)の結果をI列に表示するとします。 適当な空いているセルに次のように学校名とそれに対する分類のデータを作成します。 **学校 AAA △△学校 AAA □□学校 BBB ◎◎学校 BBB ○○学校 BBB ××学校 CCC ここでは、M列に学校名、N列に分類を2行目から入力しているとします(**学校がM2、CCCがN7の状態)。 J4の学校データに対し、I4に次のように入力します。 =VLOOKUP(J4, M$1:N$7 , 2, FALSE) I4に”AAA”が表示されます。 I4をI5以下のセルにコピーします。 I5以下にも該当の分類が表示されます。
補足
たびたび申し訳ありません。。 J M N 4 **学校 **学校 AAA 5 @@学校 @@学校 AAA 6 ++学校 ××学校 BBB 7 △△学校 ++学校 CCC 8 ??学校 という事でしょうか。 Iに書きたいので空欄 Jに学校名 Mに学校の一覧 NにMの学校の分類としました。 =VLOOKUP(J4, M$1:N$7 , 2, FALSE) をアレンジしてみましたができませんでした・・・ 「$」の意味も分かりません。。。
- rotesKomet
- ベストアンサー率31% (83/265)
VBAを使わなくてもできそうですが、 プログラムで行いたいのなら、SELECT CASEを使用すれば簡単です。 For n = 4 To 650 a = Cells(n, 10) Select Case a Case "**学校", "△△学校" Cells(n, 9) = "AAA" Case "□□学校", "○○学校", "◎◎学校" Cells(n, 9) = "BBB" Case "××学校" Cells(n, 9) = "CCC" End Select Next n
補足
ありがとうございました。 気持ちよいくらいにうまくできました!! 急ぎでしたので大変助かりました。 VBAでなくてできる方法がありましたら、 よければ教えて頂けますでしょうか。
- komkoma
- ベストアンサー率33% (7/21)
If a = "**学校" Or a = "△△学校" Then Cells(n, 9) = "AAA" End If のように、「Or」で繋げたらどうでしょうか?
お礼
ありがとうございます!!! いくつか試してみましたができませんのでこちらへ書かせて頂いたのですが・・・ a=をいれなくてはならなかったのですね。 大変勉強になりました。うまくできました。 ありがとうございます。
お礼
ありがとうございました。 大変勉強になりました。 さっそくやってみましたが、できました!!!! エクセルの機能を見直してみたいと思います!!