Excel2007で表の検索とセル操作方法

このQ&Aのポイント
  • Excel2007で表を作成し、別のセルの操作方法について調べています。D列に特定の文字がある場合に、E~J列を結合し、特定の文字を入力する方法や、条件付き書式を使って特定の条件で入力する方法を試しましたがうまくいかず、VBAを使用する方法を調べています。
  • Excel2007で表を作成し、別のセルの操作方法について調べています。D列に特定の文字がある場合に、E~J列を結合し、特定の文字を入力する方法や、条件付き書式を使って特定の条件で入力する方法を試しましたがうまくいかず、VBAを使用する方法を調査中です。
  • Excel2007で表を作成し、別のセルの操作方法について調べています。D列に特定の文字がある場合に、E~J列を結合し、特定の文字を入力する方法や、条件付き書式を使って特定の条件で入力する方法を試しましたが上手くいきません。VBAを使用することで処理を行う方法を調査中です。
回答を見る
  • ベストアンサー

Excel2007で表を検索、別のセルの操作方法

Excel2007で表を作っています。 通常はE~J列に個別で文字を入力するのですが、 D列にある文字があったときには、E~J列を結合し、通常とはフォント、フォントサイズ、を変えて、 決まった文字を入れます。 条件付き書式ですと、文字が入らず、E列でIF関数を使ってE~J列に入れる状態のものを 他のセルに用意して、引用する形にしても入れ先が結合できてないせいかうまくできません。 VBAはよくわからないのですが、調べたところ、結合、フォントを変える、フォントサイズを変えるは できそうな気がしました。 ですが、D列にある文字があったときに、その処理をするというやり方がわかりません。 IFで表の行分聞けばできそうな気もするのですが、他に適当なやり方はありますか? よろしくお願いします。

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

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

まぁ,無理矢理マクロを押しつけているのはこちらですから,出来るだけ対応はします。ただ,後出しで後から後から問題が発生したり「実はもっとこうしたい」が次々出てくるのはツライものがあります。 対応内容: ○表は5行目がタイトル行で,6行目からデータが入っている ○5行目のタイトル行と6行目との境に二重下線が引いてある ○#N/Aが計算されているセルがある ●表範囲には罫線が引かれている 手順: 5行目タイトル行の二重下線を引き直す 前回のマクロを消去し,次のマクロに差し替える sub macro1r1()  dim h as range  for each h in range("D6:D" & range("D65536").end(xlup).row)  with h.offset(0, 1)   if h.text = "休" then      .resize(1, 6).clearcontents    .resize(1, 6).merge    .value = "休館日"      .font.name = "未だ不明の所定のフォント名"  ’★    .font.size = 36  ’★   else    .unmerge    .clearcontents    .resize(1, 6).borders.linestyle = xlcontinuous ’●不要の場合はこの行削除    .resize(1, 6).font.name = "HGSゴシックE"  ’☆    .resize(1, 6).font.size = 24   end if  end with  next end sub ☆と★を手直してからマクロを実行する。

kabocya99
質問者

お礼

とても助かりました。ありがとうございました。 その後遊びで字体を斜めにしたり、色をつけたりしてなんとなくなじんできたような気がします。 ボタンも今回初めてつくりましたが、ちょっと感動しました。 まだ構造的なこと(?)はよくわからないのですが、これから勉強していきたいと思います。 いろいろわがままなことをいってしまい、申し訳ありませんでした。

その他の回答 (2)

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

次のように「実際のエクセルはこうなっていて,こうしたいんです」というのが重要です。 >実はD列には前もって文字が入っていて、バッチ的な感じで処理できるようにしたかったのです。 >D列にはVLOOKUPで呼んだ他のシートの他の表の文字が入ってます。ある文字は"休"です。 準備: 前回回答したマクロは役に立たないのでバッサリ消して丸ごと捨てる。 エクセル画面に戻る ALT+F11を押す 現れた画面で挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける sub macro1()  dim h as range  for each h in range("D2:D" & range("D65536").end(xlup).row)  with h.offset(0, 1)   if h.value = "休" then      .resize(1, 6).clear    .resize(1, 6).merge    .value = "休館日"      .font.name = "未だ不明の所定のフォント名"  ’★    .font.size = 36  ’★   else    .unmerge    .clearcontents    .resize(1, 6).font.name = "HGSゴシックE"  ’☆    .resize(1, 6).font.size = 24   end if  end with  next end sub ★の部分を適切に修正してから,ファイルメニューから終了してエクセルに戻る 手順: ALT+F8を押し,macro1を実行する シート上にオートシェイプの図形等を配置,右クリックしてマクロの登録でmacro1を登録し,クリックして実行する #こちらの質問相談掲示板の機能で☆の行のフォント名が適切に表示されない可能性があります。実際のエクセル画面からフォント名をコピーし貼り付けて,修正してご利用下さい。

kabocya99
質問者

補足

再び丁寧に教えていただきありがとうございます。 実行してみたところいくつか問題がありました。 ●表は5行目から始っていて、5行目は列の内容が入っていて、実際の内容は6行目からなのですが、 実行してみたところ、E5の内容が消えました。→これは.clearcontentsを削除することで対応でき そうです。 ●D6に"休"が入っていたとき、5行目と5行目の境の罫線(二重線)が消える。D7に"休"が入って いたときは6行目と7行目の境の罫線(一重線)は消えません。試しに5行目と6行目の境の罫線を 一重線にしてやってみましたが、やはり消えました。→これは後から線を引きなおすようにすればよい でしょうか。 ●例えばD6、D7、D8、D19に"休"が入っていた場合、前3つの方のE~J列は変化するのですが、 E19~J19は変化しない。→これは、前もって伝えていなかったのですが、D列にはVLOOKUPの式が 入っているのですが、#N/Aが返っていることもあります。このせいで止まってしまったのでしょうか? ●動かすと実行時エラー'13'と表示される。 実際に動かしてみて、思っていたイメージだったのでとても嬉しく、感謝しているのですが、 特に3番目が困っています。  

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

マクロを使って次のようにします。 手順: シート名タブを右クリックしてコードの表示を選ぶ 現れたシートに下記をコピー貼り付ける private sub worksheet_change(byval Target as excel.range)  dim h as range  set target = application.intersect(target, range("D:D"))  if target is nothing then exit sub  for each h in target  with h.offset(0, 1)   if h = "ある文字" then  ’★    .resize(1, 6).merge    .value = "決まった文字"  ’★    .font.name = "所定のフォント名"  ’★    .font.size = 14  ’★   else    .unmerge    .clearcontents    .resize(1, 6).clearformats   end if  end with  next end sub ファイルメニューから終了してエクセルに戻り(そのまえにマクロの★を付けた部分を所定の内容に修正してから) D列に「ある文字」を記入したり消去してみます。 #余談 補足には及びませんが,ご質問で説明が足りていない内容は次の通りです。 ●Excel2007で表を検索とは? ●ある文字とは? ●通常とはフォント、フォントサイズ、を変えてとは? ●決まった文字とは? ●E列でIF関数を使ってE~J列に入れるとは? ●引用する形にしても入れ先が結合できてないせいかうまくできません。とは??

kabocya99
質問者

補足

こんなに早く回答いただきありがとうございました。 説明が足りず申し訳ありませんでした。 特にタイトルは字数制限があり、舌足らずになってしまいました。 さっそく書いていただいたコードを教えていただいたように貼ってみたのですが、 D列に新たに"ある文字"を入れると"決まった文字"が入力されるのですが、前もって入っていたところは 変化しませんでした。 実はD列には前もって文字が入っていて、バッチ的な感じで処理できるようにしたかったのです。 以下ご指定があった点について説明を補足します。 ●Excel2007で表を作っているのですが、その表のある列を検索して合致したときは~の意味でした。 ●D列にはVLOOKUPで呼んだ他のシートの他の表の文字が入ってます。ある文字は"休"です。 ●E~J列はD列に"休"と入っていないときはそれぞれのセルに文字をHGSゴシックEの28ポイントで 入れているのですが、D列が"休"のときはE~J列を結合して,別のフォント、もっと大きいサイズで ●"休館日"と入れたいのです。 ●今まではE~J列に貼りつけたいもの(E~J列を結合して"休館日"と入れたものを別に作っていて、 コピー、E列に貼りつけとしているので、たとえばそれがE40にあるとして、 E列に=IF(D9="休",E40,"")のようにすればうまくいくかと思ったのですが、E~F列に"館日" みたいな感じで入るだけでした。E列のものもE列に入れればうまくできるので、結合があるとうまく いかないのかと思いました。 知識不足でうまく説明できずすみません。

関連するQ&A

  • VB6とExcel2003の組み合わせで、セルのコピーがしたいのです

    VB6とExcel2003の組み合わせで、 例えば、A1~D10までの書式を、A21~D30に そのままコピーがしたいのです。 セルの結合や文字のフォントやフォントサイズ等 全てです。 つまり、2ページ目になる際に、ヘッダー等を コピーしたいのです。 どうすれば良いのでしょうか? 宜しくお願い致します。

  • Wordで作った表のセル操作と表の操作が解りません

    Word2007で表を作ったときの編集操作方法についてお尋ねします. 1.表のセル操作 Wordで表を作り,編集するときに「セルの削除」はありますが,「セルの追加」という機能は 見つかりません. あまり使う機会はありませんが,表はいつも真四角とは限らず,横にコメント(表の中で) をつけたい場合などはどうすればいいのでしょうか. もちろん,「列を追加」→「セルを削除」を多数回(必要な行数)するで,不揃いな表の形を 作ることはできますが,面倒なので・・・. ついでに,文字だけではなく,セルの枠と一緒にセルの移動というのはできないのでしょうか? 2.表の分割 同じく,「表の分割」という機能はありますが,「表の結合」という機能は見つかりません. 分割ができるのなら,結合ができてもよさそうな気がしますが. 3.表の位置の固定 表が入った文書を作っていると,文章入力中に既に作ってある表がとんでもない所に飛んで いったり,勝手に分割されたり,最悪無くなったりすることがあります.(画像でもよく起こります) アンカーの機能があると聞いたような気がしますが,使い方がよくわかりません. 以上,素人質問で申し訳ありません. よろしく教えてください.

  • Excelでセルの書式も引用する方法について質問

    Excelのセルの書式のことで質問です。 シート1の表(日付や数字や文字がある表)をシート2へ引用するように関数を作ったのですが、シート1へ列を挿入するとシート2の書式がずれてしまって、日付の表示が上手くできません。 シート1のセルの書式ごとシート2へ引用する方法があれば教えてください。

  • エクセルで表の検索方法を教えてください。

    エクセルで表の検索方法を教えてください。 添付画像のように A1:D16 に表があります。 A18:D18 に1行のデータがあります。 このデータが、表の何番目にあたるのか検索する方法を知りたいです。 すぐに思いつくのは、作業列を1列用意し、そこにA列からD列の各行の値を結合して表示させ、作業列の値で検索することですが、それ以外の関数での方法を知りたいです。

  • エクセルの書式のコピー

    エクセルで送迎表を作成しています 1行目に 1Aから1Dまでのセルを結合し送迎表と記入 2行目から 2Aに“氏名” 2Bに“迎えの時間” 2Cに“ドライバー名 2D”に“送りの時間” といった見出しを HG創英角ポップ体 サイズ11で入力 3行目から10行くらいまで 氏名 時間などを記入した表です そのフォントは HGP明朝E サイズ14  時間を記入する欄は HSPゴシック サイズ14になっています これを 名前や時間のフォントをまとめて変更したいのです  ホームリボン内にある 書式のコピー 貼り付けを使ってやっているのですが このやり方で あっているのでしょうか? やり方は まずその書式にしたいセルを選択(例えば2Aのセル )→書式のコピーを押下 次に その書式にしたいセル(2Bから10B)を ドラッグで選択 この時 ドライバー名(2C~10C)もCTRLとともにドラッグ その後再度 書式のコピーを押下 何も変更がされません ちなみにドラッグが1列のみだと 書式が変更されます また この場合 A列全部を選択して 書式の貼り付けを行うこともできるのでしょうか? 1列目は セルの 結合をしていますが…… もともとの表の作成者が 見出しや時間などのフォントをバラバラに して作成したのですが 印刷してみると 文字が小さかったり ばらばらで 見にくいので 多数のセルのフォント(サイズも含め)を 変更したいのですが わたしのやり方は間違っているのでしょうか?間違っているようでしたら ご指摘お願い いたします またもっとよい方法などあれば 助言をお願いいたします 分かりづらい説明で申し訳ありません。状況が 伝わるとよいのですが…… OSはVISTA  OFFICE2007です 宜しくお願い致します

  • Excel2007の条件付き書式をVBAで行う方法

    Excel2007での条件付き書式をVBAで行う方法を教えてください。 【やりたいこと】 E列に「あ」と入力されると、A列からE列までのフォントが青、セルの塗りつぶしが黒になる E列に「い」と入力されると、A列からE列までのフォントが黒、セルの塗りつぶしが白になる E列に「あ」「い」以外が入力された場合は何もしない。 #A列からD列まではすでに別の文字列が入力されています。 【使いたい構文】 イベントプロシージャ(Change)を使いたい。 Select Caseを使いたい。 【願わくば・・・】 色の指定をRGBですることもできるのでしょうか? 過去の質問より、塗りつぶしを変更する方法や、 フォントの色を変更する方法は見つかりましたが、 両方を変える方法を見つけることができませんでした。 Select Caseの処理を複数させようとして挫折しています。 そもそも一度に複数処理をさせることは無理なのでしょうか? よろしくお願いします。

  • Wordの表(セルの結合あり。)に貼り付けると、左右凸凹に貼り付く

    質問自体は、実際に見れば簡単なことなんですが、 言葉で書くので煩わしくなってしまいます。 Wordで作っている文章の中に表があります。 ただし、その表は単純な表ではなくて、 セルの分割や結合が行われています。 表自体は長方形をしていますが、セルの結合によって、行によりセルの数が違います。 詳しく書くと、 表は4列で、 列をエクセルのように假に左からA、B、C、Dとすると、 D列はどの行も結合されていません。 1行目は、A1・B1・C1が結合されている状態。 2行目と3行目は、A2とA3が結合されていて、 B2とC2、B3とC3が結合されている。 4・5・6行目は、A4・A5・A6が結合されていて、 B4・C4が結合、B5・B6が結合。 7行目は、(1行目と同じく)A7・B7・C7が結合。 (多分、表を作るときは分割も使ったと思いますが、 説明が面倒になるので、分割という言葉は使いませんでした。) さて、結合がされていないD列に、 エクセルのある列のデータを貼り付けたいと思います。 貼り付けたいデータをコピーして、 上記のWordの表のD列を選んで貼り付けます。 すると、意図に反して、うまくD列に貼り付きません。 どの行でも、必ず、左から2つめのセルに貼り付いてしまいます。 上記のようにセルの結合が行われているために、 左右に凸凹に貼り付いてしまいます。 例えば、 3列になっている2行目や3行目は、結合されている (左から)2つめのセル(B2・C2、B3・C3)に、 4列になっている5行目や6行目は2つめのセル(B列)に貼り付いてしまいます。 このように、行のセルの数にしたがって凸凹に貼りつくのではなく、 行のセルの数にかかわらず縦一直線に貼り付けたいのですが、 どうすればよいでしょうか。 Wordは2000

  • 複数のセルの引数を絶対参照にする方法

    エクセル2010を使っています。 複数のセルの最初の引数を一度に絶対参照にしたいです。 やりたいことを、添付した図で具体的に説明します。 この図には、frame1,frame2,frame3,の3つの基本の表(A列からD列の部分)があります。 また、frameX(I列からL列の部分)もあります。 今、作業は、E列からH列で行なっています。 まず、 F3には、=IF(J3=0,0,B3) G3には、=IF(K3=0,0,C3) ・・・ H7には、=IF(L7=0,0,D7) という関数を入れました。 この後、E1からH7を、コピー貼り付けして、 frame3-2までを完成したいです。 ですが、このままですと、frame2-2も、frame3-2も、それぞれの5行3列の値は全て0になってしまいます。 そこで、 F3には、=IF($J$3=0,0,B3) G3には、=IF($K$3=0,0,C3) ・・・ H7には、=IF($L$7=0,0,D7) と、5行3列に入れた(15個のセルの)、最初の引数を絶対参照にしたいです。 (実際の表は37行45列で、frameの数が200あります。) 複数のセルに入っている、最初の引数を一度に絶対参照にする方法はあるのでしょうか? よろしくお願いします。

  • microsoft excel セルの色

    microsoft excel セルの色 http://okwave.jp/qa/q6412180.htmlの続きです。(もう補足できなくなってしまったので・・・) 同じようなことを、下の列(A14,B14,C14,D14,E14,F14)、下の列(A15,B15,C15,D15,E15,F15)、下の列、・・・・という風にやっていきたいのですが、一から条件付き書式の設定をしなければいけないのでしょうか。 他にいい方法はありませんか?教えてください。

  • エクセル工程表で業者別にセルの色を変える方法を教えてください

    エクセル工程表で業者別にセルの色を変える方法を教えてください 皆さんこんにちは。YOSHIMAROといいます。 WEBでいろいろ調べながらエクセル2003で工程表を作成しています。 3行目以降のE列からAI列には「条件付書式」で「着工予定」から「完工予定」までセルの 色が変わるようにしています。 例えばE3のセル(わかりづらくて申し訳ありませんがS.I邸の9月1日を現すセル)に は以下の条件付書式を設定しています。 条件1 数式が:=(AND($C3<=E$2,$D3>=F$2)) → 書式:ピンク      (A列)|(B列) |  (C列) |   (D列) |  (E列以降)     (1行目) 邸名|施工店| 着工予定|完工予定 | 9 月 (2行目)    |     |        |        |1 2 3 4 5 6 7 8 9 10 11 12 13              (3行目) S.I 邸 |  A 社|  9/10 | 9/20 |E3(工程欄 セルの色が変わる) (4行目) H.U邸 |   B 社|  9/05 | 9/25 |E4(工程欄 セルの色が変わる) ここで質問ですが施工店(A社、B社、・・・・)によってセルの色を変える方法がありま すでしょうか。 施工店は20社ほどあり、しかも今後増減する可能性が大きいので完全にお手上げと なってしまいました。 (1)マクロを使わなくてはならないか(そうなるとまったくわかりません)、関数で対  応可能か。 (2)別のセルで施工店別の色を定義しておいて、各行で施工店のセル(例えばB3)と比  較して日程のセルの色を決定するのだと想像していますがどのような方法がある  のか。 上記2点も含めてお知恵を拝借できたらと思っております。 よろしくお願いします。

専門家に質問してみよう