エクセルVBAについて質問です。以下のようなマクロを作ってください。

①A列○△×のいずれかの文字列があります。
②A列において、
○ならB列に「丸」
△ならB列に「三角」
×ならB列に「ばつ」とそれぞれ入力します。
 ただしこの作業はA列が空白となった時点で終了。
③上記の作業をブック全体(全てのシート)で作業を行う。
以下のページに図を作っておきました。参考にしてください。
http://hatena88.web.fc2.com/newpage2.shtml
よろしくお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/09/13 04:12:20
  • 終了:2006/09/13 11:05:25

回答(2件)

id:zuguimo No.1

zuguimo回答回数19ベストアンサー獲得回数32006/09/13 05:48:52

ポイント50pt

まだ、初心者ですが勉強に作ってみました。

こちらの環境では動きましたので、一応答えます。

×(バツ)とX(エックス)間違えると動かないです。

ダミーのURLです。http://q.hatena.ne.jp/1158088340


Sub 変換()

'

' Macro1 Macro

'

Dim s, d As Integer

シート数 = Worksheets.Count

For s = 1 To シート数

Sheets(s).Select

データ数 = Application.WorksheetFunction.CountA(Range("A:A"))

For d = 1 To データ数

Select Case Range("A" & d).Value

Case Is = "○"

Range("b" & d).Value = "丸"

Case Is = "△"

Range("b" & d).Value = "三角"

Case Is = "×"

Range("b" & d).Value = "ばつ"

End Select

Next d

Next s

End Sub

id:taroemon

ご回答ありがとうございます。

さっそく試してみます。

2006/09/13 09:22:11
id:taknt No.2

きゃづみぃ回答回数13539ベストアンサー獲得回数11982006/09/13 07:16:14

ポイント50pt

これぐらいでしたら ワークシート関数だけでもできますね。

マクロだと以下のとおりでいいでしょう。


Sub Macro1()

'

' Macro1 Macro

'

' Keyboard Shortcut: Ctrl+q

'

For a = 1 To 65536

If Range("A" & a) = "" Then Exit For

If Range("A" & a) = "○" Then Range("B" & a) = "丸"

If Range("A" & a) = "△" Then Range("B" & a) = "三角"

If Range("A" & a) = "×" Then Range("B" & a) = "ばつ"

Next a

End Sub



http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_070_10.html

id:taroemon

ご回答ありがとうございます。

ああ関数でできるんですね。その方が良かったかな。ちょっと質問の仕方間違えましたね。

2006/09/13 09:54:56
  • id:taknt
    あ、すべてのシートには 一括では 対応ぬけてました。

    それぞれのシートで Ctrl+q とやればいいです。

    ちなみに 関数でやるというのは
    B列に
    =IF(A1="○","丸","") & IF(A1="△","三角","") & IF(A1="×","ばつ","")

    というのを 入れていくので そこも必要な個所全部に入れないとダメです。
  • id:taknt
    zuguimoさんのは、とびとび で ○とか×があった場合、
    最初の空白で終了しないね。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません