対象となる、セルは、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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで指定したセルのどれ...
-
対象セル内(複数)が埋まった...
-
エクセル 足して割る
-
貼り付けで複数セルに貼り付けたい
-
Excelでのコメント表示位置
-
【エクセル】IF関数 Aまたは...
-
セルに特定の色が付いていたら...
-
エクセル オートフィルタで絞...
-
セルをクリック⇒そのセルに入力...
-
excelのCOUNTIF関数で、『範囲=...
-
エクセルの一つのセルに複数の...
-
枠に収まらない文字を非表示に...
-
Excelで数式内の文字色を一部だ...
-
【Excel】 セルの色での判断は...
-
エクセルのセルの枠を超えて文...
-
EXCEL VBA セルに既に入...
-
(Excel)数字記入セルの数値の後...
-
【マクロ】ボタンを押すごとに...
-
EXCELで優先順位をつけて表示
-
複数のセルのいずれかに数字が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで指定したセルのどれ...
-
【エクセル】IF関数 Aまたは...
-
貼り付けで複数セルに貼り付けたい
-
対象セル内(複数)が埋まった...
-
Excelで数式内の文字色を一部だ...
-
セルをクリック⇒そのセルに入力...
-
Excelでのコメント表示位置
-
エクセル 足して割る
-
excelのCOUNTIF関数で、『範囲=...
-
EXCEL VBA セルに既に入...
-
エクセル オートフィルタで絞...
-
エクセルのセルの枠を超えて文...
-
(Excel)数字記入セルの数値の後...
-
エクセルの一つのセルに複数の...
-
【Excel】 セルの色での判断は...
-
Excel2003 の『コメント』の編...
-
エクセル “13ヶ月”を“1年1ヶ月...
-
複数のセルのいずれかに数字が...
-
枠に収まらない文字を非表示に...
-
excelの特定のセルの隣のセル指...
おすすめ情報