「重箱の中へ。(エクセル関数あつかい)」
重箱の中へ。(エクセル関数あつかい)
メルフォ再開いたしました! メール下さるさいはここをぽちっとお願いします。
●脳の溶けてる事例。
DCOUNTAはいくつかの条件をみたしたレコードの数を数えてくれます。
たとえば『このリストの中の〜1歳以上で独身で〜男性のにゃんこ様何名か数えたいの〜頼んだわねオ・ネ・ガ・イ☆(←…おい。)』ってなリクエストに応えてくれます。
しかし問題が起きるのはその後です。
『えっと〜じゃあそのなかで、オシゴトはねこら商事ぐるーぷの支店長やってる方だけ数えたいんですけど〜』とするとこんなことが。
『…あれ? 支店長が100にゃんもいるの? 支店の数、30くらいしかなかったよね…』
ここでデータを詳細に数えてみると判明する事実。
『ってこの数は…あ〜支店長代理まで一緒に数えられてる〜!! なんで? 条件には支店長としか入れてないのに??』
そう、DCOUNTAのクリテリアに数でなく語をいれた場合は、“含む”検索もしくは前方一致検索で検索がされるようなのです。
●字面の溶けてる解決法。
使用データ、検索条件に「デリミタ」を追加すれば解決できます。
たとえばこの事例ですと
1.「オシゴト」のところに入れるデータを「ねこら商事ぐるーぷ支店長」「ねこら商事ぐるーぷ支店長代理」でなく「ねこら商事ぐるーぷ支店長☆」「ねこら商事ぐるーぷ副支店長☆」として、
2.検索条件は「ねこら商事ぐるーぷ支店長☆」といれる
このようにすれば、支店長代理が数えられてしまうモンダイは解決できます。
(このばあいで言うと「☆」が「デリミタ」。このデータはここで終わり、ということを明示するためのシルシです。)
つまりこの「デリミタ」込みでデータを入れて、条件文字列を指定すれば『“含む”検索もしくは前方一致検索でごっちゃにカウントされ』のワナは完全回避できる…はずです。
ご参考 既存のデータ→デリミタつきデータへのかえかた
=元の文字列の入ってるセル&"デリミタに使う文字"
で一発コンバートできます。
デリミタに使う文字は、例えば名前用だったら「☆」とか「#」とか、「フツーに考えたらそこで使われそうもない」かけ離れた種類の文字(複数文字連続にするとさらに安全度が高まります――「はぁと」なんかでもいいのです。)、もしくはスペースなんかを指定するのがミソです。オススメはスペース(理由は後述)。
●応用(兼務も一緒に数えられます)
さてこれだと問題がひとつあります。
『あれ? やっぱり数があわないっぽい…なんか「支店長兼昼寝委員☆」の方々がカウントされてないっぽいぞ…どうしよう…』
これを解決する方法はふたつ考えられます。
まず、支店長(デリミタなし)でカウントした数から、除外対象…支店長代理でカウントした数を引く方法。
これはガイネンとしてわかりやすいですが、除きたいものが複数あったりすると面倒です。
対して、スペースをデリミタとして使うという方法は一度でスマートにおさまります。
つまり…
1.「オシゴト」のところに入れるデータを「ねこら商事ぐるーぷ支店長」「ねこら商事ぐるーぷ支店長代理」でなく「ねこら商事ぐるーぷ支店長 」「ねこら商事ぐるーぷ副支店長 」「ねこら商事ぐるーぷ支店長 兼 昼寝委員 」のようにとして、
2.検索条件は「ねこら商事ぐるーぷ支店長 」といれる
すると「ねこら商事ぐるーぷ支店長 」も「ねこら商事ぐるーぷ支店長 兼…」もこの条件だけでピックアップできます。
スペースは
・区切りの文字としてよく使われる→自然に使える
・プリントアウトしたときにも見えない→うっとうしくない
・イザとなったらTRIMとかで一発で消しちゃうこともできる
…この理由からデリミタとして便利なのです。
ぜひぜひお試し下さい!
●補遺(新…とか第2とかを混同しない方法)
これをアップしましたしばらく後モンダイが発生しました。
この場合、特定の特徴をもつ名前が混同されてしまうのです。
たとえば…
「それじゃあ視点をかえて支店勤務者の人数数えようっと! まずは条件、『玉町支店 』(←ばっちりデリミタいれてあるとこに注目です)と…あれ? なんか予想の倍くらいの数になってるぞ…あー『新玉町支店 』の人数まで一緒になってるう(泣)」
このモンダイはデリミタをデータの“アタマ”にもつけることで解決できます。
すなわち…
・登録データを『玉町支店 』→『 玉町支店 』のようにする
・検索するときの条件もちゃんと『玉町支店 』→『 玉町支店 』のようにする
これでOKです。
…確かにこうした集計は、最終的にひとつずつ検算するものですが、『混同されてるのを計算しわけてそれを検算する』よりは、『ジャストのこたえが出ていてそれを検算するだけ』という方が格段に早いし楽です。
そういった点で、こうしたジャストな設定やその作り方って重要だとおもうのです。
これからもこうしたちっぷす見つけしだいアップしていきます。
もしもすこしでもお役に立てれば幸いです♪
●実例
・とあるテストの得点集計表とデータ表を渡されて「集計表にデータ表から“そのヒトの得点データ”いれて〜な」といわれたはいいが、“このデータ表”が複数シートある(泣)。
この場合、集計表にデータをいれる方法は二通り考えられます。
1.各データ表シートで情報の入っている列のならびがおなじなら、“このデータ表”ズを全部一枚のシートにコピペでまとめた“全部入りデータシート”から一括検索する
そうでないなら、
2.VLOOKUPとソートを繰り返す
具体的には…
いちまいめのデータ表シートからVLOOKUPでデータとり
→この検索結果を値コピペして固め、この値で集計シート全体をソート
(2006.06.03追記。全く別のもっと冴えた方法が見付かりました! ●さらに追補。をご参照下さい!)
→すると#N/A(いまデータとりしたデータ表にはのってなかったヤツ。)が下に固まる
→今度はそれらだけを対象に、にまいめのデータ表シートにVLOOKUPでデータとり。
→この検索結果を値コピペして(以下略)
…これを繰り返す。
っという方法があります。
●モンダイ。
さて、第二の方法を素直にやると、ここで問題が起きます。
「ソート繰り返してたら、右の方に入ってた集計式(の参照)がむちゃくちゃになっちゃったよ〜(笑)」
簡単な式がすこしなら再構成できますが、たいていこういう表はデカいし集計式多いしで手におえません。
この場合、こうしたリカバリー法が考えられます。
・とってあったもとの集計表(バックアップ)を引っ張り出してくる。
・バックアップをコピーし、あらたな作業用の集計表にする
・その“あらたな作業用の集計表”の適宜の位置に「今データをVLOOKであつめてた集計表」から必要な値をVLOOKUPでとってくる。もちろん結果は値コピペで定数に。
ぶっちゃけ、「いまデータ集めてきた集計表」を“全部入りデータシート”としてべた貼りする方法です。
ただこれはよーく考えるとなんか二度手間なので、本当にどうしょうもなくなったかめんどうな(爆)ときの対策です。
それよりは、まえもってこの対策を取っておくといいかと思われます。
・データを集めたい集計表において、ソートとかをするより前に、各レコードに並び順ナンバーをふる。
いちばん右の列のとなりを使い、上から12345…とフィル−連続データ作成とかでナンバーつけます。これはかならず、式じゃなくて定数にすること。=ROW()とかの式でナンバーふらせた場合、かならず値コピペして定数に。
・この状態で、「=」を「いこーる」にかえる。
すると、数式がそのまんま(もちろん=はいこーるに変わっていますが)文字列にかわり、たとえソートしても内容が変わらなくなります。
・上で紹介の通り、VLOOKとソートを繰り返して全データシートからのデータを集めきる
(ここで…最後の1シートからあつめてきたぶんを、値コピペするのを忘れないこと)
・並び順ナンバーでソート、いじる前の並びに戻す
・この状態で、「いこーる」を「=」にかえる(つまり=をもとにもどす)。
すると、文字列にされてた数式がふたたび、正しい参照の状態で息を吹き返します。
●追補。
「=を他の文字列に変えることで一時的に数式を固定・黙らせる」この方法は、ほかにも自作機能シートのカスタムのときなどに重宝します。
(インターフェースや、もとデータしーとのところで行や列を増減したいとき)
ただしひとつだけ注意が必要なこととして、
数式を生き返らせるときには、並び順ナンバーでのソートで、確実に「数式を黙らせたときの」もとの並び順に直すこと。参照が激しくずれます。
逆にこれを利用して、複雑な参照配置をいーじーに構築することもできます(参照作っておいて、対象セルをソートする)。覚えておいてソンはありません♪
●さらに追補。(2006.06.03追記)
ソートをしなくていい方法が見付かりました!
値コピペのあと、その列だけを選択し、#N/Aを「新たな式」に置換すればいいのです。
「新たな式」は、基準セル参照のところがポイント。
普段どおりの『最初のひとつだけ真面目にセル参照入れて、そのまんま下にコピペでエクセルに数変えてもらう』って事ができないので、INDIRECT使って指定します。
B列(…の、同じ行)に参照文字列があるとすると、「新たな式」の冒頭はこんなカンジになります。
=VLOOKUP(INDIRECT("B"&ROW()),(以下略))
この方法は、一昨日に「なんとブランクが置換(詳しくは次のコラムで書きます)できる!」ことを発見してひらめきました。
ソートしないでいい→っていうと数式を黙らせる必要もない→っていうとこのコラムにこの事例は適切でないようです。近日もっと適切な例と差し替えます。ちゃぶ台返しですみません…
●推測される、これができるメカニズム
串刺し計算式量産のところと全くおんなじで…
エクセルがセルの内容を検証して、書き直したりしてくれることです。
●前振り
数式のアタマにある=を「いこーる」などの文字列に変換すると、数式を“黙らせる”ことができます。
具体的には、
・その式がみてるのはある“別のシート”にある値なんだけど、諸般の事情からその“別シート”を、新しいものと取り替えたい(※)…けど、式をかえるのはイヤ。
…という場合などに便利です。
※ ページ設定などは、シート上で全選択コピーしても持ってこれないので、シートごととりかえてしまいたい場合がままあります…そんな時など。
↑ 本当はそういう設計に最初からしない(=シートごと書式変えなきゃいけなくなるような…例えば集計データ表示用のインターフェースみたいな…シートは、参照を“する”のみで、“される”ようにはしない。)のがいいんですが、そこからのフィードバックが必要となるとやっぱりやらざるをえないです…。
●より具体的なところ
数式が参照している先のシート(やセルなど)を削除すると、数式の中でそれを記述していたところは#REF!となってしまい、復旧が実に面倒です。
これを防ぐには、数式の=を文字列「いこーる」(など)に置換して一時的に数式を“黙らせて”おき、その状態で参照している先のシートを取り替えるのがおすすめです。
このさい、取り替えて持ってきた“新しい”シートの名前は、お払い箱となった“古い”シートのものと必ず一緒にします(←しないとやっぱり#REF!になるから)。
取り替えがすんだら「いこーる」を=に置換しなおすと、無事に「参照している先のシートがとりかえられてる!」そして「参照をしている数式はそのまま!」という状態になります。
エクセルの数式は基本的に、自分が参照しているところに「コピペや削除」などが行われると、そこへのリンク記述を自己判断で書き換えてくれます。
しかし数式のアタマについてる=がなくなったり、ほかのものにかわると、これが起こらなくなります。
つまりふつうの文字列同然となってしまうのです。
それを利用した方法です。
●注意!
「いこーる」を=に置換しなおすまえに、ファイルを上書き保存すること。
そしてとりかえたシート名がちゃんと“前と同じ”ものになっているか確かめること!!
もしうっかり、シート名が違う状態で何百も一気に置換したりすると「ファイルが見付かりません。」を何分間もえんえんキャンセルし続けるハメになります。
(これは途中で抜ける方法がないため、すべてキャンセルしぬくまで続けるか、エクセルの外から強制終了(このときもちろん未保存データは飛ぶ)するハメになるので、うっかり保存してなかったりすると本当に泣きたくなります…)
●注意! 2
いくつものシートが関わってるような機能シートでこれをするときは、忘れずに全シートに行う。
いちシートこれを忘れていたために、原因解明と復旧に一時間かかったことがありますので(思い出し涙)、老婆心ながら…
●推測される、これができるメカニズム
串刺し計算式量産のところと全くおんなじで…
エクセルがセルの内容を検証して、書き直したりしてくれることです。
●おまけ
『数式の頭についている=をべつの文字列にかえて、数式を“黙らせる”』ことには、ほかにもちょっとだけお得な点があります。
数式が数式として動く、ふつうの状態のままで保存した場合より…
“黙らせ”て保存した方が心なしか、容量が小さくなるようなのです。
厳密に検証したわけではないのですが、ほんのちょっとだけ得なような。
※ けっこうコピペです…
●実例
・とあるテストの得点集計表とデータ表を渡されて「集計表にデータ表から“そのヒトの得点データ”いれて〜な」といわれたはいいが、“このデータ表”が複数シートある(泣)。
この場合、集計表にデータをいれる方法はまず二通り考えられます。
1.各データ表シートで情報の入っている列のならびがおなじなら、“このデータ表”ズを全部一枚のシートにコピペでまとめた“全部入りデータシート”から一括検索する
そうでないなら、
2.VLOOKUPとソートを繰り返す
(VLOOKUPかけてそこを値コピペしてソートしてエラーのとこだけにもう一度あたらしいVLOOKUPの式入れて…をくりかえす)
っという方法があります。
しかしこれらには短所があります。
1.は列の並びがちがったらもう終わり。列並びを合わせて作るとこれがまた面倒
2.は、他の部分に数式、参照が入っている場合、ソートによってそれがめちゃくちゃになる危険がある。
これを防ぐには「=」を「いこーる」にかえておくという方法があるが、それだと「=」を「いこーる」に戻す前に、確実に並びを元どおりにしておかないといけない。割と忘れるのでキケン。
これをカバーする第三の方法がこれです。
2+.VLOOKUPと値コピペと置換を繰り返す
2.の値コピペのあと…
その列だけを選択し、#N/Aをつぎの対象シートをデータ探し先(範囲)に指定した「新たな式※」に置換します。
※「新たな式」は、基準セル参照のところがポイントです。
普段どおりの『最初のひとつだけ真面目にセル参照入れて、そのまんま下にコピペでエクセルに数変えてもらう』って事ができないので、INDIRECT使って指定します。
B列(…の、同じ行)に参照文字列があるとすると、「新たな式」の冒頭はこんなカンジになります。
=VLOOKUP(INDIRECT("B"&ROW()),(以下略))
●推測される、これができるメカニズム
串刺し計算式量産のところとこれも全くおんなじで…
エクセルがセルの内容を検証して、書き直したりしてくれることです。
まさか数式に置換なんて…動かないんじゃないの? と一瞬思えそうですが、なんとできてしまいます。(式さえ正しければ…)
●もっと根本的な対策。(2006.11.25追記)
本当のことを言うと、こういう「すでに算式とかの入っている表」に直に式をいれてデータ吸い上げさせる自体キケンなのです。
ですので、このやり方のほうが本当はいいのかもしれません…
渡されたシートから新しいシートに、対象者の名前だけコピペしてくる。
名前はったとなりの列に「もとの並び順」を入れる(数式使って入れた場合、間違いなくこの時点で値にしておくこと!)
VLOOKUPで得点データを取ってくる。
このときは値にしたあと、ソート使ってOK(別のシートだから ☆ポイント)。
全部の得点データ取れたら、「もとの並び順」をつかってソート、もとの並び順に戻す
渡されたシートに、得点データをはる。並びはおんなじなんでカタマリまるごとそのまま貼ればOK(のはず)。
※もしも一筋縄ではりつかない場合はコラム◇貼りつけできないときの対策 〜セル結合とコピーペーストの微妙なカンケイ〜をご参照くださいませ。
※っていうかそんなデリケートな状態の表を丸ごとヒトに渡す自体がヤバいことにそろそろ気づいてほしい今日この頃です…シート保護ではそのキケンは回避できません!(得点データ入れるために保護は解除してしまいますので)
計算部分はあちこちにばら撒かないほうがいいのです。シートそのものもシゴトそのものも。勝手に修正入れてアバウトに計算されたものを検算してやり直し指示するより、データ「だけ」もらって一括計算したほうがはるかにマシなのです。そこのへんはもう、半分くらい考え方、ですが…
作業者にデータ渡すための表をセル結合やスペースいれ駆使してカッコよく装飾的に作り上げるのは、余計な装飾をはぐ手間が増えるだけですのでやめたほうが(そのぶん早く渡すほうが)感謝されると思われます。心底。
関数扱いというより、機能によるものなのでコラム扱いです。
●解決法をひとことでいうなら
一旦すべてをデリミタいりのテキストにしてしまう。そして、お目当てのデリミタのところで区切る。「行列入れ替えで張り付け」で改行とタブを必要なときに変換しつつ。
●ポイント:メモ帳は改行は扱えないが、タブ記号は扱える。「行列入れ替えで張り付け」は改行をタブにかえることができるので、これで改行とタブを必要なときに変換する。
●さりげに猫的だが生々しくもある背景説明。
データ加工のもとデータとして、困るのが加工後の表です。
たとえば
A B C
1 名前 クラス 委員
2 三毛野 A 図書
3 縞柄 B 風紀
4 鯖虎川 B 美化
5 白斑 C 体育
.
.
.
という表をつくるときのもとデータとして
A B C D E F
1 クラス別委員一覧
2 A B C
3 三毛野 図書 鯖虎川 美化 白斑 体育
4 縞柄 風紀
.
.
.
というような半端に加工された表を渡されるのが最も困ります。
(大抵そういう表は記述もアバウト。不要なスペースとかはいってるし…)
この場合、普通はぷちメンドくさがりつつコピペ(爆)ですが、クラスの数が四捨五入して10を越える頃になると提供者に文句のひとつも言いたくなります(さらに爆)
しかし大抵、これしかもとが手に入らない場合がほとんどです(ワープロから入られた方の場合だと特に、最初からこのカタチにべたうちで作っているから…)。
よって、これを楽に加工する方法を考えました。
●やりかた。
まず、もとのデータを作業ようのファイルのシートにコピペします。
そして、そのデータ全てをデリミタつきでバンドルします。
具体的には…
・新しいエクセルファイルを作り、作業ようファイルと名前をつけておきます(つけなくてもいいですが、ここは説明の都合上つけました。)
・シートは5、6枚に増やしておきます。
・作業ようファイルのシート1にもとデータを貼ります。
・シート2にこう入れます。
A B
1
2
3 =Sheet1!A3&"##"&Sheet1!$A$2&"@@" =Sheet1!B3&"__" ...
3行目はつまり、=なまえ&"名前ようデリミタ"&クラス(ここは各カタマリで違うのできをつける)&"クラスようデリミタ" =委員&"委員ようデリミタ" ってなことです。
結果はこう出ます
A B C D E F
1
2
3 三毛野##A@@ 図書__ 鯖虎川##B@@ 美化__ 白斑##C@@ 体育_
4 縞柄##A@@ 風紀__
.
.
・これをコピー、あたらしいテキストファイルに貼り、タブを削除します
(↑タブ記号を空白と置換する。タブ記号は直入力できないが、コピペできるので、今貼ったののなかの適当な場所からコピーしといて貼る)。
するとこうなります
三毛野##A@@図書__鯖虎川##B@@美化__白斑##C@@体育_
縞柄##A@@風紀__
・これをまたすべてコピーして(編集−全て選択 してコピー。)、作業ようファイルのシート3に貼り、一旦保存します(念のため)。
・シート3を全コピー。シート4に「行列入れ替え」でペースト。
こんなん出ます
A B
1三毛野##A@@図書__鯖虎川##B@@美化__白斑##C@@体育_ 縞柄##A@@風紀__...
・これをまた全コピー。テキストファイルにペーストし、ふたたびタブを削除置換。
するとようやくすべてのデータがデリミタ入りでバンドルされます。
・そうしたら、お目当てのデリミタをタブ記号に置換。
(ここでは__です)
・そうしたらまた全てをコピー、シート5に貼ります。
・シート5全コピー、シート6に「行列入れ替え」でペースト。
…お疲れ様でした!!! これでようやく、お目当てのカタチになったわけです。
●追補うぃず私情。
「行列入れ替え」で改行をタブに変える操作が入るので(しかも2回)、ややこしいような気がしますが(ってかちょっと面倒)、やってることは単純です。
クラスが多いほど楽になります。少ないとありがたみがあまりないですが…
もしも改行が扱えるテキストエディタが使えるならハナシはもっと単純です。
デリミタつけたエクセルデータをテキストファイルに貼り、改行をそこ用のデリミタにかえ、ついでお目当てのデリミタを改行に変えるだけ。別のエクセルシートにコピペすればできあがり。
職場環境によっては、新しいソフトを導入するハードルが非常に高い場合があります。
今の職場はまさにそれなのでこんなこともやってます。ああ、MKエディタもってけたらな〜。改行なんかへーきで扱えます!(ワードも改行扱いは不完全だし。)これ使い出すとメモ帳は不便です…(私情)
●ポイント
エクセルは空白を、文字列として検索置換できる。
●心悩ますモンダイ。
学年のみんなに検定試験の申込書を配りました。
ただし、
・申込書は何種類かあります
・人によっては、いくつかの申込書が不要です
この場合、申込書の受け取り日チェックシートはこんなような図になってきます。
A B C
1 名前 1級 2級
2 三毛原 不要
3 縞斑 7/22
4 鯖山 8/1 不要
5 白足袋 7/25
6 赤虎 8/23 7/25
7 黒斑 7/25
申込書がくるたびに、この表で対象者の名前検索して、日付を入れます。
しかしモンダイはある日突然起こります。
それは8/31のこと、三毛原、縞斑、白足袋、黒斑さんからの申込書がいっきに届きました。
「みけちゃんとこに8/31いれてあと下コピーでいれられたらラクなのにああっもう何コかジャマ!」
そう、そうするとさばちゃんと赤ちゃん(ていうとなんですか)の受け取り日付が消えてしまいます。
一瞬、じゃあレコードソートして…と考えますが、右側のほうに集計式とか入ってたりすると(こういう表の常…。)参照ずれが恐ろしいのでそれは敬遠したくなります。
それだけならまだしも、もしも条件複雑なオートフィルタがかかってると、「ぜひともぜひともこのまんまでなんとかしたいっ」と熱望してしまうのが人情であります。
意外なようですがこれは、そうできるのです!
●意外ていすとな解決法。
・B2からB7を選択。
・置換板を出す(CTRL+Rなどで)
・上の窓のなかみ…検索対象入れは「からっぽの」状態にする。
具体的には、窓の中身をクリックアンドドラッグなどで(つまり、普通の文章を選択するときと同じ操作で)はじからはじまで選択して、デリートおあバックスペース。
・下の窓の中身には、入れたい日付8/31をぽちぽちと打ち込む。
(日付いれショートカット…CTRL+;は窓の中ではきかないようです。コレがイヤなら、あらかじめほかのシートとかでCTRL+;して、それをコピペするといいでしょう)
で、置換を実行。
全部一気にやっても、慎重に確かめながらひとつずつ検索→置換してもOK。
●この解決法のぽいんと。
エクセルは空白を、文字列として検索置換できる。
これにつきます。
同様のチェックシート入力の際、面倒だったのでダメモトで試したらできちゃったよ(マジ驚)! といういきさつで発見しましたウラ…というか意外ワザです。
日付入れの際には、このアハ体験をぜひ。
(ワードで「本当に書式“だけ”検索置換できる!」を体感したときと同じくらいの感動がありました…)
●解決法あどばんすと。
ひんぱんにありうる事態。もし「空白なんだけどひとりとか飛ばしたい。」というときは?
たとえば上の例で…
「みんなのぶん入力しよーとしてたんだけど、縞斑さんだけ書類不備で差し戻しになっちゃった…やっぱ彼または彼女(←え)だけ飛ばさなきゃ」というときは。
・縞斑さんとこ…B3に日付とも不要ともかけ離れた文字を何か入れる。ここでは☆とする。
・で、先にのべた解決法を実行…
・したらどこもクリックしない!! その状態のまま(選択範囲が選択されてるそのままの状態!)で、今度は☆を削除置換します。
CTRL+Rで置換板だして、上のまどに☆、下の窓は「からっぽの」状態にして、置換実行。
以上で「縞斑さんとばして日付いれして縞斑さんは空白のまま状態!」が実現できるわけであります。
●ポイント
エクセルでコピペをすると、貼りつかないときがあります。
そのときの対策です。
貼りつかない場合は、
A.まるまる一行とか一列とか貼り付けようとしてるけど、「ここが貼り先!」としてカーソル置いてあるとこが「はじっこ」じゃない
(=一行コピーしてきて貼ろうとしてるけど、カーソルがA列に置かれてない。おあ、一列コピー(中略)1行めにおかれてない)
B.貼りたいものか、貼りたい先に、「セル結合」が含まれてる
C.貼り付け先に保護がかかってる(泣)
このどれかのケースだと思われます。
このうちAとCは単純に解決できます。
Aなら「はじっこ」にカーソル置きなおして貼る。
Cなら保護を解除する。
しかしBだけは厄介です。対策が場合によっていくつかに分かれるからです。
以下に各ケースごとの対策をご紹介します。
●解決法いろいろ。
1.まっさらのシートに、セル結合を含むのを貼るとき
たぶんコレだとふつーにコピペでつくと思われますが、念のため…
貼り先シートがまったくまっさらならハナシは単純です。
セル結合を含むもとデータのあるシートで、セル全部選択してコピー
(CTRL+A→CTRL+C)
↓
貼り付け先のシートの、セル全部選択してペースト
(CTRL+A→CTRL+V)
全部→全部ならいやでもくっつきます(笑)
このあと、いらないとこを削除でざくざく落とします。
2.つくりかけのシートのまっさらの部分に、セル結合を含むのを貼るとき
これでつかない場合は手を変え品を変えます。
セル結合を含むもとデータを、貼りたい部分だけでいいのでコピー
(ふつーにコピー)
↓
これを貼りたいところの、左上部分にカーソル持ってくる。
※貼りたいのが一行とか一列だったら、カーソルは「はじっこ」に置くことを忘れない。
↓
「形式を選択して貼り付け」-「数式」
書式がごっそりなく、データだけが目当ての場所に貼りつきます
そのまんまどこもクリックせずに再び!
↓
「形式を選択して貼り付け」-「書式」
するとフシギ、二段階分けしただけなのに、エクセルに文句言われず丸ごとコピーができちゃいます。
2006.11.09加筆
もし列幅ももってきたい! というときには、そのまま「形式を選択して貼り付け」-「列幅」すればOKです。
3.つくりかけのシートのセル結合ある部分に、貼りたいとき(貼りたいデータのほうにはセル結合あってもなくてもok)
ほぼまちがいなくこのままでは貼りつきません。
2.を応用します。
概説すると『いったんお目当ての部分から書式をはずして脇においておき、データを入れた後、おいといた書式を戻す』方法です。
・それの具体的なやり方
とりあえず、データを貼るべきお目当ての部分を「コピー」。別のシートに「形式を選択して貼り付け」-「書式」。
↓
そしてお目当ての部分のほうは「クリア」-「すべて」。
↓
もとデータを、貼りたい部分だけでいいのでコピー
(ふつーにコピー)
↓
お目当てのところで「形式を選択して貼り付け」-「数式」。
↓
もともとあった書式をコピペしたシートにいって、その書式の部分をコピー。
↓
お目当てのところにもどってきて「形式を選択して貼り付け」-「書式」。
4.つくりかけのシートの、セル結合ある部分に、これまたセル結合ある別のデータを上書きしちゃいたいときのコピペ
これはたとえ、同じ配置で結合がされていても貼り付きません。
潔く、消される定めの部分を「クリア」-「すべて」してから、貼りたいデータを貼り付けます。
●応用1
セル結合を含んだカタマリでもカタマリごと、フィルハンドルで拡張できます。
『タテヨコのセル結合を多数含んだ複雑なフォーム。各セル中にはVLOOKUPでデータが入るようにした。
しかしモンダイは、これの拡張…
まずコレをコピーしといて、このフォームの行×増やしたい数っでペースト範囲選択して…てまちがえた! ああ面倒!! なんとかなんないの!!』(←体験に基づく実話。)
そんなときは、フィルハンドルで拡張してしまえます。
フォームを拡張するところを「クリア」-「すべて」でまっさらにしておく。
拡張したいカタマリの全域を選択し、フィルハンドルを引く。
すると、それとおなじカタマリが、カタマリ単位でぽこぽことできてきます。
カタマリに数式や数が入ってる場合は、それもちゃんと拡張されます。
みょーに複雑なフォームの表のとき便利です。
このとき、数式の参照範囲に絶対記号($)は忘れないでください。実体験としてよく忘れます(泣)そして数式作り直したカタマリを拡張しなおすにはまたその部分まっさらにしなきゃいけなくて面倒…
もうひとつ忘れがちなポイントは「各フォームの間の空行ぶんも含めて選択しておき、フイルハンドルを引く」ことです。空行まで含めとくとそれも一緒に入れられるのでラクなのです。
●応用2
防波堤になります。多すぎるデータ貼り付けへの。
商品名を『商品名』ぞーんに貼り付けると、となりに商品コードが出てきて、下のほうでは集計までしてくれるべんりシートでの話。
「『商品名』ぞーんの下に、『商品の種類別の数を集計するところ』があるんだけど、うっかり、商品名一時にいっぱいはりすぎて集計部分まで上書きして表ダメにするやからが絶えないんだよう」という場合。
しかし、表のフォームが大幅には直せない場合。
この「貼れないで困る!」現象を逆に利用して防波堤をつくれます。
『商品名ぞーん』と『商品の種類別の数を集計するところ』の間に一行入れ、『商品名ぞーん』直下のセルととなりのセルふたつだけでいいので結合してしまいます。
(この行はその後非表示にしてしまってもかまいません)
一行いれもムリなら、『商品の種類別の数を集計するところ』の『商品名ぞーん』直下のセルととなりのセルで結合をします)
すると、商品名が多すぎるときにはそこの結合部分にひっかかって、貼り付けができなくなります。
貼れない不便が一転、多すぎる貼り付け被害への防波堤になってくれるのです。
ただし、このこと(多すぎだと貼れませんので、数には気をつけてくださいまし)を表の脇にでも書いておかないと、今度は「商品名くっつかない〜なんで〜」という問い合わせに悩まされると思われますのでご注意です。
→→→トップページへお戻りの際はブラウザバックでお願いしますm(__)m