advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 19641 for 20�����������������������... (0.004 sec.)
[[20201214152428]]
#score: 2681
@digest: 85c773f4a061d428c312e641e16d3769
@id: 86101
@mdate: 2020-12-17T00:07:20Z
@size: 5955
@type: text/plain
#keywords: margenames (36904), 列始 (10682), strfind (9933), 現順 (9472), rngdata (9195), オレ (6019), 247 (5611), 309 (5024), タsh (4833), 葉様 (4052), aggregate (3755), 稲葉 (3216), 340 (3103), ジ) (2896), 出現 (2321), column (2093), 2020 (2043), ンジ (2032), (オ (1892), 降順 (1878), 火) (1744), iferror (1717), レン (1687), 順の (1652), 要範 (1600), sheet1 (1592), つ上 (1528), 別シ (1269), app (1102), 昇順 (1089), ねむ (968), (稲 (761)
『複数行から同じグループのみを1列に』(オレンジ)
Sheet1のA列に名前が、B列〜G列には0〜500までの数字がランダムに入っています。 このような組み合わせが20行ほど続いているのですが、別シートでA列の名前が同じものを0を飛ばして1行にまとめたいです。 可能なら例えば別シートのA1に名前を入力したらB1以降にずらっと表示されるようにしたいのですが、どんな式を使用したらよいでしょうか? < 使用 Excel:Excel2010、使用 OS:Windows7 > ---- 仮にSheet1のようなデータでSheet2のようなデータを得たい場合 Sheet1 |[A]|[B]|[C]|[D]|[E]|[F]|[G] [1]|A |247| 0| 0| 0| 0| 0 [2]|B | 48| 0| 0| 0| 0| 22 [3]|C | 0|340| 0| 0| 0|309 [4]|D | 0| 0| 0| 0| 0| 0 [5]|E |349| 0| 35| 0|258|426 Sheet2 |[A]|[B]|[C]|[D]|[E]|[F]|[G] [1]|A |247| | | | | [2]|B | 48| 22| | | | [3]|C |340|309| | | | [4]|D | | | | | | [5]|E |349| 35|258|426| | Sheet2の B1=IFERROR(INDEX(Sheet1!$B:$G,MATCH($A$2,Sheet1!$A:$A,0),SMALL(IF(INDEX(Sheet1!$B:$G,MATCH($A$2,Sheet1!$A:$A,0),)>0,COLUMN($A$1:$F$1),""),COLUMN(A$1))),"") 配列数式として確定 B1をコピーして、必要範囲に張り付け でいかがでしょうか? (稲葉) 2020/12/14(月) 18:06 ---- >>稲葉様 すみません、説明が言葉足らずだったようです。 A列の名前には同じものが有り、それを別Sheetで一列にまとめたいのです。 稲葉様が書いてくださった表を例にしますと、 A列の1行目と3行目どちらも名前が「A」だとしたら、 1行目「A」の「247」の後ろC列から「340」「309」と続く形にしたいのですが可能でしょうか? (オレンジ) 2020/12/15(火) 08:25 ---- VBAなら回答できますが、私では関数での回答は難しいですねぇ。 (稲葉) 2020/12/15(火) 10:04 ---- 別シートにまとめる場合、数値の順番は出現順なのだろうか? 値の大きさの昇順あるいは降順でも構わないのだろうか? (ねむねむ) 2020/12/15(火) 10:20 ---- ねむねむさんのつなぎで、ユーザー定義関数 1)標準モジュールに以下のコード Function MargeNames(strFind As String, rngData As Range, cnt As Long) As Variant Dim r As Long Dim c As Long Dim tmp As Variant Dim ans As String Dim app As Application Set app = Application For r = 1 To rngData.Rows.Count tmp = app.Transpose(app.Transpose(WorksheetFunction.Index(rngData, r, 0))) If tmp(1) = strFind Then For c = 2 To rngData.Columns.Count If tmp(c) <> 0 Then ans = ans & Chr(2) & tmp(c) End If Next c End If Next r MargeNames = Split(Mid(ans, 2), Chr(2))(cnt - 1) End Function 2)H列に手入力の名前 3)I1=IFERROR(MargeNames($H1,$A$1:$G$5,COLUMN(A1)),"") 4)I1を必要範囲コピー COLUMN(A1)のA1は、左端の範囲が変わっても(I列始まりが、B列始まりになっても)A1を指定してください。 結果図 |[A]|[B]|[C]|[D]|[E]|[F]|[G]|[H]|[I]|[J]|[K]|[L]|[M]|[N] [1]|A |247| 0| 0| 0| 0| 0|A |247|340|309| | | [2]|B | 48| 0| 0| 0| 0| 22|B | 48| 22|349| 35|258|426 [3]|A | 0|340| 0| 0| 0|309| | | | | | | [4]|C | 0| 0| 0| 0| 0| 0| | | | | | | [5]|B |349| 0| 35| 0|258|426| | | | | | | (稲葉) 2020/12/15(火) 10:51 ---- >>ねむねむ様 出現順の方が都合が良いのですが難しいでしょうか? >>稲葉様 VBAはまったく知識が無いのですが、結果を別シートに表示することは可能でしょうか? (オレンジ) 2020/12/15(火) 14:06 ---- 昇順なり降順の方が式が短くなる。 (最初に思い浮かんだ式が昇順・降順のものだったということもあるが) 出現順の場合。 (ねむねむ) 2020/12/15(火) 14:23 ---- Sheet1に元のデータがあり、別シートのA1セルに名前を入れるとB1セルから右へ表示する。 =IFERROR(INDEX(Sheet1!$A$1:$G$20,INT(AGGREGATE(15,6,ROW($1:$20)*100/(Sheet1!$A$1:$A$20=$A1)+COLUMN($B:$G)/(Sheet1!$B$1:$G$20>0),COLUMN(A1))/100),MOD(AGGREGATE(15,6,ROW($1:$20)*100/(Sheet1!$A$1:$A$20=$A1)+COLUMN($B:$G)/(Sheet1!$B$1:$G$20>0),COLUMN(A1)),100)),"") (ねむねむ) 2020/12/15(火) 14:26 ---- ねむねむさんがいらしゃったので蛇足になりますが、 >3)I1=IFERROR(MargeNames($H1,$A$1:$G$5,COLUMN(A1)),"") 普通の関数みたいに使えるので、↑の式を別シートに置けば大丈夫ですよ。 (稲葉) 2020/12/14(月) 18:06の投稿のSheet2の表に当てはまるように調整してみてください。 Sheet2!B1=IFERROR(MargeNames($A1,Sheet1!$A$1:$G$5,COLUMN(A1)),"") で大丈夫なはず (稲葉) 2020/12/15(火) 14:28 ---- 式を入力後、右へフィルコピーしてみてくれ。 なお、Sheet1のデータは最大20行目までに対応している。 もっと行がある場合は式中の$20をすべて同じ値で大きくしてくれ。 (ねむねむ) 2020/12/15(火) 14:29 ---- ああ、こちらでもいいか。 =IFERROR(MOD(AGGREGATE(15,6,(ROW($1:$20)*100/(Sheet1!$A$1:$A$20=$A1)+COLUMN($B:$G)/(Sheet1!$B$1:$G$20>0))*1000+Sheet1!$B$1:$G$20,COLUMN(A1)),1000),"") (ねむねむ) 2020/12/15(火) 14:36 ---- >>稲葉様 アドバイスありがとうございました。 >>ねむねむ様 いただいた式で望んだ結果になりました。ありがとうございました。 (オレンジ) 2020/12/15(火) 15:19 ---- すみません、追加でSheet2に表示されている数字の上に元データSheet1の表示されている数値の 一つ上のセルを表示させることは可能でしょうか? 稲葉様に書いていただいた表を基にすると、一行追加することになりますが、 Aの場合、247、340、309の上のセルに書いてある文字を表示したいです。 (オレンジ) 2020/12/15(火) 17:03 ---- >元データSheet1の表示されている数値の一つ上のセル 数値セルと同じ列の1行目ではなく一つ上? 例えば340の場合、C1セルの値ではなく340の一つ上、0を表示したいということだろうか? (ねむねむ) 2020/12/15(火) 17:11 ---- >>ねむねむ様 はい、そうです。 (オレンジ) 2020/12/16(水) 08:43 ---- 私の 2020/12/15(火) 14:26の式で INT(AGGREGATE(15,6,ROW($1:$20)*100/(Sheet1!$A$1:$A$20=$A1)+COLUMN($B:$G)/(Sheet1!$B$1:$G$20>0),COLUMN(A1))/100) 部分が対象の行番号になるのでこれを INT(AGGREGATE(15,6,ROW($1:$20)*100/(Sheet1!$A$1:$A$20=$A1)+COLUMN($B:$G)/(Sheet1!$B$1:$G$20>0),COLUMN(A1))/100)-1 とすると一行上を求めることになる。 (ねむねむ) 2020/12/17(木) 09:07 ...
http://www.excel.studio-kazu.jp/wiki/kazuwiki/202012/20201214152428.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97004 documents and 608067 words.

訪問者:カウンタValid HTML 4.01 Transitional