• ベストアンサー

Excelの条件付き書式のコピー

Excel2007で条件付き書式でセルの色と罫線を設定しているセルがあります。 このセルをコピーして別シートに貼りつける際に、条件付き書式に合致して設定されている書式を条件なしで、そのままコピー出来ないでしょうか。 拙い説明で分かりにくいですが、イメージとしては計算式で数値が表示されているセルがある時に、計算式がいらない場合は、セルをコピーして値の貼付を行って数値だけを持っていくのと同じような事が条件付き書式でも出来ないか、と言う事です。

質問者が選んだベストアンサー

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.3

マクロの場合、標準モジュールに下記コードを置きます。 '------------------------------------------------- '標準Module '参照設定:【Microsoft Forms 2.0 Object Library】 Option Explicit Private Declare Function CloseClipboard Lib "user32.dll" () As Long Private Declare Function OpenClipboard Lib "user32.dll" ( _                     ByVal hwnd As Long) As Long Private Declare Function GetClipboardData Lib "user32.dll" ( _                      ByVal wFormat As Long) As Long Private Declare Function RegisterClipboardFormatA Lib "user32.dll" ( _                          ByVal lpszFormat As String) As Long Private Declare Function GlobalSize Lib "kernel32.dll" ( _                   ByVal hMem As Long) As Long Private Declare Function GlobalLock Lib "kernel32.dll" ( _                   ByVal hMem As Long) As Long Private Declare Function GlobalUnlock Lib "kernel32.dll" ( _                    ByVal hMem As Long) As Long Private Declare Sub RtlMoveMemory Lib "kernel32.dll" ( _                  ByVal hpvDest As Any, _                  ByVal hpvSource As Any, _                  ByVal cbCopy As Long) '------------------------------------------------- Sub try()   Dim buf As String   Dim mem As Long   Dim sz As Long   Dim lk As Long   On Error Resume Next   If TypeName(Selection) <> "Range" Then Exit Sub   Selection.Copy   OpenClipboard 0&   mem = GetClipboardData(RegisterClipboardFormatA("HTML Format"))   CloseClipboard   If mem = 0 Then Exit Sub   sz = GlobalSize(mem)   lk = GlobalLock(mem)   buf = String(sz + 1, vbNullChar)   RtlMoveMemory buf, lk, sz   GlobalUnlock mem   buf = Left$(buf, InStr(buf, vbNullChar) - 1)   buf = Replace$(buf, "mso-ignore:style;", "") '■2007,2010では無くてもOK   With New DataObject     .Clear     .SetText buf     .PutInClipboard   End With   MsgBox "書式を固定しました。" End Sub '------------------------------------------------- VBEメニュー[ツール]-[参照設定]の「参照可能なライブラリファイル」に Microsoft Forms 2.0 Object Library をチェックして追加します。 コピーしたいセル範囲を選択して、Sub try を実行。 書式固定でコピーされます。(値、計算式も) その後、貼り付け先を選択して[Ctrl]+[v]で貼り付けてください。 マクロが難解な為、この方法で運用したくない場合は 手作業で[Webページとして発行]機能を使います。 ・目的のシートを単一ファイルWebページとして保存。 ・発行したhtmファイルを開いてデータ範囲をコピー。 ・目的シートに書式のみ貼り付け。 ..のような感じです。

intosta
質問者

お礼

[Webページとして発行]機能を使うなんて発想が、私には全くありませんでした。 ありがとうございました。助かりました。

その他の回答 (3)

  • end-u
  • ベストアンサー率79% (496/625)
回答No.4

一応、Win32APIを使わない簡易版もあります。 '----------------------------------------------------------- Option Explicit Sub try2() '条件付き書式があるシートをActiveにして実行。   Dim ws As Worksheet   Dim tmp As String   Dim buf As String   Dim n  As Long     Application.ScreenUpdating = False   '作業用mhtファイル名を設定。 _    同名既存ファイルがあれば上書きするので注意。   tmp = Application.DefaultFilePath & "\temp.mht"   Set ws = ActiveSheet   ActiveWorkbook.PublishObjects.Add( _       xlSourceSheet, tmp, _       ws.Name, "", _       xlHtmlStatic).Publish True     '作業用mhtファイルOpen。   n = FreeFile   Open tmp For Input As #n   buf = StrConv(InputB(LOF(n), #n), vbUnicode)   Close #n   '---置換作業---   '途中改行があれば削除。   buf = Replace$(buf, "=" & vbCrLf, "")   'とにかく"ignore:"を消せばいいかな。   buf = Replace$(buf, "mso-ignore:", "")   '--------------     '作業ファイル書き込み直してOpen。   n = FreeFile   Open tmp For Output As #n   Print #n, buf   Close #n     Workbooks.Open tmp   Set ws = Nothing   Application.ScreenUpdating = True End Sub '----------------------------------------------------------- [Webページとして発行]した後に開き直すだけですけど。 (2003以前のバージョンは書式固定の為に置換してます) マクロ実行後、mhtファイルが開きますから必要なセル範囲をコピーしてください。 処理済んだらmhtファイルは手動で削除してください。 (カレントフォルダに保存されています)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

出来る出来ない?だけ判ればよいのでしたら。 条件付き書式の「結果として現れた書式」は,コピーすることも取り出すことも出来ません。マクロを使っても出来ません。 現実的な対処としては,コピー先でも正しい条件付き書式となるように条件付き書式の細工をよく考えて工夫し,条件付き書式ごとコピーして貼り付け先でも同じ結果が現れるように仕込んでおきます。 #まぁ,一応できるといえば 元のセルをコピー 貼り付け先でホームタブの「貼り付け▼」から図を右に開いてリンク貼り付け といった手で見せることは可能と言えば可能です。 どんな条件付き書式を設定していて,コピーすると上手く行かないのか不明ですが,もしかすると「数式」を使わない条件付き書式にしておくことで,対応が簡単になることも考えられます。逆に条件付き書式を数式でゴリゴリ設定しないとやっぱりダメかも?知れません。 具体的にどんなことをやっているのか,アナタのお手許のエクセルで実際のデータの例と実際の条件付き書式の具体的な設定の様子を挙げて,何か工夫の余地があるか,「新しいご相談」として改めて投稿して皆さんのヘルプを仰いでみてはいかがでしょう。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

>条件付き書式に合致して設定されている書式を条件なしで、そのままコピー出来ないでしょうか。  ⇒条件で成立している書式につき、条件なしでは出来ません。

関連するQ&A

  • Excelでの条件つき書式の張り付けについて

    Excel2007にて、1シート全体に、条件つき書式の設定をしました。 (シート内で値がAのときはセルの背景を緑にする、などの条件) シート内のセルをコピーし、同シート内に張り付けたところ、 張り付け部分のみ範囲指定された、 セル全体に設定した内容と同じ条件が作成されてしまい、 張り付けをすればするほど条件が増えて、 ファイル容量がどんどん大きくなってしまいます。 条件は増やさず、コピーしたセルの内容だけを張り付けることは できないのでしょうか。 上手く設定できず恐縮ですが、どうぞ知恵をお貸しください。

  • 条件付き書式をコピーしたい エクセル2007

    A1に条件付き書式を設定しています。 =LENB(A1)>200 これをA2や,それ以外にもコピーしたいのですが,どうすればいいのでしょうか? 書式のコピーを使うと罫線やセルの色まで変わってしまうので,使えません。

  • エクセル2010条件付き書式

    いつもお世話になっております。 質問です、宜しくお願いします。 条件付き書式についてですが、2010にしてから上手く出来ません。 具体的には、A列に入力した数値とB列に入力した数値が違うときに赤色で塗りつぶすというものです。 エクセル2007では、簡単に出来たのですが2010ではうまく出来ません。 条件付き書式→新しいルール→指定の値を含むセルだけを書式設定→セルの値 →次の値に等しくない→B1を選択 書式で塗りつぶし「赤」を選択。 これでA1とB1の数値が違っていれば、赤で塗りつぶしになります。 A2・・・・以降コピーしても書式がコピーされません。 どのようにすれば出来るのか教えて下さい。 文章でうまく伝えられていないと思いますが宜しくお願いします。

  • 条件付き書式のコピーについて

    シート1のセルとシート2のセルが一致しない場合、書式の変化が発動するように設定しようとしています。 現在、シート1のセルA1の書式設定に、 「次の値に等しくない」 「=INDIRECT("Sheet2!$A1")」 と入力されています。 この時点でシート1のA1は正常に書式が発動されました。 そこでシート1のA列すべてに書式をコピーしたいのですが、コピーをするとすべてのセルの書式が「=INDIRECT("Sheet2!$A1")」となってしまいます。 「=INDIRECT("Sheet2!$A1")」 「=INDIRECT("Sheet2!$A2")」 「=INDIRECT("Sheet2!$A3")」・・・・ となってもらいたいのですが。 コピー方法はセルA1の書式設定したあと、マウスの右ドラックをして「書式のみコピー」を選択して実行しました。 どこか間違っていますでしょうか。

  • Excel 2007: 条件付き書式がコピーするたびに増える

     XP でExcel 2007 を使用しています。  あるセルの条件付き書式を他のセルへコピーしようとしていますが、コピーを行うたびにコピー先の条件付き書式の数が増えていきます。  これを増えないようにするにはどうすればいいのでしょうか。  例えば、AJ21 に条件付き書式を設定し、それをAJ22 にコピーすると(形式を選択して貼り付け -> 書式)、AJ21 で設定した条件付き書式がAJ22 にコピーされますが、コピーを再度行うと、この書式がふたつ、みっつと増えていきます(添付の画像をご覧下さい)。  条件付き書式は上書きされると思っていたのですが、違うのでしょうか。

  • 【EXCELエクセル】セルの書式設定だけコピー・ア

    【EXCELエクセル】セルの書式設定だけコピー・アンド・ペーストしたいです。 ショートカットキーを教えて下さい。 やりたいこと セル右クリック→書式設定→罫線→細い線を選択→セルに斜め線を入れる これを違う離れているセルにも書式設定だけコピーして斜め罫線を入れたいです。 書式設定だけコピーするショートカットキーを教えて下さい。

  • Excelの条件付き書式、直接入力と参照した数値は違う?

    Excelの条件付き書式、直接入力と参照した数値は違う? Sheet1のA1セルの数値を Sheet2のA1セルが「=IF(Sheet1!A1="","",Sheet1!A1)」という数式で参照しています。 数値に、「%以上」という文字列を追加したいので、 Sheet2のA1セルの書式設定を、ユーザー定義で「0"%""以""上"」としています。 Sheet1のA1セルに数値を入力 → Sheet2のA1セルが参照 → ユーザー定義で「○%以上」と表示させる。 ・・・ここまでは簡単にできました。 さらに、数値が表示されたときにセルの色を赤くしようと、 条件付き書式で、 「セルの値が 次の値以上 0」 と設定したのですが、入力が無くても赤いままになってしまいます。 設定を、 「セルの値が 次の値以上 ="0"」とか、 「セルの値が 次の値より大きい 0」とか、 いろいろとやってみましたがどうしてもうまくいきません。 参照ではなく、セルに直接入力するのであればこれでうまくいっていましたので、簡単に出来るものだと思っていたのですが、 これはたぶん、私が根本的なことをわかっていないのだと思います。 ご教授頂けましたら助かります。

  • EXCELの条件付き書式でできますか?

    セルA1からセルA8までの中で、最大の値が入っているセルに背景色(塗りつぶしの色)をつけたい。値が直接数値で入力された場合と、式で計算された場合とに分けて方法が異なれば、それぞれ知りたい。条件付き書式でできれば有り難いのですが。

  • Excel 条件付き書式のコピー

    [条件付き書式]の使い方は分かっているのですが(と思います)、ある条件(数式)を入れて他のセルにコピーすると、参照しているセルが絶対値になってしまいます。 ちょっと上手く説明できないのですが。。。 ----------------------- A列   B列    C列 001  あいうえお  A 002  かきくけこ  B 003  さしすせそ  B 004  たちつてと  A ----------------------- エクセルの表は上記のようになっていて、C列の値が[A]の場合はA列のセルのパターンを赤にする、というような事をやりたいと思っています。 それで[001]のセルに条件付き書式で"数式が[=$C$1="A"]"という条件を付け、形式で書式だけ選択して他のA列のセルにコピーすると[002][003][004]・・・と全部に[$C$1]という値を参照する条件がコピーされてしまいます。それを、それぞれの行のC列を参照するようにするには、どうしたら良いでしょうか? 説明が上手くなくて長くなってすみません。 よろしくお願いします。

  • 条件付書式だけのコピー

    Excelで既存のファイルに条件付書式を設定したいと考えています。 ただし元ファイルには、既に罫線・網掛け等をされているので、条件付書式だけを全体のセルにコピーしたいのです。 そのような方法はあるのでしょうか。 よろしくお願いします。

専門家に質問してみよう