No.2ベストアンサー
- 回答日時:
#1です
一応、例を挙げておきます
Sub test()
Dim r As Range
For Each r In Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp))
If IsError(r.Offset(, 1).Value) Then
r.Offset(, 3) = r.Offset(, 2)
Else
r.Offset(, 3) = r.Offset(, 1)
End If
Next
End Sub
'こちらの方が分かりやすいかも
Sub test1()
Dim i As Long
With ActiveSheet
For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row
If IsError(.Cells(i, "B").Value) Then
.Cells(i, "D").Value = .Cells(i, "C").Value
Else
.Cells(i, "D").Value = .Cells(i, "B").Value
End If
Next
End With
End Sub
testもtest1も結果は同じになると思います
B列の値を検証してIFで処理を分けています。
両方にエラーがある場合や両方ともエラーが無い場合は
C列の値に対してもIFで検証して処理分岐を増やせば良いと思います
ちなみに
文字列のエラーの場合は
If r.Offset(, 1).Value <> "エラー" Then
r.Offset(, 3) = r.Offset(, 1)
Else
r.Offset(, 3) = r.Offset(, 2)
End If
のような感じで処理が出来ると思います。
(<>なのでTrueとFalseの処理は逆)
testは、シートオブジェクトは不明の為、省略(ActiveSheet)していますので対象シート以外を表示して実行すると問題が発生しますので注意してください
対策としてSub test1()のWith ActiveSheetを参考にシートオブジェクトを明示的に記してください。
With Worksheets("Sheet1") こんな感じです
No.4
- 回答日時:
こんにちは
すでに指摘がありますが、例示の場合以外の際にどうしたいのか不明です。
勝手に、以下と解釈しました。
エラー以外1 エラー以外2 → エラー以外1
エラー エラー以外 → エラー以外
エラー以外 エラー → エラー以外
エラー エラー → エラー
上記でも良ければ、
Sub Sample()
Dim rw As Long, s As String
For rw = 2 To Cells(Rows.Count, 1).End(xlUp).Row
s = Cells(rw, 2).Text
If s = "エラー" Then s = Cells(rw, 3).Text
Cells(rw, 4).Value = s
Next rw
End Sub
No.3
- 回答日時:
自分なら、
B列とC列を
D列とE列に複製して、
D列とE列の「エラー」の文字を「空白」に置換、
その後、D列とE列の「空白セル」を選択して「左詰めにセルを削除」します。
……最終行?そんなの考慮する必要ない。
マクロの記録だけで作れますよ。
Columns("B:C").Select
Selection.Copy
ActiveSheet.Paste
Columns("D:D").Select
ActiveSheet.Paste
Selection.Replace What:="エラー", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.SpecialCells(xlCellTypeBlanks).Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
・・・
なお、最後の「D列とE列の「空白セル」を選択…」はD列の空白セルだけを削除すればいいのですが、
D列だけを選択し直すという手間を省略しています。
D列とE列に複製後はD列とE列が選択されて状態なのです。
あと、B列とC列の文字列にエラーがない場合は、D列にB列の、E列にC列の文字が転記されることになります。
エラーだけの場合は何も転記されないことになります。
No.1
- 回答日時:
こんばんは
「エラー」とは、文字列が入っているの?
それとも計算結果のエラーで
#VALUE!や#NAME?・・・などが出力されていると言う事?
あと両方がエラーだったらどうするの?
エラーが無い場合は?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAで特定の場所にあるCSVファイル(複数)から特定場所を抜き出してExcelに転記したいです。 11 2023/05/23 16:29
- Excel(エクセル) Excelの列から検索して該当する行を別シートに転記するVBA 2 2022/12/20 09:35
- Visual Basic(VBA) VBA シート間の転記で、条件の追加コードの書き方について教えて下さい。 13 2023/02/26 09:31
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) エクセル VBAでセル内容を別の列の最下行に転記したい 2 2022/11/29 08:47
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) 基礎的な質問なのですが、Excel VBAで、B列、C列、それぞれの値を照合し、D列へ照合結果(一致 3 2022/04/02 17:14
- Visual Basic(VBA) 【VBA】データを入力後に,同一シート内に履歴として転記するVBAコードを教えていただきたいです。 3 2022/11/16 01:37
- Visual Basic(VBA) 3つの条件を指定してVBAで行を削除したい 条件1:分類1が重複 条件2:分類2が重複 条件3:個数 6 2022/06/24 11:07
- Visual Basic(VBA) VBAで、シート間の転記するコードをFOR~NEXTで教えてください。 9 2023/04/30 20:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
VBAでfunctionを利用しようとし...
-
String""から型'Double'への変...
-
マクロで"#N/A"のエラー行を削...
-
お助けください!VBAのファイル...
-
エクセルVBA 「On Error GoTo...
-
Excel vbaについての質問
-
データベース操作時エラーについて
-
実行時エラー 438 の解決策をお...
-
インポート時のエラー「データ...
-
ACCESSで値を代入できないとは?
-
実行したSQLの結果を返す方法
-
On ErrorでエラーNoが0
-
マクロの「SaveAs」でエラーが...
-
オブジェクト型の変数にフォー...
-
【VB.NET】 パワポ操作を非表示で
-
VB.NETでMessageBoxが表示され...
-
実行時エラー'-2147467259(8000...
-
VB.net 重複チェックがしたいです
-
Filter関数を用いた結果、何も...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
On ErrorでエラーNoが0
-
VBAでfunctionを利用しようとし...
-
マクロで"#N/A"のエラー行を削...
-
VBA データ(特定値)のある最...
-
実行時エラー 438 の解決策をお...
-
お助けください!VBAのファイル...
-
文字列内で括弧を使うには
-
エクセルVBA 「On Error GoTo...
-
【VBA】ワークブックを開く時に...
-
マクロの「SaveAs」でエラーが...
-
ACCESSで値を代入できないとは?
-
実行時エラー'-2147467259(8000...
-
インポート時のエラー「データ...
-
【VB.NET】 パワポ操作を非表示で
-
Filter関数を用いた結果、何も...
-
UBoundに配列がありませんとエ...
-
Excel vbaについての質問
-
メールの件名のセットでエラー...
おすすめ情報