2017-05-18 2 views
0

VBAコピー列とペースト式のみ - ない値 - 次の列へVBAコピーコラム&ペースト式だけ - いない値 - 次の列へ

スプレッドシートの列Bの値と数式のランダムなミックスを持っています。私はVBAを使用してその列を次の列にコピーし、数式(値ではない)を列Cにコピーしたいと思います。次のVBAを使用すると成功しましたが、Bを超えるすべての列を無限大にコピーします最初の列の後にコピーを停止したい)。

Sub Copy_Column_Formulas_NOvalues() 
' 
' Copy_Column_Formulas_NOvalues Macro 
' 
Dim oSheet As Worksheet 
Dim rng As Range 
Dim cel As Range 
Set oSheet = Sheets("Sheet1") 
With oSheet 
    Set rng = .Range(.Range("B1"), .Range("B" & .Rows.Count).End(xlUp)) 
    For Each cel In rng 
     If Left(cel.Formula, 1) = "=" Then 
      Range(cel.Offset(, 1), cel.Offset(, 1).End(xlToRight)).FormulaR1C1 = cel.FormulaR1C1 
      End If 
    Next cel 
End With 
End Sub 
+2

'.End(xlToRight)'を削除します。実際に 'Range(cel.Offset(、1)、cel.Offset(、1).End(xlToRight))'を 'cel.Offset(、1)'に変更します。 –

答えて

0

ニーズに従って変更Sheet3名前をこの簡単なマクロを試してみて、それが動作するかどうか私に知らせて、

Sub Copy_Column_Formulas_NOvalues() 
Dim i As Long, j As Long 
For i = 1 To Sheets("Sheet3").Cells(Rows.Count, "B").End(xlUp).Row 
If Cells(i, 2).HasFormula Then 
    Cells(i, 3) = Cells(i, 2).Formula 
End If 
Next i 
End Sub 

+0

"Sheet3"をシート名に変更しました。 "B"を "W"( "X"にコピー)をコピーして実行したいコラムに変更しました。しばらく時間がかかりましたが、必要に応じてコピーしませんでした。それはまだBをCにコピーしたように見えます。 – ssttuuky

+0

'IF'条件は引き続き列Bの値だけをチェックします。 W列を検索してXに貼り付ける必要があります。 –

+0

"Sheet3"を自分のシート名に変更しました。 "B"を "W"( "X"にコピー)をコピーして実行したいコラムに変更しました。しばらく時間がかかりましたが、必要に応じてコピーしませんでした。それはまだBをCにコピーしたようです。だから私は "2"を列番号 "23"(列W)に変更し、 "3"を "24"(列X)とIT WORKEDに変更しました。 ..少し時間がかかりましたが、私が必要としたことはありますか? – ssttuuky

関連する問題