2016-06-21 8 views
0

enter image description hereエクセルVBAだから、私は上記の、そのテーブルを持って行

に基づいて数式を追加し、私は、意思決定の列に数式を追加し、新しい価格を追加するために、Excel VBAを使用します。

あなたが見ることができるように、セルB2式は=IF($A2>50000,"Ignore","Buy")すべきであり、セルB3の式は=IF($A3>50000,"Ignore","Buy")する必要がありますので、B2で式がA2の値を指し、これには、A3とのB3でも同じです。私は空のセルに同じ数式を追加するために、以下のVBAを使用します。はい、空白の決定セルがあり、数式が必要です。私は上から下への自動入力を使用してはいけません。私は(LASTROWがusedrange.rowある)以下使用してみました:

Sheet1.Range("B2:B" & LastRow).SpecialCells(xlCellTypeBlanks). _ 
Formula = "=IF($A2>50000,""Ignore"",""Buy"")" 

そのVBAに問題があっても、細胞内にあるB5それは=IF($A5>50000,""Ignore"",""Buy"")なければならない場合、式は=IF($A2>50000,""Ignore"",""Buy"")ある($A5代わりに$A2であるべきです)。私は間違って何をしていますか?

+0

式から$を取り外します(最後の部分がメモリからである):(動作しませんしません。その –

+0

@RyanWildry申し訳ありませんどちらもうまくいきませんでした – jay

答えて

1

私はシッダースの答えがあなたが探しているものだと信じています。 https://stackoverflow.com/a/25788894/6494460

実際には1ライナーです。 .Autofill

レンジ( "M3:M" & LASTROW)を使用する必要はありませ.Formula = "= G3 & ""、"」& L3"

+0

いいえ私は非空白のものを避けることを恐れています、私は空白のものに式を入力する必要があります – jay

0

をあなたはすべてのセルに数式を貼り付けることはできません、あなたはおそらく非連続的な範囲を取得しますSpecialCells(xlCellTypeBlanks)

Range("B2").Copy 
Range("B2:B" & LastRow).PasteSpecial xlPasteFormulas 
+0

私は空白でないセルだけを残す必要があります。あなたがカスタマイズした答えを使ってその式を置き換える自由が与えられているのですが、私が自動塗りつぶしを使用したり、列全体に貼り付けると、ユーザーがカスタマイズしたものは一掃されます – jay

1

:あなたはセルの数式「B2」を持って考えます。これにより、自動充填プロセスはA1の式では機能しません。しかし、R1C1の式でそれができます。

用途:あなたが現在いるが、常にC olumn 1を修正OW

.Range("B2:B" & lastrow).SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=IF(RC1>50000,""Ignore"",""Buy"")" 

RC1Rを意味します。

R1C1については、https://support.office.com/en-us/article/Overview-of-formulas-7abfda78-eff3-4cc6-b4a7-6350d512d2dc?CorrelationId=2bedf5ef-a3b7-4a82-9b12-6ee86b494ae9&ui=en-US&rs=en-US&ad=US#bmusing_references_in_formulasを参照してください。 The R1C1 reference styleまでスクロールします。

+0

配置する式が '' = IFERROR(VLOOKUP(RC3、データベース!$ A:$ F、3、FALSE)、 "" Missing "") "' – jay

+0

@jay You私の答え – arcadeprecinct

+1

@jay: '.FormulaR1C1 =" = IFERROR(VLOOKUP(RC3、データベース!C1:C6,3、FALSE)、 "Missing" ")" 'を参照してください。 'C1'は' C'列 '1' =' $ A'であり、 'C6'は' C'列 '6' =' $ F'で修正されています。 –

0

編集詳細:R1C1参照スタイル、さらに重要なのはR[1]C[1]表記を使用できます。しかし、さまざまな言語の警告がありますが、記事の最後をご覧ください。例:

R2C4  'row 2, column 4 so it's the cell D2 in A1-notation 
R[2]C[4] 'the cell 2 to the right and 4 down from the current cell (where this reference is located) 
R[2]C4  'the cell 2 to the right from the current cell in column 4 (D) 
R[-2]C[-4] 'you can also give negative arguments, this is the cell 2 to the left and 4 up 
R[2]C  'the same as R[2]C[0] 
RC[4]  'the same as R[0]C[4] 
R2C  'the same as R2C[0] 
RC4  'the same as R[0]C4 
R2   'row 2 
C4   'column 4 (the same as D:D) 

最後の3つの例からわかるように、表記法を混在させることはできません。あなたのケースのために今


あなたはセルBxに次のようにしたい場合は(任意の数でXを置き換える)

"=IF($Ax>50000,""Ignore"",""Buy"")" 

これはR1C1式

"=IF(RC1>50000,""Ignore"",""Buy"")" 

場合、またはだろう左端の列であることがより重要です。

"=IF(RC[-1]>50000,""Ignore"",""Buy"")" 

後者は、オリジナルの式から$を削除するようなものです。

あなたの二式が

"=IFERROR(VLOOKUP(RC3,Database!$A:$F,3,FALSE),""Missing"")" 

だったとアクセルの答え

"=IFERROR(VLOOKUP(RC3,Database!C1:C6,3,FALSE),""Missing"")" 

は今、明確にする必要があります。プロパティを使用したくない、または使用できないが、R1C1スタイルの参照を単一のセルに使用する場合は、INDIRECTワークシート関数を使用できます。 INDIRECT("R1C1",FALSE)R1C1への参照です。 FALSEは、A1表記の代わりにR1C1を使用するように指示します。参照されるセルに数字以外のものがある場合、単純な参照とは少し異なる場合があります。

個人的には、現在の位置を基準にセルを参照する方が簡単ですが、高い列番号を読みやすく、Cells(rowIndex,columnIndex)という構文に近いため、A1表記よりも気に入っています。

最後の1つ:Excelの他の言語バージョンでは、R1C1の名前が異なる可能性があります。これはVBAを使って入力するときに式に影響しませんが、ワークシートから入力する場合は、そのことを念頭に置く必要があります。ドイツ語では、例えばZ1S1です。これにより、異なる言語バージョンのファイルを開くときにも問題が発生する可能性があります。あなたが式にINDIRECT("R1C1",FALSE)を使用した場合、INDIRECTFALSEが翻訳されますが、文字列は、それは

+0

R1C1の代わりにA1を選択した場合、 'RC [-1]'とは何ですか? ExcelでINDIRECTを試してみましたが、 "移動するセルで無効なセル参照が発生しました" – jay

+0

@jay私はポスト全体を再作成しましたが、あなたの新しいエラーについてはわかりません。おそらく、 '間違い 'の代わりに' FormulaR1C1'を使う方が良いでしょう。 – arcadeprecinct

関連する問題