下の表を数式で右(G)のように並べ替えたいのですがご教授お願い致します。
A B C G
1 0 0 1
2 0 0 2
3 1 a a
4 0 0 3
5 1 b 4
6 0 0 b
7 0 0 5
8 0 0 6
9 1 c 7
10 0 0 8
-------------------------------- c
-------------------------------- 9
-------------------------------- 10
どうしても4の処で引っかかってしまいます。
よろしくお願いいたします。
------- はG列が左に寄ってしまうので書いてます。
無視して結構です。
No.4ベストアンサー
- 回答日時:
ん?…
こちらではきちんと並んだのですが…
D列は上から順に1,2,4,5,7,8,9,10,12,13と表示されてますでしょうか?
G列の
=IF(COUNTIF(AD:AD,ROW())=0,INDIRECT("AC"&MATCH(ROW()-1,AD:AD,FALSE)+1),MATCH(ROW(),AD:AD,FALSE))
は入力ミスなく一致していますね?
aが入力されているのはC3、bはC5、cはC9で、その左は1、B・C列の他の行は0、A列は行番号ですね?
とりあえず中身を分解して確認してみましょう。
表示のずれている3行目の、どの列でもいいので、次の式を入力して、それぞれに表示されるものを教えてください。
=COUNTIF(D:D,ROW())
これはD列にその行番号が含まれている数を算出しています。3は含まれていないハズですので0であれば正解です。
=MATCH(ROW()-1,D:D,FALSE)
これは1つ上の行の行番号がD列の何行目にあるかを表示させる式です。
2行目の2なのでD2で一致し、2が表示されれば正解です。
=INDIRECT("C"&MATCH(ROW()-1,D:D,FALSE)+1)
これは先ほどの2に1を加えて3とし、C3のデータを表示させるものです。
C3はaであるので、aが正解です。
=MATCH(ROW(),D:D,FALSE)
これはCOUNTIFが0でなかった場合の式です。
なので確認する必要はないと思いますが、
そのセルの行番号をD列で検索し、何行目にあるかを表示します。
3はD列にないはずなので、エラーが正解です。
ありがとうございます。
表が1つずつ下がっていました。
上げたら順番通りに並びました。
感激です。
あとは実務に合わせて改良するだけです。
本当にありがとうございました。
No.3
- 回答日時:
失礼しました。
説明のみでD列の式が書けていませんでしたね。D1=ROW()+SUM(B$1:B1)
これを2行目~データのある一番下の行までコピーします。
D列が使えない場合は、好きな列に変更し、
↓の式の3つの『D:D』を、その列に変更してください。
G1=IF(COUNTIF(D:D,ROW())=0,INDIRECT("C"&MATCH(ROW()-1,D:D,FALSE)+1),MATCH(ROW(),D:D,FALSE))
これを2行目~『A列のデータの数+C列の0でないデータの数』行目までコピーします。
具体的に何行目まで必要かは『=MAX(A:A)+SUM(B:B)』とどこかのセルに入力すればわかります。
たびたび、ありがとうございます。
ご指示通りDとGにコピーしたのですが
どうしても3とaの3の方が先に来て3の次にa
となってしまいます。
123a45b・・・
aを先にして
12a34b5・・・
としたいのですが。。
なんか胃が痛くなってきました。(T_T)
No.2
- 回答日時:
こんばんは!
規則性がよく判らないのですが・・・
お示しの配置通りになるようにやってみました。
VBAでの一例です。
Sub Sample1()
Dim i As Long, c As Range
Range("A:A").Copy Range("G1")
For i = Cells(Rows.Count, "A").End(xlUp).Row To 1 Step -1
If Cells(i, "B") <> 0 Then
Set c = Range("G:G").Find(what:=Cells(i, "A"), LookIn:=xlValues, lookat:=xlWhole)
c.Insert shift:=xlDown
c.Offset(-1) = Cells(i, "C")
End If
Next i
End Sub
※ マクロを実行すると
とりあえず質問文通りの配置になると思います。m(_ _)m
凄いですね。
ボタンに張り付けて実行したんですが完璧です。
BC列を上下させて変更しても対応出来ています。
ただ、マクロではワンクリックいるので数式でお願いしたいです。
実務ではもっとややこしいので参考にしながら変更しようと思っているものですから。
今の私ではマクロをいじれません。
お宝を前に恐縮です。
No.1
- 回答日時:
ぱっと見でどういう並べ方をしたいのかが分かりにくいですが、
C列が0以外の場合はB列が1になっていて、
A列は行番号が表示されている、
G列には、C列に0以外のデータがあった場合に、
「その行の行番号と、その1つ前の行番号の間」にC列のデータを挟み、
上から順に並べたい。
ということでよろしいでしょうか?
D列を作業用として説明します。
D列が他のデータなどで使えない場合は、H列でもZ列でも空いている列に置き換えてください。
D列に、その行の行番号をG列の何行目に表示させたいのかを表示させましょう。
具体的には、その行の行番号に、その行までのB列の合計を足せばいいですね。
(5行目であれば5+2で7、G列の7行目が5ですね)
そして、G列では、そのセルの行番号がD列にあった場合、それが何行目であるかを、
D列になかった場合は、その上のセルの行番号があった行の1つ下の行のC列のデータを、
それぞれ表示すればいいわけです。
C列にデータが連続であったとしても、必ず間に行番号を挟むハズなので。
=IF(COUNTIF(D:D,ROW())=0,INDIRECT("C"&MATCH(ROW()-1,D:D,FALSE)+1),MATCH(ROW(),D:D,FALSE))
先ほど説明した内容を式にしたものです。
"C"&MATCH(ROW()-1,D:D,FALSE)+1 の部分は
"C"&『1つ上のセル』+1 (『1つ上のセル』はセル番地で指定。G2に入力する式であればG1)
としたいところですが、1行目にもデータがあるようなので、
(0行目のセルを指定できないため)1行目だけ式を変換させる必要が生じ、
式を統一するために、あえて同じ内容の式を作り直しています。
(ROW()は入力したセルの行番号を取得するので、-1を加えています)
そのセルの行番号で、対象行全体を検索する式になっていますので、G列全ての式が上記の式そのままとなります。
早速のご返答ありがとうございます。
優しい文章であるにも関わらず私にはよくわからず只今どうすればいいのか四苦八苦しております。
理解するのに時間がかかります。
もう少しお待ちください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) Excel 2列分のDATAの並べ替え 1 2023/01/01 17:12
- Excel(エクセル) Excel 郵便番号順に並び変えたい 同じ番号が複数あるとき 4 2022/04/28 18:35
- Excel(エクセル) Googleスプレッドシートの割合の関数と円グラフの並べ替えについて 1 2022/07/22 17:31
- その他(Microsoft Office) 1の行を固定した上でVBAを用いて日付順に自動並べ替え 2 2022/06/06 15:09
- Excel(エクセル) Excelでの並べ替えについて 5 2022/11/26 22:18
- Excel(エクセル) Excel2007での条件付き書式について 6 2023/05/02 10:56
- Excel(エクセル) 列の複数ある空白セルを飛ばして、セルに並べて表示したい 3 2023/02/12 16:49
- Excel(エクセル) DATEDIFで作成した勤務年数の並べ替えがうまくいかない 3 2023/07/31 17:09
- Excel(エクセル) Excelグラフのラベルオプションの並べ替えは可能ですか。セルの値を最後にしたいのですが。 1 2022/06/05 10:45
- Visual Basic(VBA) Excelで横書き50行の漢字テストデータを縦書きのテスト問題にしたい。 6 2022/04/27 15:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル初心者です 関数の入れ...
-
【関数】先頭だけにある、半角...
-
エクセル 白黒印刷で白線を印刷...
-
Excelのチェックボックスの使い...
-
【関数】適切な文字数の数字を...
-
Excelのpivotについて質問です
-
Excel ピボットテーブルで日付...
-
LOOKUP関数を使えばいいのでし...
-
エクセル関数を教えてください
-
エクセルのセルに同じ大きさの...
-
UNIQUE関数が使えないバージョ...
-
excelの不要な行の削除ができな...
-
エクセルで「-0.0」と表示さ...
-
時間によってファイル名が変わ...
-
WPS OFFICEでの縦書きについて
-
エクセルの関数について教えて...
-
Aというブックの1というシート...
-
【マクロ】シート名を取得する...
-
VBA Private Sub Worksheet_Cha...
-
VBA、Excelのworkbook.open に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報