プロが教える店舗&オフィスのセキュリティ対策術

Excel365(2019)で、画像のように手当1,3,4,6とバラバラの項目が一列に入っているのを、手当1は一列目、手当2は2列目と整列させたいです。

省略していますが、手当は人によって1つの人もいれば、8個項目ある人もいます。
また、名前も画像ではすべて2行ですが、人によって30行だったり3行だったりします。

VLOOKUPではAさんの手当1を出せても、BさんDさんの手当1を出すことができず、IFでも同様、その列しか見れないので困っています。

「バラバラに入った項目を整列させる方法」の質問画像

A 回答 (2件)

こんばんは



詳細部分でわからない点がありますが、・・・

基本的には、左側の1行のデータを右側の1行に編集し直せば良いということと解釈しました。
もしそうなら、比較的簡単にできそうに思います。

左1行内に同じ手当が重複して存在しないようであるなら、右側のタイトル行の手当の種類で左側を検索してMATCHとINDEX関数で参照すれば可能でしょう。
同じ手当が重複する可能性があって、その場合は合計を求めれば良いというような場合は、代わりにSUMIF関数を利用することで可能と思います。
重複しない場合でも、この方法は使えると思います。

いずれの場合も対象が存在しない時は、0ではなく空白表示が必要なようですので、存在がない場合の条件処理で空白にする必要があるのかもしれません。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
INDEXとMATCH、頭にはあったのですが、苦手意識があって何度説明を読んでも頭に入らず…使い方がイマイチでした(;'∀')
めっちゃ便利な関数ですね(*'▽')

お礼日時:2020/02/27 21:41

INDEX関数とMATCH関数の組み合わせで参照できるのでは。


https://office-hack.com/excel/index-match/

元表と整理したい表との関係は、行の並びは常に同じですよね。
元表のA2セルと整理したい表H3セルの位置関係は常に同じならば、
H3セルには
 =A2
で参照できます。
そのままフィルハンドルで下までドラッグすれば、順に並びます。

整理したい表の項目名と一致する同行のセルを求めれば済むので、
 =MATCH(I$2,$A2:$E2,0)
で項目名と一致する列を取得できます。
金額は常に項目名の右横なので、
 =MATCH(I$2,$A2:$E2,0)+1
で金額列を取得できます。

INDEX関数で指定列の値を取得すれば、金額が表示されます。
 =INDEX($A2:$E2,1,MATCH(I$2,$A2:$E2,0)+1)
このままだと、項目名が一致しないセルにエラーが表示されるので、
エラー処理をします。
 =IFNA(INDEX($A2:$E2,1,MATCH(I$2,$A2:$E2,0)+1),"")
これで、質問画像と同じようなものが作成できます。

今回の場合は、A列の行番号と、整理したい表の行番号が常に同じ
相関関係にあるので、範囲を行と関連するようにすることで、列のみ
一致する場所を取得できれば、済むと思います。
A列が同名で並んでいない場合は、もっと複雑になります。

別シートにする場合でも、同じようにできると思います。
https://whiteleia.com/index%E9%96%A2%E6%95%B0-ma …

関係性を理解できれば、応用できると思います。
「バラバラに入った項目を整列させる方法」の回答画像1
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
貼って頂いたURL、まさしくそれを私も見ていました!!
その表は規則的にならんでいるからなんか違うな~と流し読みしてました(;'∀')

INDEXとMATCHはほわぁ~んと使っていたので、めちゃくちゃ便利で驚きました!!!

ありがとうございます!

お礼日時:2020/02/27 21:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!