Excel 2010 データの移動

Excel 2010 データの移動

いくつかのデータを取り出す必要があるテーブルがありますが、その方法がよくわかりません。

以下に表の例を示します。

|   A    +   B    +       C       +   D   +   E    +   F    |
|--------+--------+---------------+-------+--------+--------|
| FNAME  | LNAME  | FULLNAME      | GRADE | EFFORT | CODE   |
|--------+--------+---------------+-------+--------+--------|
| FNAME1 | LNAME1 | FNAME1 LNAME1 | A     |        | GRADE  |
|--------+--------+---------------+-------+--------+--------|
| FNAME1 | LNAME1 | FNAME1 LNAME1 | H     |        | EFFORT |
|--------+--------+---------------+-------+--------+--------|
| FNAME2 | LNAME2 | FNAME2 LNAME2 | C     |        | GRADE  |
|--------+--------+---------------+-------+--------+--------|

必要なのは、労力グレードを労力列の別の行に移動することです。以下に例を示します。

|   A   +   B   +     C     +   D   +   E    +   F    |
|-------+-------+-----------+-------+--------+--------|
| FNAME | LNAME | FULLNAME  | GRADE | EFFORT | CODE   |
|-------+-------+-----------+-------+--------+--------|
| NAME1 | NAME1 | NAMENAME1 | A     |        | GRADE  | ←      To column E here         ←
|-------+-------+-----------+-------+--------+--------|                                 ↑
| NAME1 | NAME1 | NAMENAME1 | H     |        | EFFORT | → Move this Grade from column D ↑
|-------+-------+-----------+-------+--------+--------|

私が望むものの例を挙げると…

|   A    +   B    +       C       +   D   +   E    +   F    |
|--------+--------+---------------+-------+--------+--------|
| FNAME  | LNAME  | FULLNAME      | GRADE | EFFORT | CODE   |
|--------+--------+---------------+-------+--------+--------|
| FNAME1 | LNAME1 | FNAME1 LNAME1 | A     | H      | GRADE  |
|--------+--------+---------------+-------+--------+--------|
| FNAME2 | LNAME2 | FNAME2 LNAME2 | C     |        | GRADE  |
|--------+--------+---------------+-------+--------+--------|

問題は、すべての学生が努力評価を持っているわけではないということです。努力評価を持っていない場合は、その行はありません。また、コメントなどを含む追加の行がある場合もあり、データは一定ではありません。

答え1

新しいシートで、ヘッダー ( ) をコピーし、補助列に 1 を入力します。ここでは、 A1:F1列、つまりセル を使用していると仮定します 。次のように入力します。GG1

=IF(INDEX(Sheet1!A:A, $G2)<>"", INDEX(Sheet1!A:A, $G2), "")

に A2ドラッグ/フィルして右にドラッグ/フィルし、 にします F2。次に E2に変更します。

=IF(INDEX(Sheet1!F:F, $G2+1)="EFFORT", INDEX(Sheet1!D:D, $G2+1), "")

入力して

=IF(INDEX(Sheet1!F:F, $G1+1)="GRADE", $G1+1, $G1+2)

必要に応じて選択して下にドラッグ/塗りつぶします G2A2:G2

G必要に応じて列を非表示にします 。

列 は 、(主に)データを描画するGの行の(新しいシート上の)インデックスですSheet1 。 が CODE の行を指していない限り、前の行のインデックスより 1 大きくなります。GRADEその場合、EFFORT行であると想定し、前の行に 2 を加えます(つまり、行をスキップしますEFFORT)。 列 および はA、の同じ列から、 Column でインデックス付けされて D単純 Fにコピーされます。 Column (EFFORT) の数式は 、現在の学生が 2 つの行を持つ学生であるかどうか(つまり、 CODE を持つ同じ学生を参照しているかどうか)を確認し、そうである場合は、その 2 番目の行のColumn から EFFORT 成績を取得します 。Sheet1GE$G2+1EFFORTD

これらのデータについて:

+   A   +   B    +      C       +   D   +   E    +   F    +
+-------+--------+--------------+-------+--------+--------+
| FNAME | LNAME  |   FULLNAME   | GRADE | EFFORT |  CODE  |
+-------+--------+--------------+-------+--------+--------+
| John  | Smith  | John Smith   | A     |        | GRADE  |
| John  | Smith  | John Smith   | H     |        | EFFORT |
| Mary  | Jones  | Mary Jones   | B     |        | GRADE  |
| Isaac | Newton | Isaac Newton | A+    |        | GRADE  |
| Isaac | Newton | Isaac Newton | C     |        | EFFORT |
+-------+--------+--------------+-------+--------+--------+

次のような結果が得られました:

スプレッドシート

答え2

ピボットなしでもそれを処理できます。

あなたの例に基づいて、これをあなたのEffortコラムに載せてくださいSheet2:

=INDEX(Sheet1!$D$2:$D$10, MATCH(1, (Sheet2!$C2 = Sheet1!$C$2:$C$10) * (Sheet1!$F$2:$F$10 = "EFFORT"), 0))

Ctrl+ Shift+を押してEnter配列数式を挿入します。

説明

Sheet1!$D$2:$D$10EffortSheet1 のソース テーブル上の列です。

(Sheet2!$C2 = Sheet1!$C$2:$C$10)一致するものを検索していますFULLNAME

(Sheet1!$F$2:$F$10 = "EFFORT")一致するものを検索していますCODE。それは「EFFORT」です

どちらもブール値を返します01両方の条件が一致する場合(FULLNAME と CODE が一致する行が見つかった場合)、関数1 * 1に 1 ( )を返しますMATCH

関連情報