- ベストアンサー
EXCELの関数で表を変換する方法
- EXCELの関数を使用して表のデータを変換する方法について解説します。
- 例1の表の各時刻にAやBを自動的に入れると、例2のようにデータを変換することができます。
- また、同様の方法をGoogleスプレッドシートでも実現することができます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
これはエクセルがどうかとい言う前にデータの整理が必要です。 まず、例2の答えは、A4の終了時刻は次のBの開始時刻という意味なのか、それとも10:30の切り上げという意味なのでしょうか。 次にAが2回出てきますが、例2ではどちらのAをとれば良いのは識別できません。同じキーが2つ以上ある場合はそれを判別するデータにしておかなければいずれにしても正解は得られません。 次にデータの構造があります。 例1は次のようにしたほうが、後の式が作りやすいのではないでしょうか。 区分 開始 終了 A 9:00 9:30 B 10:00 10:30 A 11:00 11:30 又例2も下記のようにしたほうがスマートですね。 区分 開始 ~ 終了 A 9:00 ~ 10:00 B 10:00 ~ 11:00 A 11:00 ~ 12:00 この形式にすれば例1から例2を出すのは比較的簡単ですね。 これらのデータの定義や構造をもう一度整理されてから考えたらいかがでしょうか。 少なくとも2つのAの判別はこれでは不可能です。
その他の回答 (2)
- kagakusuki
- ベストアンサー率51% (2610/5101)
>少なくとも2つのAの判別はこれでは不可能です。 「2つのA」を判別する必要は無いと思います。 判別が必要なのは、B列の値の変わり目です。
- kagakusuki
- ベストアンサー率51% (2610/5101)
今仮に、例1で9:00と入力されているセルがA1セル、 例2で9:00と表示されているセルがD1セル、 であるものとします。 又、I列を作業列として使用するものとします。 まず、I1セルに1と入力して下さい。 次に、I2セルに次の数式を入力して下さい。 =IF($B1=$B2,"",COUNT(I$1:I1)+1) 次に、I2セルをコピーして、I3以下に貼り付けて下さい。 次に、D1セルに次の数式を入力して下さい。 =IF(ROWS($1:1)>COUNT($I:$I)-1,"",INDEX($A:$A,MATCH(ROWS($1:1),$I:$I))) 次に、E1セルに次の数式を入力して下さい。 =IF(ROWS($1:1)>COUNT($I:$I)-1,"","~") 次に、F1セルに次の数式を入力して下さい。 =IF(ROWS($1:1)>COUNT($I:$I)-1,"",INDEX($A:$A,MATCH(ROWS($1:1)+1,$I:$I))) 次に、G1セルに次の数式を入力して下さい。 =IF(ROWS($1:1)>COUNT($I:$I)-1,"",INDEX($B:$B,MATCH(ROWS($1:1),$I:$I))) 次に、D1~G1の範囲をコピーして、同じ列の2行目以下に貼り付けて下さい。 以上です。
お礼
参考になりました!ありがとうございました!!