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

教えてください。

下記 図1のようにエクセルに入力されているデーターを
図2のように並べ替える関数か何か良い方法はあるでしょうか?


よろしくお願いいたします。


【図1】
A列    B列  C列  D列  E列  F列  G列

得意先  品番 注文数 品番 注文数 品番 注文数

A商店   AA 5  BB 3 CC 2
B商店   AC 5  BA 2


【図2】
A列    B列  C列  D列  E列  F列  G列

得意先  品番 注文数 品番 注文数 品番 注文数

A商店   AA 5 
A商店   BB 3
A商店   CC 2
B商店   AC 5
B商店   BA 2

教えて!goo グレード

A 回答 (5件)

M言語が分からなくても下記の手順通りに進めればできました。



・データ範囲を読み込む
・先頭行をヘッダー昇格
・得意先列以外を列のピボット解除
・「_」を指定して列の分割(列数「1」列名「品番」)
・インデックス列を追加
・インデックス列に整数除算「2」を実行
・「品番」「値」列を選択して列のピボット(値列指定。集計しない)
・インデックス列を削除

おしまい。
「エクセルデーターの並び替え」の回答画像5
    • good
    • 0

Power Queryを使えばできますけど M言語を理解している必要が


あります。範囲を「データ範囲」と名前定義しているものとして
空のクエリに以下を貼り付け。

let
ソース = Excel.CurrentWorkbook(){[Name="データ範囲"]}[Content],
ヘッダーに昇格 = Table.PromoteHeaders(ソース, [PromoteAllScalars=true]),
列のピボット解除 = Table.UnpivotOtherColumns(ヘッダーに昇格, {"得意先"}, "属性", "値"),
列の分割 = Table.SplitColumn(列のピボット解除, "属性", Splitter.SplitTextByDelimiter("_", QuoteStyle.Csv), {"属性"}),
連番列の追加 = Table.AddIndexColumn(列の分割, "連番", 0, 1, Int64.Type),
注文数列の追加 = Table.AddColumn(連番列の追加, "注文数", each 連番列の追加[値]{[連番]+1}),
行の抽出 = Table.SelectRows(注文数列の追加, each ([属性] = "品番")),
列の削除 = Table.RemoveColumns(行の抽出,{"属性", "連番"}),
列名変更 = Table.RenameColumns(列の削除,{{"値", "品番"}})
in
列名変更

型の変更は別途追加が必要です。

数式でももちろん無理すればできますが バージョン次第なのとそもそ
も計算以外のことを数式でやる意味がないのでお勧めしません。
    • good
    • 0
この回答へのお礼

ありがとうございます

お礼日時:2022/08/18 08:04

関数では無理で、vbaを使えば可能ですがvbaを使う程の事でも無いです。


横に並んでる品番を縦に持ってくる事が主眼だと思いますが。

その部分を別シートにコピペしてピポットテーブルを使えば?
    • good
    • 3
この回答へのお礼

ありがとうございます

お礼日時:2022/08/18 08:04

問題は『本当にやりたい事はこれだけ?』ですかね。


あとから、あれこれと条件を追加される場合もありますので。

>関数か何か

数式はほぼ皆無なので思いつきません(ないのかもですが)が、その他ならマクロで回答してくれる方もおられるのでは?
機能で解決できるかはそちらもほぼ皆無でして・・・
    • good
    • 1
この回答へのお礼

ありがとうございます

お礼日時:2022/08/18 08:04

無いです。


普通に手作業でやった方が早いです。
    • good
    • 1
この回答へのお礼

ありがとうございます

お礼日時:2022/08/18 08:04

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

このQ&Aを見た人はこんなQ&Aも見ています

教えて!goo グレード

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング