
いくつかのデータを取り出す必要があるテーブルがありますが、その方法がよくわかりません。
以下に表の例を示します。
| 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
列、つまりセル を使用していると仮定します 。次のように入力します。G
G1
=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)
必要に応じて選択して下にドラッグ/塗りつぶします G2
。A2:G2
G
必要に応じて列を非表示にします 。
列 は 、(主に)データを描画するG
の行の(新しいシート上の)インデックスですSheet1
。 が CODE の行を指していない限り、前の行のインデックスより 1 大きくなります。GRADE
その場合、EFFORT
行であると想定し、前の行に 2 を加えます(つまり、行をスキップしますEFFORT
)。 列 および はA
、の同じ列から、 Column でインデックス付けされて D
単純 F
にコピーされます。 Column (EFFORT) の数式は 、現在の学生が 2 つの行を持つ学生であるかどうか(つまり、 CODE を持つ同じ学生を参照しているかどうか)を確認し、そうである場合は、その 2 番目の行のColumn から EFFORT 成績を取得します 。Sheet1
G
E
$G2+1
EFFORT
D
これらのデータについて:
+ 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$10
Effort
Sheet1 のソース テーブル上の列です。
(Sheet2!$C2 = Sheet1!$C$2:$C$10)
一致するものを検索していますFULLNAME
(Sheet1!$F$2:$F$10 = "EFFORT")
一致するものを検索していますCODE
。それは「EFFORT」です
どちらもブール値を返します0
。1
両方の条件が一致する場合(FULLNAME と CODE が一致する行が見つかった場合)、関数1 * 1
に 1 ( )を返しますMATCH
。