対象となる、セルは、Sheet1のB1:B1000とSheet2のB1:B255です。
このセルの値を1千倍(*1000)にしたいのです。
計算をおこなわない条件が四つあります。それを下に書きます。
1 未入力("")のセル。
2 文字列(計算してエラーの出る)のセル。
3 数式の書いてあるセル。
4 セルに色のついている(セルA1と塗りつぶしの色が違う)セル。
これは、ある会社の株価が、1千倍になる(株数は千分の一になる)ので、その過去のデータを変えたいのです。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
こんにちは。
maruru01です。以下で出来ます。
対象となるセル範囲は適当に変えて下さい。
Sub Macro()
Dim i As Long
Dim A1Color As Long
'A1の色を取得する
A1Color = Range("A1").Interior.ColorIndex
For i = 1 To 1000
If IsNumeric(Cells(i, 2).FormulaR1C1) Then
If Cells(i, 2).Interior.ColorIndex = A1Color Then
Cells(i, 2).Value = Cells(i, 2).Value * 1000
End If
End If
Next i
End Sub
(ちょっと解説)
FormulaR1C1プロパティを参照すると、セルに数式が入っていればそれを取得し("=RC[-1]*100"とか)、数式が入っていない場合は、セルの値をそのまま取得する。
従って、数値認識出来るかどうかを確認するIsNumeric関数に入れると、数式が入っている場合はFalseを返す。(ちなみに、未入力("")の場合もFalseを返す。)
で、2つ目のIf文で色を判定している。
No.4
- 回答日時:
>If IsEmpty(c) = True Then x = x & 3 これは式の意味がわかりませんでした。
変数が初期化されたかどうかを調べ、結果をブール値で返します。なんのこっちゃ!!
--->セルcがEmptyであればTrueになるわけですから、その時エラーコードを累積している変数xに、この場合のエラーコード3を加えているのです。
>変数が初期化されたかどうかを調べ、結果をブール値で返します。なんのこっちゃ
--->「セルが初期化されたかどうか」というよりも、「何も入力されてなければ」を聞いています。=""と同じでダブって入るかもしれません。そのほかDeleteキーで消した時も、この状態(Empty)になると思います。
>If c.Interior.ColorIndex <> -4142 Then x = x & 5 の「-4142」は、"塗りつぶし無し"だと思いますが
--->普通の色なしセルでMsgBox range("a1").Interior.ColorIndexが-4142になるので
使っただけです。
No.3
- 回答日時:
Sub test01()
Dim c As Range
For i = 1 To 9
x = ""
Set c = Cells(i, 1)
If c = "" Then x = x & 1
If c.HasFormula Then x = x & 2
If IsEmpty(c) = True Then x = x & 3
If IsNumeric(c) = False Then x = x & 4
If c.Interior.ColorIndex <> -4142 Then x = x & 5
c.Offset(0, 1) = x
If x = "" Then
c.Offset(0, 2) = 1000 * (c.Value)
End If
Next i
End Sub
(1)本番ではFor i = 1 To 9の9は最下行の行番号を入れてください。
d=InputBox("最下行?) For i = 1 To dとしても良い。
(2)テストの納得のために、B列にエラーコードを出しています。1と3は同じかもしれない。
(3)1000倍の値はC列に出していますが、
c.Offset(0, 2) の2を適当に変えてください。
(4)色はセルの背景色を対象とし、未設定のコード
以外を聞いています。
(4)テスト的に対象データの入っている列をSheet2のA列にコピーし、全データでテストし、エラーコードを見て、洩れ・余分があれば補足してください。再考します。
(テストデータ)
135 (セル地ブルー)
a4 (文字入力)
1212000
235 (セル地赤)
13 (入力なし)
1352 (式=B1)
13 (入力なし)
1212000 (字体黄色)
13441344000
回答、ありがとうございます。
If c.Interior.ColorIndex <> -4142 Then x = x & 5 の「-4142」は、"塗りつぶし無し"だと思いますが、勉強になります。
If IsEmpty(c) = True Then x = x & 3 これは式の意味がわかりませんでした。
変数が初期化されたかどうかを調べ、結果をブール値で返します。なんのこっちゃ!!
他も色々勉強になりました。
動作は、うまくいきますが、今回は、NO1の方のものを使いたいと思います。
No.2
- 回答日時:
初めまして。
#1さんのご回答でお解りになったのでしたらよろしいのですが、もしお解りにならない時には、コピー&ペーストするだけで貴方様の思い通りの動作をするサンプルマクロを汲んでみたいと思います。ご希望の節は、次の内容を教えて下さい。・千倍するデータが入力されているセル番地
・千倍した答えを表示させるセル番地
お手数をおかけいたしますが、よろしくお願いいたします。
質問を見てもらって、ありがとうございます。
今回は、NO1の方の回答で解決しました。
また、何か有りましたら、よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの関数式を教えてください。 2 2022/11/29 21:09
- Excel(エクセル) エクセルでIF関数中にIFERROR関数を使いたいのですが???? 5 2022/04/08 13:24
- Excel(エクセル) エクセルVBAでセルに表示されているとおりの数値を取得したい(時間の計算結果) 1 2022/03/30 17:52
- Excel(エクセル) エクセルで教えて下さい。 2 2022/05/18 13:00
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Excel(エクセル) 【再度】Excelの関数について教えてください。 4 2023/07/28 13:06
- Excel(エクセル) B列に、A列の数字が偶数の場合は1減算した数字、奇数の場合はそのまま数字を自動表示したい 4 2022/04/16 12:01
- Excel(エクセル) ExcelにてA1セルに1、B1セルに月と入力した際に、A列に日付、B列に曜日が入力される様になる為 1 2023/03/02 06:47
- Excel(エクセル) Excelの関数について教えてください。 5 2023/07/28 11:27
- Excel(エクセル) エクセルの書式設定の表示形式で設定した文字を文字列としてコピーしたい 1 2022/12/21 10:41
このQ&Aを見た人はこんなQ&Aも見ています
-
10代と話して驚いたこと
先日10代の知り合いと話した際、フロッピーディスクの実物を見たことがない、と言われて驚きました。今後もこういうことが増えてくるのかと思うと不思議な気持ちです。
-
一番最初にネットにつないだのはいつ?
ネットユーザーもいろんな世代が生まれていますが、始めて接続したときのワクワクは同じはず! 人生で一番最初にネットに接続したときの思い出を教えて下さい。
-
2024年に成し遂げたこと
今年も残すところわずか。 皆さんが今年達成したことを教えていただきたいです。 どんな小さなものでも構いません。
-
何歳が一番楽しかった?
自分の人生を振り返ったとき、何歳のころが一番楽しかったですか? 子供の頃でしょうか、それとも大人になってからでしょうか。
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
セルに数字を入れると×1000になるようにしたい。
Excel(エクセル)
-
エクセルVBAで範囲の値を一度に任意倍に変更
Excel(エクセル)
-
「×1000」と「÷1000」のマクロを作りたい
Access(アクセス)
-
-
4
Excel2013 表示形式で「1,000倍」の数字を表示させたい
Excel(エクセル)
-
5
エクセルで数字をセルに入れて倍数にしたい
Excel(エクセル)
-
6
エクセルで入力した数字を倍にするには?
Excel(エクセル)
-
7
targetをA列のセルに限定するには?
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「黒歴史」教えて下さい
- ・2024年においていきたいもの
- ・我が家のお雑煮スタイル、教えて下さい
- ・店員も客も斜め上を行くデパートの福袋
- ・食べられるかと思ったけど…ダメでした
- ・【大喜利】【投稿~12/28】こんなおせち料理は嫌だ
- ・前回の年越しの瞬間、何してた?
- ・【お題】マッチョ習字
- ・モテ期を経験した方いらっしゃいますか?
- ・一番最初にネットにつないだのはいつ?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
枠に収まらない文字を非表示に...
-
貼り付けで複数セルに貼り付けたい
-
excelの特定のセルの隣のセル指...
-
エクセルで指定したセルのどれ...
-
数式を残したまま、別のセルに...
-
セルをクリック⇒そのセルに入力...
-
Excel 例A(1+9) のように番地の...
-
EXCEL VBA セルに既に入...
-
EXCELのセルの中の半角カンマの...
-
【Excel】 セルの色での判断は...
-
エクセルの書式設定の表示形式...
-
Excelでのコメント表示位置
-
文字列として"(ダブルコーテー...
-
エクセル オートフィルタで絞...
-
Excelで数式内の文字色を一部だ...
-
エクセルのセルの枠を超えて文...
-
セルの高さ(行高)を求めるには?
-
(Excel)数字記入セルの数値の後...
-
ハイパーリンクの参照セルのズ...
-
Excelで、「特定のセル」に入力...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
貼り付けで複数セルに貼り付けたい
-
【エクセル】IF関数 Aまたは...
-
Excelで数式内の文字色を一部だ...
-
エクセルで指定したセルのどれ...
-
セルをクリック⇒そのセルに入力...
-
エクセルの一つのセルに複数の...
-
(Excel)数字記入セルの数値の後...
-
Excel 例A(1+9) のように番地の...
-
Excelでのコメント表示位置
-
枠に収まらない文字を非表示に...
-
エクセル オートフィルタで絞...
-
対象セル内(複数)が埋まった...
-
【Excel】 セルの色での判断は...
-
エクセルの書式設定の表示形式...
-
エクセル 足して割る
-
EXCEL VBA セルに既に入...
-
excelの特定のセルの隣のセル指...
-
エクセルのセルの枠を超えて文...
-
エクセルで住所と建物名を分け...
-
数式を残したまま、別のセルに...
おすすめ情報