宜しくお願い致します。
A列にランダムな数字が入力されている。(重複する数字はなく、空セルなし)
B列にランダムな数字が入力されている。(重複する数字があり、空セルあり)

ここで、B列に入力されているA列のセルの数字を全部B列降順に抽出したいのです。(以下のような場合です)

   A   B
1  7  200
2  2  100
3  5 
4  3  100 
5  8   50
これを以下のようにする方法を教えて下さい。
200 7
100 2
100 3
 50 8

このQ&Aに関連する最新のQ&A

A 回答 (6件)

こんにちは。

maruru01です。

D、E列に抽出するとします。
D1に、

=IF(COUNT($B$1:$B$10)<ROW(A1),"",INT(LARGE(INDEX($B$1:$B$10+1/(ROW($B$1:$B$10)+1),),ROW(A1))))

E1に、

=IF(COUNT($B$1:$B$10)<ROW(A1),"",INDEX(A:A,ROUND(1/MOD(LARGE(INDEX($B$1:$B$10+1/(ROW($B$1:$B$10)+1),),ROW(A1)),1),)-1))

と入力して、D1:E1を下の行へコピーします。

なお、データ範囲は適宜変更して下さい。
    • good
    • 0
この回答へのお礼

素晴らしい。まさに求めていたのはこれです。質問の内容は簡単に説明しましたが、実はとんでもなく複雑であり、ポイントは次々と行が足されるためにその都度ソートをかける手間を省きたかったのです。

お礼日時:2005/04/09 21:17

#3の回答にはE列の参照セルに勘違いがありました



エラー処理も入れた関数なら以下のように修正してください。

D列:=IF(COUNT(B:B)>=ROW(A1),LARGE(B:B,ROW(A1)),"")

E列=IF(COUNT(B:B)>=ROW(A1),INDEX(A:B,MATCH(D1,D:D,0)+COUNTIF($D$1:D1,D1)-1,1),"")

ちなみに上記の式はどこの行に貼り付けてもOKです。
    • good
    • 0
この回答へのお礼

御回答ありがとうございます。
E列が循環になったのが残念です。でも御検討下さりまして感謝致します。

お礼日時:2005/04/09 21:18

Bに数値が重複していますから、逆のそれに対応する数値を抽出するには関数では無理になります。



どうしても自動でセルに書き出したいのであればVBA、又は、作業域を作るなら出来ると思います。

例えば、

C列に  =IF(B1="","",B1*10+COUNTIF($B$1:B1,B1))  などのように数値を加工したものをつくり
(整数でなかったら別に考える)

D列には  「D1」 =IF(ISERROR(LARGE(C:C,ROW())),"",LARGE(C:C,ROW()))  で並べ替える。

そしてE列で戻し  =IF(ISERROR(INT(D1)/10),"",INT(D1/10))

F列で対応したAの値を書き出す。  =IF(D1="","",INDEX(A:C,MATCH(D1,C:C,0),1))

100に対応する値がひっくり返ってしまいましたが、あとは良いと思います。
    • good
    • 0
この回答へのお礼

御回答ありがとうございます。
なるほどVBAという方法もありますね。

お礼日時:2005/04/09 20:22

D列とE列に抽出するなら



D列:=LARGE(B:B,ROW(A1))
E列:==INDEX(A:B,MATCH(B1,B:B,0)+COUNTIF($D$1:D1,D1)-1,1)
    • good
    • 0

関数でも何でもないですが…



1.B1からA5を範囲選択(アクティブセルB1)

2.降順で並び替えボタンクリック

求めている事と違っていたらごめんなさい

この回答への補足

その方法は私も知っていますが、関数で実施したいのです。

補足日時:2005/04/08 22:53
    • good
    • 0
この回答へのお礼

御回答ありがとうございます。

お礼日時:2005/04/08 22:53

関数ではなくB列に対してオートフィルタで「空白以外のセル」を選択して。

。。
その後B列を降順で並べ替えるのではダメなんでしょうか??

この回答への補足

関数での方法を教えて下さい。

補足日時:2005/04/08 22:55
    • good
    • 0
この回答へのお礼

御回答ありがとうございます。

お礼日時:2005/04/08 22:55

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q9月からのX-LEAGUE(EAST)の日程を教えてください!

タイトルのとおりです。
9月から始まるX-LEAGUEの日程をどうか教えてください!

Aベストアンサー

シーガルズのオフィシャルサイトにありました。
http://www.seagulls.jp/sgs/play/

参考URL:http://www.seagulls.jp/sgs/play/

QA列とB列の重複を抽出したいのですがA列とB列の値は一部だけ同じ文字です。ご教示お願いします。

エクセル初心者です。重複を見つけるのが仕事です。いろいろやってみたのですがうまくできません。
お知恵をお貸しください。

A列には企業名が入力されています。
B列にも企業名が入力されていますが全く同じ文字ではないのです。

たとえばこういうことです。
A1 (有)雪見酒      B1  雪見
A2 株式会社豪雪地帯   B2 (株)豪雪地帯
A3 ゆきかき本舗     B3 (有)ゆきかき本舗

A列にある企業名とB列にある企業名が同じであればセルを塗りつぶすか○を表示させるように
したいのです。
重複を見つけるのが目的なので、ほかの方法でもかまいません。
すみません、A列のセルとB列のセルが全く同じ名前ならば重複が見つけられたのですが
ここから先がどうしてもわからないのです。。。
申し訳ありませんがどうか教えてください。。。

Aベストアンサー

No4です。以下のマクロを標準モジュールへ登録してください。
--------------------------------------------------
Option Explicit
Public Sub 重複チェック()
Dim maxrow1 As Long
Dim maxrow2 As Long
Dim row1 As Long
Dim row2 As Long
Dim nameT1() As String
Dim nameT2() As String
Dim t1, t2 As Variant
t1 = Time
maxrow1 = Cells(Rows.Count, "A").End(xlUp).row '最大行取得
maxrow2 = Cells(Rows.Count, "B").End(xlUp).row '最大行取得
ReDim nameT1(maxrow1)
ReDim nameT2(maxrow2)
Range("C1:" & "D" & maxrow2).Value = ""
Call makeTable(nameT1, "A", maxrow1)
Call makeTable(nameT2, "B", maxrow2)
For row1 = 1 To maxrow1
For row2 = 1 To maxrow2
If Cells(row2, "C") = "" Then
If Mymatch(nameT1(row1), nameT2(row2)) = True Then
Cells(row2, "C").Value = "○"
Cells(row2, "D").Value = row1
End If
End If
Next
Next
t2 = Time
MsgBox ("チェック完了 処理時間=" & Minute(t2 - t1) & "分" & Second(t2 - t1) & "秒")
End Sub
'余分な文字を削除した結果をテーブルに格納する
Private Sub makeTable(ByRef nameT() As String, ByVal col As String, ByVal maxrow As Long)
Dim row As Long
Dim ary As Variant
Dim name As String
Dim i As Long
ary = Array("㈱", "(株)", "株式", "(有)", "有限", "会社")
For row = 1 To maxrow
name = Cells(row, col).Value
For i = 0 To UBound(ary)
name = Replace(name, ary(i), "")
Next
nameT(row) = name
Next
End Sub
'企業名が一致かどうか判定する
Private Function Mymatch(ByVal name1 As String, ByVal name2 As String) As Boolean
Mymatch = False
Dim pos As Variant
pos = InStr(1, name1, name2, vbTextCompare)
If pos > 0 Then Mymatch = True
End Function
-----------------------------------------------------
一致の精度が悪ければその旨補足してください。
(一致すべきものが一致しない、一致してはいけないものが一致している)
100%解決できる保証はありませんが、多少のチューニングは行います。

No4です。以下のマクロを標準モジュールへ登録してください。
--------------------------------------------------
Option Explicit
Public Sub 重複チェック()
Dim maxrow1 As Long
Dim maxrow2 As Long
Dim row1 As Long
Dim row2 As Long
Dim nameT1() As String
Dim nameT2() As String
Dim t1, t2 As Variant
t1 = Time
maxrow1 = Cells(Rows.Count, "A").End(xlUp).row '最大行取得
maxrow2 = Cells(Rows.Count, "B").End(xlUp).row '最大行取得
ReDim ...続きを読む

QThe Art Students League of New Yorkを日本で取り扱っているエージェント

妻が6月から1年間The Art Students League of New Yorkへの留学を考えています。
現在、直接資料請求等行っているところですが、時間もそれほどありませんし、日本にこの学校を扱うエージェントがあるなら、料金しだいではお願いしようかと思っています。
どなたか、この学校の取り扱い実績のあるエージェントをお知りではないでしょうか?
回答よろしくお願いいたします。

Aベストアンサー

エージェントに何を取り扱いしてほしいかによって回答が違ってくると思うのですがどんな 取り扱いをしてもらいたいのでしょうか?

まず私の経験から言うと
取り扱い実績のある学校しか取り扱わないエージェントもありますが 基本的に取り扱いをしていなくても 代行的な作業はどこのエージェントでもしてくれるとおもいます。 反対に実績があっても無理な場合もあると念押しをされるという場合があります。 その場合 第二候補などの学校も同時に申し込みされたほうがいいという場合もあります
実際取り扱い実績がありましても 留学先の学校が入学生徒の人数制限などある学校もあります
 
ご自分で手続きを進められる予定だったみたいですので信頼できるエージェントを探しながら 同時にご自分での手続きも進めていかれたらどうでしょうか?
6月からですのでまだ時間もありますし 金額もかかるので…

The Art Students League of New YorkのHPをちょっと見てみたんですが mail add が見たところでは 見落としてるかもしれませんがないので phone と Fax 番号があったので 直接連絡されてみたらいかがでしょうか?

聞きたい事を書いてFAXすればアドミッションオフィスがしっかりしている学校でしたら すぐに回答はくると思います
たとえば資料請求しているのでしたら それが送付されているかどうかも聞けると思いますし
取りたいクラスの空き状況もきけると思います
資料も至急送付して欲しいとも伝えれますし
速達でともいえると思います
速達の場合追加金額を払えばすぐきますよ

ちなみに
他校ですがアメリカに留学し卒業してから8年以上たいちますが 在学中の資料請求したり 成績証明書を取り寄せる時に必要金額がある場合クレジットカード番号を書いて要求事項を書いてfaxを送ると今でも先日リクエストしましたがすぐに送付されてきてます

student visaも資料をそろえて領事館に行ってその場ですぐとれましたので

お役に立てたかわかりませんが
頑張って手続きしてくださいね

エージェントに何を取り扱いしてほしいかによって回答が違ってくると思うのですがどんな 取り扱いをしてもらいたいのでしょうか?

まず私の経験から言うと
取り扱い実績のある学校しか取り扱わないエージェントもありますが 基本的に取り扱いをしていなくても 代行的な作業はどこのエージェントでもしてくれるとおもいます。 反対に実績があっても無理な場合もあると念押しをされるという場合があります。 その場合 第二候補などの学校も同時に申し込みされたほうがいいという場合もあります
実際取り...続きを読む

QExcel2013 VBA A列とB列の文字をA列とB列とC列に移動させる方法

A列とB列に文字が入っているのですが、下記のようにA列とB列とC列に文字を移動させたいです。
(A列の数字は必ず奇数のA列に入っています。)
VBAのコードを教えて下さい。

例えば
A1 1  B1 cat
A2 空白 B2 猫
A3 空白 B3 dog
A4 空白 B4 犬
A5 2  B5 whale
A6 空白 B6 クジラ
A7 3  B7 rabbit
A8 空白 B8 ウサギ

とデータがある場合

A1 1  B1 cat  C1 猫
A2 空白 B2 dog  C2 犬
A3 2  B3 whale  C3 クジラ
A4 3  B4 rabbit C4 ウサギ

としたいです。

実際、データは、A5196まであります。

Aベストアンサー

No.1です。

>実際、データは、A5196まであります。

前回のコードは一つずつカット&ペーストしていますので
かなりの時間を要すると思います。
↓のコードに変更してみてください。

Sub Sample2()
Dim lastRow As Long
lastRow = Cells(Rows.Count, "B").End(xlUp).Row
Application.ScreenUpdating = False
With Range(Cells(1, "C"), Cells(lastRow, "C"))
.Formula = "=IF(MOD(ROW(),2)=1,B2,"""")"
.Value = .Value
.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End With
Application.ScreenUpdating = True
MsgBox "完了"
End Sub

少しは短縮できると思います。m(_ _)m

No.1です。

>実際、データは、A5196まであります。

前回のコードは一つずつカット&ペーストしていますので
かなりの時間を要すると思います。
↓のコードに変更してみてください。

Sub Sample2()
Dim lastRow As Long
lastRow = Cells(Rows.Count, "B").End(xlUp).Row
Application.ScreenUpdating = False
With Range(Cells(1, "C"), Cells(lastRow, "C"))
.Formula = "=IF(MOD(ROW(),2)=1,B2,"""")"
.Value = .Value
.SpecialCells(xlCellTypeB...続きを読む

Qjapan baseball league β がなくなってしまいました

 japan baseball league β という、野球のオンラインゲームがあって、ずっとやっていたのですが、ある日突然そのゲームがなくなってしまいました。そのページにアクセスしても、「このページは表示されません」みたいなのがでてきます。もちろん更新ボタンをクリックしても変わりません。
 事情を知っている方はぜひ教えてください。

Aベストアンサー

β版だったのでしょうか?
おそらくですが、オープンβでの稼働だったのではないでしょうか?
正式稼働する前にクローズβ(応募して選ばれた小人数)とオープンβ(登録すればだれでもできる)が在るのですが。
遊ばれてたのは、オープンβ版だったのでしょうね。
正式に稼働する前にゲームを公開してる会社の方針が合わなくなり(清算が取れるかとか)
で 正式稼働を止めたのだと思います。
課金制とか課金アイテム制かは、判りませんが
課金できない状態、又は始まってない状態だったら お金が関わらないので、行き成り無くなるかもしれませんまね。

Q下記のようにA列にランダムで出現する数字に対して、B列でその出現間隔を

下記のようにA列にランダムで出現する数字に対して、B列でその出現間隔を計算する関数ってありますでしょうか?A列の数字が何千行となるため、単純な減算?等ではなく関数でやりたいのですが・・・。

(例)
A列 B列
 0
 0
 3
 0
 0
 0
 7  4
 0
 0
10  3
 0
 0

 色々検討しているのですが、うまく行かずに悩んでいます。誰か教えて頂けないでしょうか?。

Aベストアンサー

質問の意図が良く判りませんが、要するに、A列に0以外の数値がある時、その直前(上方向)の数値がある行から何行離れているかを表示できれば良いのででしょうか?
#7行目の前は3行目に0以外の数値があるので、4と表示

それでしたら、B2に↓の式を入れ、下方向にコピーしてください。B1ではなく、B2です。
=IF(A2=0,"",IF(SUMPRODUCT(MAX(ROW(A$1:A1)*(A$1:A1<>0)))=0,"",ROW()-SUMPRODUCT(MAX(ROW(A$1:A1)*(A$1:A1<>0)))))

Q2^a=3^bを満たす整数(正の整数、0、負の整数)はa=b=0のみ。これは2と3に限った話なのか。

2^a=3^bを満たす整数(正の整数、0、負の整数)はa=b=0のみですがこれは2と3に限った話なのか。
それとも
A^a=B^bとおくと
4^a=5^b
2^a=4^b
などのようにA,Bは正の整数ならばなんでもいいのか。それともA,Bは互いに素など条件がありますか。

A,Bともに正の整数でかつA,Bは互いに素のときA^a=B^bを満たす整数a,bはa=b=0のみ。
なのか
A,Bともに正の整数のときA^a=B^bを満たす整数a,bはa=b=0のみ。
なのか。どちらですか。

さらにA,Bは負の整数、0ではダメだと思っていますがこれは正しいでしょうか。

Aベストアンサー

A^a=B^b で、AとBが互いに素でなければ、a=b=0以外が存在します。

2^2=4^1
6^2=3^4

81^a=64^b は、a=b=0 のみ

Q例えば、AさんからGさんまでがA列に縦に並んでいてB列に数字が入っています。B列にある数字の合計をA

例えば、AさんからGさんまでがA列に縦に並んでいてB列に数字が入っています。B列にある数字の合計をA-Gさん別々に出したいんですが簡単なvbaの記述方法はないでしょうか?
お願いします。

Aベストアンサー

こんばんは!

A列のA~Gさんは複数存在しているのでしょうか?
そうであればSUMIF関数で対応できると思いますが、VBAをお望みだというコトですので
一例です。

元データはSheet1にあり、Sheet2に表示するとします。
尚、Sheet1の1行目は項目行でデータは2行目以降にあるという前提です。
標準モジュールにしてください。

Sub Sample1()
Dim lastRow As Long, wS As Worksheet
Set wS = Worksheets("Sheet2")
wS.Cells.ClearContents
With Worksheets("Sheet1")
.Range("A:A").AdvancedFilter Action:=xlFilterCopy, copytorange:=wS.Range("A1"), unique:=True
lastRow = wS.Cells(Rows.Count, "A").End(xlUp).Row
With Range(wS.Cells(2, "B"), wS.Cells(lastRow, "B"))
.Formula = "=SUMIF(Sheet1!A:A,A2,Sheet1!B:B)"
.Value = .Value
End With
End With
End Sub

こんな感じではどうでしょうか?m(_ _)m

こんばんは!

A列のA~Gさんは複数存在しているのでしょうか?
そうであればSUMIF関数で対応できると思いますが、VBAをお望みだというコトですので
一例です。

元データはSheet1にあり、Sheet2に表示するとします。
尚、Sheet1の1行目は項目行でデータは2行目以降にあるという前提です。
標準モジュールにしてください。

Sub Sample1()
Dim lastRow As Long, wS As Worksheet
Set wS = Worksheets("Sheet2")
wS.Cells.ClearContents
With Worksheets("Sheet1")
.Range("A:A...続きを読む

QTr[sl[a]sl[b]]=a・bの計算について

Tr[sl[a]sl[b]]=a・bの計算について教えてください。

aのスラッシュをsl[a]、bのスラッシュをsl[b]とすると下記のようになると思います。
sl[a]={{a0,0,a3,a1-a2 i},{0,a0,a1+a2 i,-a3},{-a3,-a1+a2 i,-a0,0},{-a1-a2 i,a3,0,-a0}};
sl[b]={{b0,0,b3,b1-b2 i},{0,b0,b1+b2 i,-b3},{-b3,-b1+b2 i,-b0,0},{-b1-b2 i,b3,0,-b0}};
この積のトレースは、
Tr[sl[a].sl[b]]=4 a0 b0-4 a3 b3+(a1-a2 i) (-b1-b2 i)+(-a1-a2 i) (b1-b2 i)+(a1+a2 i) (-b1+b2 i)+(-a1+a2 i) (b1+b2 i);
となります。
また、a・bは、下記になると思います。
a・b={{a0 b0-a1 b1-a2 b2-a3 b3,0,0,0},{0,a0 b0-a1 b1-a2 b2-a3 b3,0,0},{0,0,a0 b0-a1 b1-a2 b2-a3 b3,0},{0,0,0,a0 b0-a1 b1-a2 b2-a3 b3}};
このトレースは、
Tr[a・b]=4 a0 b0-4 a1 b1-4 a2 b2-4 a3 b3;
になります。引き算をすると、
Tr[sl[a].sl[b]]-Tr[a・b]=0;
となります。

質問1、
Tr[sl[a]sl[b]]=a・bは、Tr[sl[a].sl[b]]-Tr[a・b]=0;でよろしいのでしょうか?
自分では、納得できませんが?

質問2、
sl[a].sl[b]は、多分、非対角成分が0でないはずですが、トレースを取るということは、対角成分のみを拾い出すことになりますが、非対角成分は廃棄して良いのでしょうか?

Tr[sl[a]sl[b]]=a・bの計算について教えてください。

aのスラッシュをsl[a]、bのスラッシュをsl[b]とすると下記のようになると思います。
sl[a]={{a0,0,a3,a1-a2 i},{0,a0,a1+a2 i,-a3},{-a3,-a1+a2 i,-a0,0},{-a1-a2 i,a3,0,-a0}};
sl[b]={{b0,0,b3,b1-b2 i},{0,b0,b1+b2 i,-b3},{-b3,-b1+b2 i,-b0,0},{-b1-b2 i,b3,0,-b0}};
この積のトレースは、
Tr[sl[a].sl[b]]=4 a0 b0-4 a3 b3+(a1-a2 i) (-b1-b2 i)+(-a1-a2 i) (b1-b2 i)+(a1+a2 i) (-b1+b2 i)+(-a1+a2 i) (b1+b2 i);
となります。
また、a・bは...続きを読む

Aベストアンサー

(1) 4次元運動量の共変成分(添字が下の成分)をp0,p1p2,p3としたときsl[p]の定義は
 sl[p] ≡ p0γ0u + p1γ1u + p2γ2u + p3γ3u
です。質量を0にしたからといってp0が0になったりしません。 4次元ベクトルの内積も
 p・k ≡ p0k0 - p1k1 - p2k2 - p3k3
(2) 質量をmとすると
 p^2 ≡ p0^2 - p1^2 - p2^2 - p3^2 = m^2
質量0はp0^2 - p1^2 - p2^2 - p3^2 が0になるということであって、p1^2 やp2^2 や p3^2のそれぞれが0になることではありません。k^2についても同じ。
(3) Mathematica で虚数単位は小文字のiではなく、大文字の I またはパレットから選んで入力するようです。

QエクセルでA列に数字が入力されていて、その数字が10以上のときに、B列

エクセルでA列に数字が入力されていて、その数字が10以上のときに、B列にAあるいはBという文字を交互に入力したい(画像をご参照ください)のですが、関数を用いて自動的に入力できますか。

Aベストアンサー

B1セルには次の式を入力して下方にオートフィルドラッグします。

=IF(A1>=10,IF(MOD(COUNTIF(A$1:A1,">=10"),2)=1,"A","B"),"")


人気Q&Aランキング

おすすめ情報