エクセル2000での質問です。
AとBのファイル(表の形式は全く同じ)があるとします。
AとBを比較して”Aに対してBのXXのデータが合わない”等が分かるようにできろのでしょうか?
例)ファイルA  ファイルB
  1       1
  2       2
  3       5
ならば、Aには”5”がなくてBには”3”がない事を抜き出すなり、別表にするなりの、何らかの方法で分かるようにしたいのですが・・・。

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

A 回答 (4件)

>照合したいデータ同士が順不同で並んでいた場合や、


>ファイルAとファイルBのデータの数が違ってもこの方法は可能ですか?

セル単位で比較しているだけですから基本的には可能です。
回答した方法は算式の貼り付け位置を、何か入力してある場所に限定しようとしていますので、ファイルCに多めに貼り付ければいいでしょう。
例えば、ファイルAはA1:B500、ファイルBがB2:C600を使っていれば、A1:C600に貼り付ければ違いを表示します。
    • good
    • 0
この回答へのお礼

いろいろとありがとうございました。
結局、Accessで取り込んだ後、不一致クエリで処理することにしました。
もともと片方のファイルはAccess→Excelへ書き出したものだったので・・・。
普段Accessしか使っていないので、どうもExcelにはなじめませんでした。

お礼日時:2002/04/05 14:18

「統合」を利用してはどうでしょう?



多少データ構成が変わりますがご容赦ください。
1.ファイルAをシート1に読み込みます。
2.列Aのみではできないので列Bに「1」をいれ、Aの行数全部にコピーします。
3.タイトルを以下のようにします
列A_列B
1 _ 1
2 _ 1
3 _ 1
こんな感じ(アンダースコアがセルの区切りとさせてください)
4.ファイルBをシート2に読み込みます。
5.ほぼ同様の処理でタイトルを以下のようにします(列Bは2を入力)
列A_列B
1 _ 2
2 _ 2
5 _ 2
6.シート3でセルA1を選択し、メニュー[データ]-[統合]をクリック。
7.「集計の方法」は「合計」
8.「統合元」でシート1のセルA1からB4を選択し「追加」ボタンクリック。
9.「統合元」でシート2のセルA1からB4を選択し「追加」ボタンクリック。
10.「統合の基準」で「上端行」「左端列」にチェックを入れる。
11.「OK」ボタンクリック。
12.シート3のA列に「コード」が、B列に「値」が入ります。

「値」が3の場合、ファイルA、ファイルBともに存在するコードです。
「値」が1の場合、ファイルAにのみに存在するコードです。
「値」が2の場合、ファイルBにのみに存在するコードです。

もうちょっと綺麗にできる方法がありそうですけどね。
    • good
    • 0

ファイルというのは、エクセルではBOOKを保存した時に記録される形式だと認識しています。


1ブック1シートのブックに限る制約が有るようですが、
PRN形式で(スペース区切りで)Book1.prnとBook2.prnにシートのテキスト内容だけを保存したとします。VBEのModule1の画面に
Sub test1()
Open "book1.prn" For Input As #1
Open "book2.prn" For Input As #2
While EOF(1) = False
Line Input #1, a$
Line Input #2, b$
If a$ <> b$ Then
MsgBox a$
MsgBox b$
End If
Wend
Close #1, #2
End Sub
を入力して実行すれば、違うものはMsgBoxに表示されます。
MsgBoxの部分をファイルに書き出すように書きなおせば、エクセルに再読み込みできてわかりやすく表示されるでしょう。
上記は旧DosBasicスタイルそのままで、識者はお笑いになるでしょうが、根本はファイルマッチングすれば良いと思ったので投稿しました。

この回答への補足

照合するデータ同士が順不同で尚且つデータ数が違う場合でも可能でしょうか?

補足日時:2002/04/03 20:27
    • good
    • 0

マニュアルで比較する方法を考えてみました。



ファイルBをコピーしてファイルCとしておきます。ファイルCに照合結果を書いてみます。

ファイルA、ファイルB、ファイルCを全て開きます。

ファイルA、ファイルBのSheet1を照合する例です。
シートが複数あっても同様な手順を繰り返すだけです。

ファイルCのセルA1が空いている(未入力)とします。(A1が空いてなければ他を探します)
 A1に

  =IF([Book1]Sheet1!A1=[Book2]Sheet1!A1,"","違う "&ROW()&":"&COLUMN()) 

 を入力します。A1に書き込むのでSheet1!A1のようにA1にします。
 $A$1のように絶対番地参照になったら『$』を削除して下さい。

 上の算式では、ファイルAを『Book1』、ファイルBを『Book2』としています。

(1)A1をコピーします。
(2)メニューから、編集→ジャンプ→ジャンプのダイアログでセル選択ボタン→定数 を選択してOK。

これで定数のセルが選択されたはずなので、Ctrl-V(貼り付けを実行)
ファイルA、ファイルBの対応するセルの内容が違えば『違う 行番号:列番号』が表示されます。

(2)で定数セルだけか、他に算式のセルがあるか分かりませんが、算式を選択する場合は、ジャンプのダイアログでセル選択ボタン→数式 を選択してOKを押します。

上記は、セルに入力された場所に比較の算式を埋め込もうとしていますが、操作が複雑なら、ファイルCのA1の算式をファイルCの入力がある範囲にテキトーに貼り付けてみて下さい。


相違点は、
 (ア)目で確認するか、または
 (イ)算式の値をコピーして値として貼り付けしてソートする。または
 (ウ)フィルタ→オートフィルタで空白以外のセル を表示
等で簡単に見つけることができるでしょう。

ご参考に。

この回答への補足

照合したいデータ同士が順不同で並んでいた場合や、ファイルAとファイルBのデータの数が違ってもこの方法は可能ですか?

補足日時:2002/04/03 20:15
    • good
    • 0

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

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

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

Qエクセルについてなのですが、 例えば指定の範囲内に A B B C A B C A B B C D

エクセルについてなのですが、

例えば指定の範囲内に
A B B C A B C A B B C D B D
と並んだセルからAとDの合計を出したい時はどのようにすればいいのですか?

COUNTIFSだったら複数条件を満たした数を表示するので希望とは違います。
希望はA or Dの合計を出したいのです。

Aベストアンサー

こんにちは!

COUNTIFS関数はAND条件になりますので、今回の質問には適しません。

=COUNTIF(範囲,"A")+COUNTIF(範囲,"D")
のように「A」のセル数と「D」のセル数をコツコツと足し算するのが
間違いないと思います。m(_ _)m

QSUMPRODUCT($A$1:$A$10,$B$1:$B$10)とSUMPRODUCT($A$1:$A$10*$B$1:$B$10)

エクセルのSUMPRODUCT関数についてお尋ねします。

=SUMPRODUCT($A$1:$A$10,$B$1:$B$10)

=SUMPRODUCT($A$1:$A$10*$B$1:$B$10)
の違いは何でしょうか?
両者とも同じ答えを返しますが、いろいろ試したところ、前者は範囲内に文字列があってもそれを無視して計算し、後者は文字列があればエラーになるようですが、その理解で正しいでしょうか?
正しいとすれば、なぜでしょうか?

Aベストアンサー

こんばんは。

配列計算をしているのは言うまでもありませんが、この、SUMPRODUCT は、必ず、内部のひとまとまりから計算するという性質を持っています。ただ、VBAのように左から時系列かどうかは、言語が違いますから、分かりません。しかし、この引数は、パラメータ配列になっています。そして、その引数それぞれの有効値を調べて、それを演算出来る値かどうか調べます。

文字列を入れてもエラーにならないのは、元々、そこに注釈などを入れるために考えられたものです。値を文字列か数値かを精査して演算するように出来ています。最初、SUM関数に対し、そのように作られました。プログラムとしては、初歩的なものですが、そのアイデアは、今日まで、踏襲しているようです。このオリジナルの仕組みを考えたのは、VisiCalc の開発者、ブルックリン氏です。昔々、本で読んだことがあります。 PRODUCT関数とも共通です。3つの関数は、同じような仕様を持っています。

こちらが、本来の使い方です。

=SUMPRODUCT($A$1:$A$10,$B$1:$B$10)

つまり、
$A$1:$A$10 と $B$1:$B$10 の値を別々に取得しています。

では、
=SUMPRODUCT($A$1:$A$10,$B$1:$B$11)

とすると、なぜ、エラーが出るかというと、$B$11 に対応する数値が、NULL値(有効な値がない)だからです。それは、全体に反映させてしまいます。(理由は分かると思いますが、プログラムが途中で、エラーで止まってしまうからです)

ところが、こちらは、

=SUMPRODUCT($A$1:$A$10*$B$1:$B$10)

$A$1:$A$10*$B$1:$B$10 は、分割出来ません。したがって、この数式の中でのエラーは、そのまま、元の数式に反映されます。

ご自分で、ユーザー定義関数を作ってみれば分かります。VBAでも、同じように作ることが可能です。一度、試してみるとよいです。

こんばんは。

配列計算をしているのは言うまでもありませんが、この、SUMPRODUCT は、必ず、内部のひとまとまりから計算するという性質を持っています。ただ、VBAのように左から時系列かどうかは、言語が違いますから、分かりません。しかし、この引数は、パラメータ配列になっています。そして、その引数それぞれの有効値を調べて、それを演算出来る値かどうか調べます。

文字列を入れてもエラーにならないのは、元々、そこに注釈などを入れるために考えられたものです。値を文字列か数値かを精査して演算...続きを読む

Q=IF(ISNA(VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)),"",VLOOKUP($A1,sheet2!$A$1:$B $

いつもお世話になってます。
以下の関数式について、お時間がありましたらどうぞご教示ください。

=IF(ISNA(VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)),"",VLOOKUP($A1,sheet2!$A$1:$B $12,2,FALSE))

「シート2の範囲指定した表にA1セルの値と同じ値の右隣になる値を返せ。ただし該当なき場合は空白とせよ。」

純粋になんでこのような構文になるのかが解りません。

1.ISNAってそもそもなんでしょう?
2.同じ式を繰り返すのはなぜ?
(模範式で、このように同じ式を繰り返す構文があまり無いように思えたのです。)

・参考となる他所のページがあれば教えて下さい。
・素人です。お手柔らかにお願いします。

(エクセル2003)

Aベストアンサー

1.ISNAってそもそもなんでしょう?
ISで始まる情報関数の一つで、#N/A!エラーのみを判定する関数
結果はTRUE(真),FALSE(偽)のいずれかになります。
エラー判定のIS関数には他に
ISERR:#N/A!を除くすべてのエラーを判定する関数
ISERROR:すべてのエラーを判定する関数
があります。

2.同じ式を繰り返すのはなぜ?
ISNAの判定する値がセルでなく数式の結果だからです。
A2=VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)
なら
A3=IF(ISNA(A2),"",A2)
ということになります。A2のように計算の為のセルを省略する為に
=IF(ISNA(数式),"",数式)のように同じ数式を2回繰り返しになってます。

Q【EXCEL】数式=SUM(A1*B1+A2*B2+・・・+A100*B100)を簡略化したい

お世話になります。

今Excelで、A1~A100とB1~B100まで数値が入っています。
セルC1に「=A1×b1」、C2に「=A2*B2」…C100に「=A100*B100」と入力しました。
そしてセルC101に「SUM(C1:C100)」と入力して合計を出しました。
(実際はもっと複雑な計算なのですが、説明の為に簡略化しています)

そうすると、計算結果セルが多く発生するためファイルサイズが莫大になってしまうのと、それを数千行×6列以上を一気に計算するとXPのリソースが足りないと出て計算できません。
なので2~3列ずつ何回も数式コピペを繰り返すことになっています。

そこで【別セルに掛け算をしてから全部SUMで足す】のではなく【1つのセルに掛け算とSUMを組み込む】という事を考えて
=SUM(A1*B1+A2*B2+・・・+A100*B100)を
を入力しようとしたのですが、数式が長すぎて四苦八苦です。

この式、なんとか簡略化できませんか?

Aベストアンサー

積の合計なら
=SUMPRODUCT(A1:A100,B1:B100)
でいいのでは?

QA1に数字の1を入力するとB1の値がA1に表示、A2に数字の2を入力するとB2の値がA2に表示

エクセル初心者です

セルのA1に数字の1を入力するとB1の値がA1に表示、A2に数字の2を入力するとB2の値がA2に表示されるようなものを作りたいのですが・・・
どなたかご教授お願いします

例えば、A1に1を入れるとB1の値"北海道"がA1に表示され、A2に2を入れるとB2の値"青森"がA2に表示といった感じでです

宜しくお願いいたします

Aベストアンサー

No3,5,6です。
補足要求をしましたが時間がないので、No6での以下の理解、

B4がROOT,C4が♭9,D4が9,E4がm3,F4がM3~M4がM7
置き換え対象はB6:W11の範囲

ということでいいのなら以下で出来ます。

1.シートのタブを右クリックし、コードの表示を選択
2.出てきたVBエディター(白い画面)に下記をコピペ

Private Sub Worksheet_Change(ByVal Target As Range)
Dim x
If Intersect(Target, Range("B6:W11")) Is Nothing Then Exit Sub
x = Target.Value
Application.EnableEvents = False
Target.Value = Range("A4").Offset(0, x)
Application.EnableEvents = True
End Sub

3.AltキーとF11キーを一緒に押してワークシートへもどります。


人気Q&Aランキング

おすすめ情報