また、質問させていただきます。下のコードは見よう見真似で作りましたが、問題が出まして、質問に参りました。タイトルのようにIF関数に問題があるのかわわかりませんが・・・
下のコードは、[追加]シートの一部の範囲のデータを[シート]シートのデータの一番下にコピーして、その状態で、AH列に見出しを設けて、I列の漢字で書いてある指定の色をカタカナ表記にするものですが、問題は、[追加]シートから転記される前の、もともと[シート]にあるデータは、白→ホワイトのように変わっているのですが、[追加]シートの転記分は何も変化がありません。何がひっかかっているのか考えてもみつけ
られまんでした。ご教授願いたいとおもいます。
With Worksheets("追加").Range("AA1").CurrentRegion
.Offset(1, 2).Resize(.Rows.Count - 1, .Columns.Count - 2).Copy
End With
Worksheets("追加").Range("C65536").End(xlUp).Offset(1). _
PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Worksheets("シート").Range("AH1").Value = "カラー"
With Worksheets("シート").Range("AH2").Resize(r - 1, 1)
.FormulaR1C1 = _
"=IF(RC[-25]=""白"",""ホワイト""," & _
"IF(RC[-25]=""赤"",""レッド""," & _
"IF(RC[-25]=""黒"",""ブラック""," & _
"IF(RC[-25]=""黄色"",""イエロー"",""カラー""))))"
End With
Application.CutCopyMode = False
No.4ベストアンサー
- 回答日時:
こんにちは。
文章とマクロは合っていませんね。
[追加]シートの一部の範囲のデータを[シート]シートのデータの一番下にコピーして、
↓
× Worksheets("追加").Range("C65536").End(xlUp).Offset(1).
Worksheets("シート").Range("C65536").End(xlUp).Offset(1).
>その状態で、AH列に見出しを設けて、
With Worksheets("シート").Range("AH2").Resize(r - 1, 1)
何を基準にして、r を決めるか? たとえば、C列だとしたら、
r = Worksheets("シート").Range("C65536").End(xlUp).Row
No.3
- 回答日時:
>[追加]シートの一部の範囲のデータを[シート]シートのデータの一番下にコピーして
→ 追加シートにPasteしているように思います。
>[追加]シートの転記分は何も変化がありません
→ 質問文のVBAでは、追加シートには何の関数式も格納していないようですが、元々関数が入力されているのですか?
質問文のVBAどおりなら何も変わらないと思います
No.2
- 回答日時:
こんにちは。
今回のように条件が多くなる場合は、
標準モジュールにユーザー定義関数を作成して、
セルから呼び出して使うほうが修正しやすく便利だと思いますよ。
Public Sub ps_ChangeValue(sValue As String)
Dim sRes As String
sRes = "カラー"
Select Case sValue
Case "白"
sRes = "ホワイト"
Case "赤"
sRes = "レッド"
Case "黒"
sRes = "ブラック"
Case "黄色"
sRes = "イエロー"
End Select
ps_ChangeValue = sRes
End Sub
Worksheets("シート").Range("AH2").Resize(r - 1, 1)
.FormulaR1C1 = "=ps_ChangeValue(RC[-25])"
動作確認していませんし、
エラーコードなしですが、
ご参考になれば幸いです。
No.1
- 回答日時:
ざっと眺めただけで理解していませんが。
"=IF(RC[-25]=""白"",""ホワイト""," & _
"IF(RC[-25]=""赤"",""レッド""," & _
"IF(RC[-25]=""黒"",""ブラック""," & _
"IF(RC[-25]=""黄色"",""イエロー"",""カラー""))))"
これをセルの中の値として入れるんですよね?
で、あれば、IF文がおかしいかもしれないので、
セルに直接書いてデバッグしてみてはいかがでしょうか?
また、これ、VBAじゃないとできませんか?
セルの関数だけでできる気がします。
できなくても必要なところだけVBAにして、
VBAでセルの関数を表示するのをやめた方が無難かと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Excel(エクセル) vba 転記するときの最終行について 2 2022/09/03 09:31
- Excel(エクセル) エクセル VBAでシートのコピーを作りたい 1 2023/05/18 07:42
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- Excel(エクセル) VBAのoffsetの動き方について教えてください 3 2022/11/25 23:36
- Visual Basic(VBA) エクセル VBA 処理スピードを上げたいのですが。 6 2023/03/31 20:52
- Visual Basic(VBA) 2つのシートの任意のセルの番号が一致したら、一致した行をコピーする VBA 2 2023/06/19 20:48
- Visual Basic(VBA) 形式を選択して貼り付け 以下のコードで「元」シートと「先」シートのA列に同じ値があったら指定範囲をコ 5 2022/11/11 07:30
- Visual Basic(VBA) 抽出結果を別シートに貼り付ける 2 2022/07/09 22:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで同じシートのコピーを一...
-
EXCEL:同じセルへどんどん足し...
-
エクセルの複数シートの保護を...
-
エクセルで前のシートを連続参...
-
別シート参照のセルをシート毎...
-
EXCELで1ヶ月分の連続した日付...
-
VBAでシートコピー後、シート名...
-
前の(左隣の)シートを連続参...
-
エクセルVBAでパスの¥マークに...
-
【Excel関数】値が合致するセル...
-
Excelの複数ファイルの複数行を...
-
excelでシート毎の最終更新日を...
-
VBAでシート1のデータを他シー...
-
EXCELで同一フォーマットのシー...
-
条件式書式に入力する式
-
別シートの最終行に貼り付けす...
-
エクセルシート毎の権限について
-
EXCELで参照シート名含む計算式...
-
EXCEL VBAで別のシー...
-
VBA セルの値と同じ名前のシー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで同じシートのコピーを一...
-
エクセルの複数シートの保護を...
-
エクセルVBAでパスの¥マークに...
-
前の(左隣の)シートを連続参...
-
Excelで金銭出納帳。繰越残高を...
-
EXCEL:同じセルへどんどん足し...
-
EXCELで1ヶ月分の連続した日付...
-
シートの保護のあとセルの列、...
-
別シート参照のセルをシート毎...
-
エクセルでファイルを開いたと...
-
EXCELで同一フォーマットのシー...
-
エクセルで前のシートを連続参...
-
エクセルで前シートを参照して...
-
VBAでシートコピー後、シート名...
-
Accessのスプレッドシートエク...
-
エクセルのシート名をリスト化...
-
複数シートの特定の位置に連番...
-
Excelのシートを、まとめて表示...
-
エクセル 計算式も入っていない...
-
スプレッドシートの関数VLOOKUP...
おすすめ情報