- ベストアンサー
指定値以外の行データを抽出・転記する方法について
- 質問者は、指定値以外の行データを抽出・転記する方法についてアドバイスを求めています。
- 具体的には、Y列からE2の年月以外の行のE列・F列・S列・T列のセルを別シートに転記したいとのことです。
- また、Y列がE2の年月でC列が遅・再という文字列の行のE列・F列・S列・T列のセルも別シートに転記したいと考えています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
No.1 です。 >……、宜しくご教授頂ければと思います。 こちらでは様々な想定をしながら No.1 の回答を書きましたが、どれが質問者さんの求める内容で、どれがそうではないのか、分からずに困っています。どれが当たっているのか、いないのか…。もう少し情報を開示してください。 具体的な値の例、項目名、シートの構造、などなど、漠然としていてコードを書きづらいです。どのような結果が欲しいのかについても、不明なままです。例えば、どんな値になってほしいのか、何列欲しいのか、結果シートは新規に挿入するのか、とか。逆にそういった情報がたくさんあれば、ムダのない効率の良いコードが書けます。 >他スタッフに配布し、使用して頂かなければならないので、自動化した…… どのように Excel ファイルを使用するのでしょうか。同じ元データに対して、様々な方法で抽出を繰り返すのですか? >……をマクロ記録で行うと……となり、他の年月のデータでは意図した操作の実行がなされないので、VBAであれば出来るような気がしていますが、…… どのような状況かよく分かりません。 いずれにしても、手作業でできないことであっても VBA であればできるのかというと、そうでないことが多いです。当然ですが、Excel の機能を超える内容の作業をマクロにより Excel に要求しようとしても、答えてはくれません。 多くの場合、マクロのメリットは、自動化されるとか、速く大量にデータ処理できるということです。 予め数式をセルに仕込んでおけば、あえてマクロを持ち出さなくても用は足りるということも多いです。マクロを有効にしなくてもそのファイルを使えるという点も、メリットとして挙げられるでしょう。 >……を入れシリアル値に変換し作成しております。 問題ありません。が、他のデータやシートの内容が分からないので、何をしてよいやら。No.1 の内容ではお役に立たないならば、どうなればよいのかお示しください。 >また年月やデータ内容、行数等は変わることがあります。 具体的な情報をお待ちします。変わるのであれば、その範囲を知る必要があります。数値だけでなく文字列や、配置についてもそうです。 >……、何度か試行錯誤を繰り返しておりますが、やはり…… 質問者さんはどんなことをしようとされたのか、という情報も提供してくだされば、回答者にとっては、求められていることを把握するヒントになります。
その他の回答 (1)
- MarcoRossiItaly
- ベストアンサー率40% (454/1128)
作業の基本的な流れとしては、(1)欲しいデータのうち現在シート上に存在していないものは置換あるいは数式を使って新しい列の各行に作製、(2)行の絞り込み条件(判定の基準)として使うためのデータがない場合も数式を使って新しい列の各行に作製、(3)オートフィルタによって絞り込み、(4)絞り込まれた状態の表をコピーして別シートに貼り付け、という手順が、素直かつ簡単だと思います。同じことをマクロで行うことも勿論できますが、自動化する必要がないのであれば、さっさと手作業で行ったほうが早いでしょう。 オートフィルタを設置するには、(G 列~ R 列が空白といった状況の場合においては)まず B 列~ Y 列の表全体を選択。次いで、データタブの「フィルタ」をクリック。表示されるボタンをクリックすることにより、列ごとに特定データを指定し、そのデータがある行のみに絞り込むことができます。 例えば「2014年8月」というセルにカーソルを置くと、そのときには数式バーに「2014/8/1」が表示されるようなデータの状態である場合ですが、ボタンの中に「日付フィルタ」というメニューがあり、「指定の値より前」などが指定できます。数値や文字列の列のボタンであれば、ボタンの中の「数値フィルタ」、「テキストフィルタ」メニューで「指定の値に等しい」、「指定の値を含む」などが指定できます。 「指定の値に等しい」では、OR 条件として 2 条件を同時に指定できます。だから、「遅」という行のみ、「再」という行のみ、あるいは「遅または再」という行のみに絞り込むことができます。 同時に複数の列の条件で絞り込む(AND 条件で絞り込む)こともできます。だから、「E2の年月」というのと「遅または再」という 2 条件を同時に満たす行のみに絞り込むことができます。 ソート(並べ替え)は、してもしなくても、どちらでも構いません。 「変更後の E 列の上 4 桁」というのが、予め決まっている 1 種類の値なのであれば、置換の機能が早いです。データをコピーして他の列に貼り付け、貼り付けた列において置換をかけます。先にセル範囲(列全体とか)を選択している状態で、「ホームタブ > 検索と選択 > 置換」をクリックするか、またはショートカットキー Ctrl+H です。 置換の注意点としては、E 列の上 4 桁が「1400」であったとして、8 桁の数字列に含まれる他の部分(下 4 桁)にも「1400」があった場合、それも置換されてしまうという点です。そのようなデータの有無は、オートフィルタなどにより、予め確認してください。あるならば、それだけは個別にデータ処理してください。 E 列の上 4 桁を、行ごとに異なる値、例えば T 列の値に置き換えたいという場合は、次式。 =0+(t4&right(d4,4)) ……元データが 8 桁の数値である場合 =t4&mid(d4,5,9^9) ……元データが 4 桁の数字から始まる文字列である場合 =if(isnumber(d4),0+(t4&right(d4,4)),t4&mid(d4,5,9^9)) ……上の 2 種類のデータが混在する場合
補足
アドバイス有難う御座います。 説明不足で申し訳ありません。 他スタッフに配布し、使用して頂かなければならないので、自動化したデータが必要なのです。 フィルターで絞り込んで選択コピーして貼り付けをマクロ記録で行うと指定行のコピー貼り付けの記録となり、他の年月のデータでは意図した操作の実行がなされないので、VBAであれば出来るような気がしていますが、VBAの知識が初歩なので答えが出せずにおります。 B列の年月がシリアル値ではない為、E2セルに文字列の年月データのC2セルを元に変換する{=DATEVALUE(C2&"1日")}、Y列に{=DATEVALUE(B4&"1日")}を入れシリアル値に変換し作成しております。 また年月やデータ内容、行数等は変わることがあります。 昨日より、何度か試行錯誤を繰り返しておりますが、やはり私の未熟な知識では答えが出せずにおります。 お時間のある時で構いませんので、宜しくご教授頂ければと思います。
お礼
お返事頂き有難う御座います。 「宜しくご教授…」という表現は日本語が間違っていますね…。 「宜しくお願い致します」のみでは足りないと、修正し付け加えたら、このようなおかしな表現のまま補足をしてしまいました。申し訳ないです。 補足情報に転記先シートの画像をつけたかったので、改めて追記として質問を掲載致しました。 http://okwave.jp/qa/q8725926.html 宜しくお願い致します。