I got help last week構文と範囲が正しく、私はちょうどそれを完了するためにvlookup
を行うことができると思ったが、明らかに私は間違っていた。これを達成する方法を研究しようとすると、様々な例が見つかるようですが、私のコードに翻訳する背景はありません。VBAに値として数式結果を挿入する方法
マクロが実行され、がほぼとなります。しかし、配列を挿入することに加えて、私の 'sourcerng'に空のセルがあるときに値を必要とする3つの他のセルがあります。
これは、値を(値は私のワークシートに既にある、私はこれらの空白のセルにそれらを取得する必要があります)必要があるセルのためのロジックです。私はこれらのためにIIFの声明をしようとしたが、私はまだ何をやっているのか分からない。それが最善の方法だろうか?別のIF THENステートメントでなければなりませんか?
rngBE- 列Z = 0は、次にカラムの行に対応するから値をコピーする場合O.は、そうでない場合、カラムZから値をコピー
rngBG - 列AAは "不明" は、行に対応するから値をコピー= IFそれ以外の場合は列AAから値をコピーします。
rngBK - IF列AB = "不明"列Nの対応する行の値をコピーします。それ以外の場合は列ABの値をコピーします。
Sub AutomateAllTheThings6()
Dim arr3() As String
Dim arr11() As String
'Dim resBE As String
Dim rng3 As Range
Dim rng11 As Range
Dim rngBE As Range
Dim rngBG As Range
Dim rngBK As Range
Dim sourcerng As Range
'Dim firstRow As Long
Dim lastRow As Long
'Dim i As Long
Call OptimizeCode_Begin
'firstRow = 2
lastRow = ActiveSheet.Range("D1").End(xlDown).Row
Set rng3 = ActiveSheet.Range("BH2:BJ" & lastRow)
Set rng11 = ActiveSheet.Range("BL2:BV" & lastRow)
Set rngBE = ActiveSheet.Range("BE2:BE" & lastRow)
Set rngBG = ActiveSheet.Range("BG2:BG" & lastRow)
Set rngBK = ActiveSheet.Range("BK2:BK" & lastRow)
Set sourcerng = ActiveSheet.Range("BE2:BE" & lastRow)
arr3() = Split("UNKNOWN,UNKNOWN,UNKNOWN", ",")
arr11() = Split("UNKNOWN,UNKNOWN,UNKNOWN,UNKNOWN,UNKNOWN,UNKNOWN,00/00/0000, _
00/00/0000,00/00/0000,00/00/0000,NEEDS REVIEW", ",")
For Each cell In sourcerng
If IsEmpty(cell) Then
Intersect(rng3, ActiveSheet.Rows(cell.Row)).Value = arr3
Intersect(rng11, ActiveSheet.Rows(cell.Row)).Value = arr11
'***PLS HELP***
Intersect(rngBE, ActiveSheet.Rows(cell.Row)).Value = "WEEEEE"
Intersect(rngBG, ActiveSheet.Rows(cell.Row)).Value = "WOOOOO"
Intersect(rngBK, ActiveSheet.Rows(cell.Row)).Value = "WAAAAA"
End If
Next
Range("BR2:BU2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.NumberFormat = "mm/dd/yyyy"
Columns("BF:BF").Select
Selection.Delete Shift:=xlToLeft
Call OptimizeCode_End
End Sub
'*********TESTING***********
'resBE = IIf(Cells(13,Z).Value = 0, Cells(13,BE).Value = Cells(13,Z), Cells(13,BE).Value = Cells(13,O))
'***************************************
'For i = firstRow To lastRow
' valZ = Range("Z" & i)
' valOh = Range("O" & i)
'
' If valZ = 0 Then
' rngBE.Value = valOh
' Else rngBE.Value = valZ
' End If
範囲BEには、incell formulaがありますか? = if(Z2 = 0、O2、Z2) – mooseman
私は実際にこれを「自動化」しています。これは他の「技術的でない」人々が最終的にこれを実行するためです。私は私が困惑したときにそれを最初に試しましたが、空白のセルを持つ行がランダムに散在するので、式を書き込むことができません。私が使用しているテストデータには4kの行がありますが、これが適用されるのは300ishの行だけです。 – pnwAnalyst
VBAの場合、range()。formula = "= if(Z2 = 0、O2、Z2)"を使用して、正しい行番号を入れることができます。または、range()。value =をif(Z2 = 0、O2、Z2)ロジックの結果にすることができます。 – mooseman