
わかりました。私は大きなスプレッドシートを持っています (各セルの色を個別に、または手動で設定する必要はありません)。そして、他のセルをコピーするセルがたくさんあります。たとえば、セル N9、N 3、N80、N117 などがあり、=IF(N$931="","",N$931) なので、N931 に何かがあれば N9 などにコピーされ、なければ空白になります。N931 に設定した背景色を、自動的に N9 と同じ背景色にする機能が欲しいです。どうすればいいでしょうか?
乾杯!ジョン
答え1
条件付き書式やその他のフロントエンド技術を使用して、別のセルの色に基づいてセルの色を設定することはできないため、VBA を使用する必要があります。
色付きのデータが N 行にあり、行 500 から始まると仮定します。また、コピー先の最初のセルが N1 であり、のように N500 を参照して=if(N500="", "", N500)
いると仮定します。さらに、その数式を N499 までコピーすると仮定すると、VBA は次のようになります。
Sub copyValuesAndFormats()
Dim intRow As Integer
Dim rngCopy As Range
Dim rngPaste As Range
'Loop from Rows 1 through 499
For intRow = 1 To 499
'Set the copy and paste range
'CHANGE THE SHEET TO MATCH YOURS
Set rngCopy = Sheet3.Range("N" & intRow + 499)
Set rngPaste = Sheet3.Range("N" & intRow)
'Test to see if rows 500+ have a value
If rngCopy.Value <> "" Then
'Since it has a value, copy the value and color
rngPaste.Value = rngCopy.Value
rngPaste.Interior.Color = rngCopy.Interior.Color
'If you wish to copy the color of the font as well, uncomment the next line
'rngPaste.Font.Color = rngCopy.Font.Color
End If
Next intRow
End sub
これを使用すると、N1:N499 に数式は必要ありません。いずれにしても、このコードによって数式が吹き飛ばされます。