準・究極の選択

画像のシートのように、A列からF列(タイトル行:X1からX6)には、1から43までの数字が入力されています。

そこで、A列からF列に入力された数字のうち、10台の数字を若い順に、G列からJ列(タイトル行:「10台1個目」から「10台4個目」)に自動入力したいです。

ここで、質問です。

G列からJ列のセル(例:G2セルからJ2セル)には、どのような計算式を入力すればよいでしょうか。

「入力された数字のうち、10台の数字を若い」の質問画像

A 回答 (6件)

こんにちは



なんだか、荒れてますなぁ・・・


ご質問に添付の図では、A~F列の値がA列から昇順になっているので、
>10台の数字を若い順に、~~
というのが、
 ・値の小さい順に抽出
 ・出現順に抽出(列番号が小さい順)
のどちらで考えれば良いのか、はっきりしません。
(ご提示の例だと、どちらでも同じ結果になるので)
いずれにしても関数で可能と思いますが、両方同時は無理ですね。


私には難しいことはわからないので、素直に関数式を用いて…
お求めの内容が前者である場合は、G2セルに
=IFERROR(AGGREGATE(15,2,INDEX($A2:$F2/($A2:$F2>9)/($A2:$F2<20),,),COLUMN(A1)),"")

後者の場合は、G2セルに
=IFERROR(INDEX($A2:$F2,AGGREGATE(15,2,INDEX(COLUMN($A2:$F2)/($A2:$F2>9)/($A2:$F2<20),,),COLUMN(A1))),"")

の式を入れて、必要範囲にオートフィルするのではいかがでしょうか?
    • good
    • 0

あぁ 失礼、


映像添付を 忘れていました、

済みません。
「入力された数字のうち、10台の数字を若い」の回答画像5
    • good
    • 0

"10台"G/標準"個目"


に書式設定した範囲 G1:J1 の左から連続数値 1、2、3、4 を入力した後で、次式を入力したセル G2 を右方および下方にオートフィル
=IFERROR(INDEX($A2:$F2,SMALL(IF(INT($A2:$F2/10)=1,COLUMN($A2:$F2)),G$1)),"")
【お断り】上式は必ず配列数式として入力のこと
「入力された数字のうち、10台の数字を若い」の回答画像4
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2019/06/05 08:45

〉数式では難しい



適当な事を 口に、
される方が 居たものですよね、

此は とても、
基本的な 内容なので、

知らない=基礎を押さえられていない

詰まり、
素人の 戯言です。


VBAは エクセル素人には、
教わるな、
との 諺が、
あります。


エクセル素人なのですから、
VBAに付いても、
語らないで 欲しいものです。

コードを 見ても、
但の VBコードで、
VBAのものでは あらず、

目を しかめる、
ものですしね。

さて、
回答ですが、

一般式、
=IFERROR(OFFSET($A2,0,SMALL(INDEX(($A2:$F2<10)*10^10+($A2:$F2>19)*10^10+COLUMN($A2:$F2)-1,,),COLUMN(A1)),1,1),"")

此を セルG2に、
入力、

其の後 必要範囲に、
フィルすれば 完了です。


但し、
指定範囲外のものを 極大化して、
表示外に 弾き飛ばす。

非表示対象値を 極大化して、
OFFSET構文 アドレッシング対象外に、
弾き出し、
エラーを 誘発させて、
処理する。

因みに 此は、

正に、
私か 作成した、
やり方で、

私の 公開以前、
既に 知られたものでも、
公開されているものでも、
ありません。


私の オリジナルで、

故に、
相応に 誰でも、
勘案し得るものでは、
ない事より、

私に 著作権が、
帰属しています。


使用に 際しては、
私の 指定した、
使用上の ルールに、
従う限り、

金品等 一切を、
請求するものでは ありませんが、

真逆に、
従わなかった場合は、
賠償を 請求します。


では、

使用の ルールですが、

此の、
やり方、考え方を、
何時、何処で、
どのIDの ものの、
提示から 知ったか、

使用時には、
誰の 目にも、
灼かに 伺えるよう、
詠う事と、

其れを見たものが、
此の 義務を、
引き継ぐように 指定する事を、
義務付けます。


此を 怠らない限り、
使用は フリーです。

反した場合は、
賠償を 頂きます、

其れだけの事です。


此、
本来は 履行する方が、
常識な事なので、

態々 此の様に、
書かないと いけない、

そんな現状が、
狂気的な 異常状態なのですが、

然りとて 書かないと、
誰も 履行しないので、

お目汚しには なるかとも、
思いましたが、

書き込まして 頂きました。


又、
こうでも しておかないと、
間違えた 使用法により、
困惑されているような 事態を、
目の辺りに した時、

「其れ 私が、
作り出した ものなので、
私なら 判りますよ。」
と 投げかけた際に、

狂人扱いを 真面に、
あからさまに されるのですよ、

此は 困るので、
防ぎたいのです。


本来 賠償等、
求めては 居ませんが、

此の国の 法律体系では、
規制を 個人が、
貼る場合は、

賠償の 形しか、
取れない、

と 思っているもので、
こう しています。


ご理解を 頂けましたなら、
又、
お役に 立てて、
居たならば

幸いです。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2019/06/05 08:45

こんにちは!



画像の配置だとG2セルに
=IFERROR(SMALL(IF(INT($A2:$F2/10)=1,$A2:$F2),COLUMN(A1)),"")

配列数式なのでCtrl+Shift+Enterで確定!(←必須★)し
フィルハンドルで列・行方向にコピーしてみてください。m(_ _)m
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2019/06/05 08:45

数式では難しいのではないでしょうか


一応コード作ってみました
Public Sub Sample()

Dim intR As Integer
Dim intC As Integer
Dim tblRnc() As Integer
Dim intD As Integer
Dim intL As Integer
Dim intB As Integer

intR = 2
With ActiveSheet
Do Until .Cells(intR, 1).Value = ""
intD = 0
Erase tblRnc
ReDim tblRnc(6)
For intC = 1 To 6
If .Cells(intR, intC).Value >= "10" And _
.Cells(intR, intC).Value <= "19" Then
intD = intD + 1
tblRnc(intD) = .Cells(intR, intC).Value
For intL = intD To 1 Step -1
If intL = 1 Then
Else
If tblRnc(intL) < tblRnc(intL - 1) Then
intB = tblRnc(intL)
tblRnc(intL) = tblRnc(intL - 1)
tblRnc(intL - 1) = intB
End If
End If
Next intL
End If
Next intC
For intL = 1 To intD
.Cells(intR, intL + 6).Value = tblRnc(intL)
Next intL
intR = intR + 1
Loop
End With

End Sub
お試しください
    • good
    • 0

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