次の方法で共有

区切り位置ウィザードを使用して書式を設定すると、セルの内容がずれたり、****位置にコピーされる

Anonymous
2016-10-06T23:54:40+00:00

エクセル2010での現象です。

データのマッチングを行うことが多く、数字を文字列、文字列と認識される数値を数字に置き換えるため、区切り位置ウィザードを使っています。

その際、セルの内容が1セル削除され上がったような状態で表示されることがあり、そのほかの影響がないか不安になっておりました。

簡単に事例が再現できましたので、皆様の知恵をお借りしたく質問させていただきます。

新規にBOOKを開き、C5,C6に数値を入力します。

上記のようにウィザードを実行すると、c5c6の数値は標準でc1c2に文字列のコピーができてしまいます。

ウィザード2の表示先が$C$1に固定されているからじゃないかと思って、いろいろ試してみたのですが、

この後d3d4に入力した場合、はセルは移動せず、正しく文字列になり、セルは移動しません。

例のような単純なデータで発生すればわかりやすく笑いごとで済むのですが、数千行あるデータの一部で発生すると目も当てられません。

よろしくお願いします。

Microsoft 365 と Office | Excel | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

4 件の回答

並べ替え方法: 最も役に立つ
  1. Makapu 91,800 評価のポイント ボランティア モデレーター
    2016-10-08T02:11:03+00:00

    こんにちは。

    手元のExcelで試してみました。

    1. ファイルを新規作成し、列Cを選択してC5,C6に数値を入力した場合。

    「データのプレビュー」の画面上の1行目にC5の数値が表示されているのが分かります。

    結果はC1に1、C2に2が文字列として別の場所にコピーされました。

    2.  続けて列Dを選択してD5,D6に数値を入力してウィザードを実行します。

    今度は**「データのプレビュー」の画面上**に1行目~4行目まで空白行が出来ました。

    (※少し下にスクロールしないと1と2が表示されない。)

    結果はD5に1、D6に2が文字列として上書きされました。

    何回か試した結果、1列全て選択時の「区切り位置ウィザード」では

    ・ファイル新規作成時は最初の入力セルよりも上の空白行が認識されない。

    ・一度ウィザードを実行後は、最初の入力セルよりも上の空白行が認識される様になる。

    事が分かりました。

    また、新規ファイルではまた同じ様になります。

    この、なぜか空白行が初回では認識されない特性(バグ?)を理解した上で、

    回避方法としては

    表示先「$C$1」を先頭のセル「$C$5」に意識的に変更するのが良いのかな?と思います。

    4 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません
  2. Anonymous
    2016-10-18T07:25:05+00:00

    Makapu様

    丁寧にご回答ありがとうございます。

    やっぱり「ばぐ」ですよね

    新規シート以外でも発生してしまうので、困ったものです。

    やはりセル指定するしかないですね

    ありがとうございました。

    3 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません
  3. Anonymous
    2016-10-20T14:18:10+00:00

    >やっぱり「ばぐ」ですよね

    バグというよりもExcelの仕様に近い挙動だと思います。

    Excelでは、多数の行があるため、すべての行(空白行)で処理すると効率的ではないため、空白セルは無視して処理する仕様となっている関数や機能があります。

    例えば列全体でINDEX関数やVLOOKUP関数を指定しても、Excelが入力セルだけを対象に検索して計算負荷を少なくしています。

    一方SUMPRODUCT関数で列全体を指定すると、すべての行が計算対象となりますので再計算に時間がかかるなどの問題が発生します(この場合は列全体を指定してはならない)。

    また、同じ列のとびとびのセルを選択してコピー・貼り付けすると(オートフィルタした状態も同じ)、貼り付け先ではその間の行が詰められて貼り付けられます。

    Excelはパフォーマンスの低下を避けるため、上記のような仕様になっていますので、区切り位置の場合、そのシートの最上部から、最下部のセルの範囲だけを区切り位置の対象にして処理の負荷を少なくしているわけです。

    したがって、1行目からデータのあるシートでは1行目から区切り位置対象になりますが(Excelがデータ範囲を認識する)、例えば他の列の3行目が一番上のデータ行(このシートの1,2行目にデータが全くない)なら、3行目のセルから(対象行の3行目のセルが空白であった場合も)区切り位置の機能が有効になるわけです。

    2 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません
  4. Makapu 91,800 評価のポイント ボランティア モデレーター
    2016-10-20T22:46:24+00:00

    マックちゃんさん、ご教授ありがとうございます。

    Excelのパフォーマンスについて大変勉強になります。

    「区切り位置ウィザード」について不思議に思いましたのは、毎回同じ挙動ですと納得なのですが

    ・実行1回目では空白行を認識しない

    ・同じシート上であれば2回目以降は一度上の行にデータがあったと認識すると

    行と列を削除をして一見上の行にデータが何もない状態から開始しても

    上の空白行を認識するように変化するというところです。

    (先の例で言いますと、C列、D列を全て削除した状態から再度データを入力し、ウィザードを開始すると

    上の空白行が認識されます。)

    Excelがデータの存在するセルからデータ範囲を認識するのが本来なのであれば、

    2回目以降の挙動はExcel側で意図しない動作(バグ)になるのでしょうか?

    上の行にデータが存在した、というデータがどこかにメモリされているのでしょうか・・・?不思議です。

    (なんかすごい思い違いをしていましたらすみません。。。)

    1 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません