新生活!引っ越してから困らないように注意すべきことは?>>

お世話になります。

業務でエクセルに多量のデータ、計算式をいれて使用しているファイルが、現在、容量「5MB」くらいになっています。(現在は支障を感じることなく使えています)改良が必要で「10MB以上」になりそうなのですが、

◆1◆ 安全性(開かなくなったり、壊れたりする可能性等)からいうと一般的に何メガくらい迄が安全と思われる目安なのでしょうか?(尚、開いたり保存したりする時間を要する点では、これによりファイルが壊れる可能性がない限り、こだわりません)

◆2◆ もし、ファイルが開かなくなってしまった場合、何かの方法で開ける方法があるというのを以前「教えてgoo」でみかけたような気がしますが、みつかりませんでした。この点も参考に教えてください。

ちなみに使用パソコンは、セレロン1GB、メモリー500MB程度、ウインドウズXP、エクセル2000です。ファイルに図や写真は貼りつけていません。

以上、よろしくお願いします。

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

A 回答 (4件)

こんばんは。


Wendy02です。

>これもブックを開いている時に入り込むというニュアンスに受け止めましたが、このあたりをもう少しお教え願えないでしょうか?

開けなくなったブックを、バイナリ・エディタで調べてみると、なんと、インターネットのWebサイトのログインのパスワードが入っていたことがありました。おそらく、インターネット・キャッシュ(Temporary Internet Files)として落ちるべきものが、ブックの中に入り込んだのだと思います。

実際、ブックのファイルは、ひじょうに隙間だらけで、そこに電子のゴミが入りやすいものだと思います。開けられるブックでも、そういうゴミが潜り込んでいて、何かの拍子にどこかのセルを触ると、ハングしたりすることもあるようです。ブックが大きければ大きいほど、そうしたゴミが入り込む要素が高くなるのだと思っています。

過去に、あまりにハングするので、Clean()関数は、そうしたゴミを落とすために生まれたという話もありましたが、これは印刷の制御記号を落とすために使われるもので、あまり有効ではありません。

マイクロソフトのサポートでは、Sylkファイル(書式や式を保存したテキストファイル)に一旦変換して、もう一度ブックにすれば、電子のゴミは落ちて、リフレッシュするという話もありますが、Sylkというのは、CSV よりはマシでも、やはり機能的には半減してしまいます。

>ブックを起動時に、バックアップを取るような仕組み

今は、私の知っている限りの方法を使って行っています。

起動時(Workbook_Open()) に、適当な場所(以下は、そのブックのBackupフォルダ)にバックアップを取るようにさせています。このような方法は、Excelに負担を掛けずに可能です。

If Dir(ThisWorkbook.Path & "\Backup", vbDirectory) = "" Then
MkDir ThisWorkbook.Path & "\Backup\"
End If

Set objFso = CreateObject("Scripting.FilesystemObject")
objFso.Copyfile ThisWorkbook.Path & "\" & ThisWorkbook.Name, ThisWorkbook.Path & "\Backup\" & ThisWorkbook.Name
Set objFso = Nothing


また、終了時には以下のように、もう1つのファイルを取るようにしています。

With CreateObject("Scripting.FilesystemObject")
Set objFile = .GetFile(ThisWorkbook.Path & "\Backup\" & ThisWorkbook.Name)
FDate1 = objFile.DateLastModified '←これで日時が取れます。


DifDate = DateDiff("d", FDate2, FDate1)

End With

もう1つ、別なバックアップファイルを取っておいて、これで日時の比較(DifDate)を取って、それで、その日時を超えたら、別のバックアップをもう一度取るようにしています。ただし、日付違いのブックは、拡張子を変更させています。

このコツは、ExcelのApplication での操作をしないほうが、圧倒的にコピーなどの操作時間が速いので、起動・終了があまりに気になりません。Excelの機能にあるバックアップシステムは、以外にうっとうしく、特定のブックに指定することも出来ないので、逆に不便です。まだ、実験的な段階ですが、これで何度か、ブックは救われています。

なお、標準モジュールとThisWorkbook のイベントを使い分けるのもコツです。あまり、細かくは書きませんが、いろいろ工夫してみるといいと思います。
    • good
    • 0
この回答へのお礼

お忙しい中、夜にいたってまでのお返事をありがとうございます。行き届いたまた優しく解説してくださって、心より感謝いたします。

エクセルのファイルに隙間があってというお話は、興味もあり、驚きでした^^;奥の深い世界ですね。VBAのご指導もありがとうございます。勉強してみます。またのご指導をよろしくお願いいたします。

お礼日時:2006/02/23 08:53

1.基本的に現状の時点で既に壊れる可能性はあります。


安全のためには定期的にバックアップをした方がいいですね。
容量に関しては、使用しているHDDの空き容量がそのエクセル以上なら問題ありません。
ただ開くのと、再計算に時間がかかることと、メモリを圧迫するので書式等の変更ができなくなる可能性があります。
CPUは1GBとのことで安心ですが、体感が遅くなるようならメモリの増設は考えた方がいいかもしれませんね。

2.ファイルが壊れた時の対処なら
ファイルにアクセスできなくなった場合の原因と対策
http://search.support.microsoft.com/kb/411636
Excel がエラーで起動できない場合の対処方法
http://search.support.microsoft.com/kb/825652
    • good
    • 0
この回答へのお礼

mshr1962さん、いつもありがとうございます。
毎回どれほど助けられていることでしょうか。

やはり、バックアップが基本ですね。作るのは素人の私、使用するのはもっと素人の各担当者なのでバックアップをどう徹底させるかが課題です。ファイルが壊れたときの対処のサイトもありがとうございました。

お礼日時:2006/02/22 16:23

回答にはならないかもしれませんが、私は10メガ程度のファイルはごく普通に使っています。


いままで作成したものでは最大50メガぐらいでしょうか。(ただしCPUは2ギガです)
なお重いファイル(20メガ以上を目安にしています)を使う時は(自動計算の必要がない限り)なるべく再計算を手動にしています。

P.S. バックアップは必須です!!!
    • good
    • 2
この回答へのお礼

10M~50Mですか!!!
やはり安全性の問題は、大きさ(容量)の問題ではないということですね。ありがとうございました。

お礼日時:2006/02/22 15:47

こんにちは。

Wendy02です。

>◆1◆ 安全性
私が、毎日使っているブック(ここのカテゴリのログを取るブック)は、だいたい、1.5 M ですが、時々、トラブルを起こしますので、ブックを起動時に、バックアップを取るような仕組みにしてあります。

そして、バックアップをもう1つとって、そのもう1つのほうが 3日経つと、また、新たにバックアップを取るようにして、二重の安全策をほどこしてあります。

大きさの問題よりも、そのブックを開いている間の使い方にあるかと思います。
特に、インターネットなどのメモリ・バッファ を使うようなものは、危険です。

>◆2◆ もし、ファイルが開かなくなってしまった場合、何かの方法で開ける方法がある

それは、期待しないほうがよいです。いくつかありますが、バックアップに勝るものはありません。

この回答への補足

Wendy02さん、いつもいつもありがとうございます。
1.5Mでもトラブルを起こすのなら、おっしゃるように容量の問題ではないのですね。

ところで、以前のWendy02さんのある方へのご回答の中に「電子のゴミのようなものが入り込んで・・・」エクセルが不具合を起こすというようなことが書いてありました。これもブックを開いている時に入り込むというニュアンスに受け止めましたが、このあたりをもう少しお教え願えないでしょうか?また、インターネットなどのメモリ・バッファとは何でしょうか?いつもながらの、ど素人で何もわからず申し訳ありません。よろしければお返事お待ちしています^^

補足日時:2006/02/22 15:34
    • good
    • 0
この回答へのお礼

たびたび失礼します。補足欄に書き忘れました。

>ブックを起動時に、バックアップを取るような仕組み
について、そのVBAを教えてくださいませんか?VBAの勉強も滞っていて、ど素人のままですが、よろしくお願いいたします。

お礼日時:2006/02/22 15:57

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

QExcelファイルの限界は何MBまで?

今Excelで家計簿をつけているのですが、日に日にファイルの容量が増えていってます(当たり前ですが)。
そこで心配になったのですが、(1)Excelのファイルは何MBまでとか容量ってあるのでしょうか?また、(2)Excel2002と2007ファイルでは容量の限界も違うのでしょうか?一つめの質問だけでもいいのでよろしくお願いします。

Aベストアンサー

特別な容量の制限はありませんが、パソコンのメモリ(エクセルが利用出来る分)に読み込めるサイズが限界になるでしょう。

ただし、何らかの値が入っている場合と、計算式が多数入っている場合では処理の重さも変わってくるので、処理の限界が見えるかもしれません。

基本的にエクセルファイルは壊れやすいと言われているので、ある程度になったらバックアップなり分割するなどの対策が必要でしょう。


>(2)Excel2002と2007ファイルでは容量の限界も違うのでしょうか?

2007からはワークシートサイズが変わっているので、2003までのエクセルとは限界も違うかも知れませんが・・・・。

家計簿程度でファイルサイズが問題になるほど肥大する事はないので、心配はいりませんよ。

QExcel)軽いデーターのはずなのに、メチャメチャ重い!

こんにちは。
会社の共有フォルダーに「見積り書」というエクセルファイルがあります。
従業員はそれを各PCにダウンロードして、それぞれが見積りを作ります。
ある日をきっかけにめちゃめちゃこの見積りが重くなりました。
このたった1枚の見積りなのにサイズは4MB。写真、画像、マクロ、一切ありません。
それならまだ許せるのですが、、開くのにかーーーーなり時間かかります。5分以上はかかります。

「誰が触った!」「どう触った!」など調べるより新しく作り直そうと試みました。

なんとか10分ほど待って開きました。
そして7列x20行ほどのセルを囲んで「Ctrl」+「C」を押してコピーして、その新しいエクセルに貼付けようと試みました。
ところがコピーした段階でまた「応答無し」なります。
この症状は1人を除く従業員全員、しかもこの見積りだけです。あとはスイスイ開きます。
どれかのセルにゴミのようなデーターが入ってしまってるのでしょうか。
何が原因でしょうか?考えられるものを挙げていただけましたら幸甚です。

Aベストアンサー

コメントでも大量に入力されたのでしょうか。コメントの付いたセルはセルの右上に赤い三角マークが付くので見た目で分かります。コメントってテキストだから容量は大きくならないと思っていたんですけど、入れると凄く大きくなるんです。びっくりしました。

入力されている数式や書式を諦められるなら、他のbookからその問題のbookを参照してはいかがでしょう。値だけを参照するだけですので不要なものは一切付いてきません。
問題のファイル(Book)をBook1とした場合、Book2のA1セルに
=[Book1]Seet1!A1
と入力して必要な範囲までコピーします。
そののちに、Book2のseet全体をコピーして、「形式を選択して貼り付け」から「値」を選んで同じ範囲に上書き貼り付けすると良いです。
あとは正常に開ける人のパソコンの画面を見ながら数式や書式を設定してみてください。

Qエクセルでメモリ不足のエラーが出ます

エクセルで2つのファイルを開くと「メモリ不足」のエラーが表示されます。

エクセルで作業をするためにファイル(1.86MBのファイル)を開け、続けて別のファイル(1.80MBのファイル)を開くと「メモリ不足」のエラーが表示されます。2つのファイルのシート数は両方とも75シートです。

教えて!gooに登録されている過去の質問を参考にさせていただきましたが解決しませんでした。
ちなみに参考にした回答は次の通りです。
1.そのファイルを別名保存してファイルが開けるか?
2.そのファイル内のシートの倍率を確認。100%以外のシートがある場合は100%に修正してから別名保存してファイルが開けるか?

当方のパソコン環境は次の通りになっています。
OSはWindowsXP HomeEdition SP2
メモリは512MB
ソフトのバージョンはExcel2000
対象ファイルのサイズは(A)1.86MBおよび(B)1.80MB
対象ファイルのシート数は両方75

みなさま、宜しくお願いいたします。

Aベストアンサー

こんにちは。

>対象ファイルのシート数は両方75

まず、ここがネックですね。

ここで、そのシートの限界値を実験してくれた方がいましたが、空の状態では、百は越えるのですが、何かを入れた状態では、1つのブックで、せいぜい40程度ではなかったか、と記憶しています。それが、二つになった時に、果たしてどうかは、そのときの実験にはありませんが、Excelアプリケーション(全体)として、芳しくないはずです。

また、ぎっしりと配列数式が詰まっていたり、外部参照式が多く入った状態では、解決の見通しが立ちません。配列数式は、Excel2000では、6,000個は使えないはずです。何が、配列数式かは、にわかには区別つかないこともあります。INDEX関数やLOOKUP関数も配列数式に変わることがあります。

また、Excel2000は、公開されていない、メモリ制限があります。「使用可能なメモリ」とヘルプにはありますが、何が使用可能かは、書かれていません。

Excelの使うメモリは、物理的なメモリとは違いますので、その周辺をいじっても、直らないことが多いです。おそらく、それぞれの機能のメモリの割り振りがありますので、トータルの数ではないはずです。#1さんのおっしゃっている「Excel2002/2003/2007等が使えるなら」は、その点で、Excel2002になった時に、内部的な制限がなくなったことを、以前掲示板で知りました。

コントロールツールや画像オブジェクト、プリンタ・ドライバ、アドインなどもExcel用として割り当てられたメモリを使います。

ある程度は、[システム]-[詳細設定]-[パフォーマンス] の値を増やせば直る可能性がありますが、先ほどのメモリの割り振りからすると、Excelのハングの可能性が高いです。

なお、他のブックで同様の問題は出ているとすれば、個人用マクロブックや*.xlbファイルを削除して、Excelの設定をリセットすることによって改善することもあります。

私がお勧めする方法は、ひとつは、データベースファイルにすることと、他は、VBAマクロの効用です。ブックからブックへという作業自体を全て、VBAにさせてしまうことで、メモリ負担を減らします。残念ながら、今のままでは、解決する望みは少ないと思います。

こんにちは。

>対象ファイルのシート数は両方75

まず、ここがネックですね。

ここで、そのシートの限界値を実験してくれた方がいましたが、空の状態では、百は越えるのですが、何かを入れた状態では、1つのブックで、せいぜい40程度ではなかったか、と記憶しています。それが、二つになった時に、果たしてどうかは、そのときの実験にはありませんが、Excelアプリケーション(全体)として、芳しくないはずです。

また、ぎっしりと配列数式が詰まっていたり、外部参照式が多く入った状態では、解決の見...続きを読む

Qエクセルファイルの容量が大きくなる要因

バザーの品物を確認するために、エクセルシートで集計作業をしています。


「品目・個数・単価・小計」の行が100行ほど、
さらにそれを合計するという比較的簡単なものですが、日々追加されていくのである程度の区切りごとにシートをコピーして日付ごとに新しく作っていました。

例えば、10月1日のシートをコピーして新たに10月8日分のシートとしてそちらを更新していくという感じです。

1つのエクセルファイルにそのような手順で7シートほど作っていたら、ファイルを開くのが急に重くなってきてしまい、時にはエラーが出て作業が出来なくなりました。

別のエクセルファイルに作り直すことにして今のところ2シートほどのもので作業する分には特にファイルを開くのが遅いということもなくなりました。

ファイルサイズをみると、
 7シートのもの・・・18,903kb
 2シートのもの・・・88kb
と多少シートごとのデータが異なるにしても、重たいほうのファイル(7シートの方)シート枚数の比率をはるかに超えた容量となっていました。
何か要因があるかと思い、2シートの方のファイルでは、文字列と数値を改めて入力しなおし、新たに計算式などは入力しなおして、極力シンプル(強調や網掛けなどを省いた)に作るようにはしています。


今後の作業では無用にファイルサイズが大きくならないように気をつけたいのですが、ここまでの差が出るのは何が原因なのかよくわからず困っています。

単純に入力データ=ファイルサイズではないとは思うのですが、入力したデータ以外でファイルサイズが重くなる要因というのは何が考えられるでしょうか?
以下のもの、またはそれ以外に影響が大きいと思われるものがあればアドバイスいただけたらと思います。

数式(”sum”、”+”、など)
装飾(フォント、網掛け、太字、罫線、など)
ヘッダー、フッター(シート名、ページ数、日付、など)

よろしくお願いします。

バザーの品物を確認するために、エクセルシートで集計作業をしています。


「品目・個数・単価・小計」の行が100行ほど、
さらにそれを合計するという比較的簡単なものですが、日々追加されていくのである程度の区切りごとにシートをコピーして日付ごとに新しく作っていました。

例えば、10月1日のシートをコピーして新たに10月8日分のシートとしてそちらを更新していくという感じです。

1つのエクセルファイルにそのような手順で7シートほど作っていたら、ファイルを開くのが急に重くなってきてしまい、時に...続きを読む

Aベストアンサー

みえないオブジェクトが大量にあるかもしれません。
各シートごとに下記を試してみてください。

ただし、一括削除すると必要なオブジェクトも消えますので、図や電子印など
使用しているものをあらかじめ把握しておいて下さい。

 1.「編集 → ジャンプ」から「セル選択」ボタン
 2.「オブジェクト」にチェックを入れて「OK」ボタン
 3.シート内の全てのオブジェクトが選択されるので「Delete」キーで削除

参考URL:http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1110457961

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

QExcelのFileサイズの急な肥大化

Excelにデータを1000行位入力し、中にIF関数とかを入れまくって、それでも、Fileサイズが2500Kb程度だったのですが、ある日、改訂版のFileを作ろうと、自分なりに技巧を凝らして、関数計算を増やしたり(場所により関数に関数を入れたり)、カラフルにしたり、シートの保護をしたり、離れたところに集計欄を付けたりしたとたん、急にFileサイズが10000Kbを越えて、職場のパソコンでは、単独で使うときは問題ないのですが、別のExcelと同時にFileが開かないくらいに、開く時とか、保存する時とかに時間がかかるようになり、使い物にならなくなりました。

私自信、Excelには随分と経験があり、(自称)職場の中のExcel先生なのに理由が分かりません。
いくら関数の量を増やしたといっても、最初の関数の量から考えて4倍にもなるほどには増やしていません。まさか、空白のセルまで全セルを保存するようになってしまった?関数の入れ子はデータを費やす?シートの保護をしない方がいい(シートの保護をしないと他の人に使わせる訳にはいかないのです)?

ご存知の方がいらっしゃったら教えて下さい。

Excelにデータを1000行位入力し、中にIF関数とかを入れまくって、それでも、Fileサイズが2500Kb程度だったのですが、ある日、改訂版のFileを作ろうと、自分なりに技巧を凝らして、関数計算を増やしたり(場所により関数に関数を入れたり)、カラフルにしたり、シートの保護をしたり、離れたところに集計欄を付けたりしたとたん、急にFileサイズが10000Kbを越えて、職場のパソコンでは、単独で使うときは問題ないのですが、別のExcelと同時にFileが開かないくらいに、開く時とか、保存する...続きを読む

Aベストアンサー

Word や Excel は編集で元へ戻すための情報を保存しています。
そのため編集を繰り返すと結果の情報はさして増えてないのに
ファイルサイズがバカでかくなることがあります。

対症療法として、新しいブックを作り各シートをそちらにコピーして
保存します。その新しいブックのファイルサイズが大きくなければ
以後、新しい方を使います。

Q重くて開かないEXCELファイルを何とかして開きたい

手元にあるEXCELファイルが非常に重く、
開いてる途中でCPU使用率が100%になったまま固まってしまい、
開くことができません。

そのブックの中には2枚のシートが含まれており、
そのうち1枚のどこでもいいので1行のデータが見たいのです。
(列数はかなり多めです)
ただ、結果数字ではなく計算式が欲しいので、
CSVに変換するソフトでは使えません。

フリーの桔梗というソフトは凍ってしまいました。
Toraフィルターというソフトだと凍らずに、
項目名までは出てくるのですが、
null値が含まれているというエラーが出てしまいます。

どうしても急いで開きたいのですが、
なんとか開く(もしくはデータを抽出する)方法はないでしょうか。

Aベストアンサー

試しに、Excelの Safe Mode で開かないかしらね。
単に、メモリの問題でしたら、ある程度は可能なはずです。

スタート-ファイル名を指定して実行
「excel.exe /s 」
で開きます。

不要なものは一切除去して、立ち上がります。

ただし、ブック自体が壊れているときは、無理だと思います。

このほかにも、ExcelViewer97 というものがあったと思います。
計算式を見るというわけにはいかないのですが、実際、程度問題でだいたいの計算式は、経験的に、自分で作ったものでしたら、そのレイアウトによって、復旧できるはずです。

後、No.2のKenKen_SPさんの方法を、試しに、ADOでやってみましたが、

取り出しはデータだけですね。ADO やDAOあたりで、データ削除できるとは思いますが、元が開かない状態では、保証できません。

他にも、OLE やオートメーション・オブジェクトで、目的のブックに繋いで操作する方法もありますが、開かないブックの操作はしたことがありませんので、なんとも言えません。

試しに、Excelの Safe Mode で開かないかしらね。
単に、メモリの問題でしたら、ある程度は可能なはずです。

スタート-ファイル名を指定して実行
「excel.exe /s 」
で開きます。

不要なものは一切除去して、立ち上がります。

ただし、ブック自体が壊れているときは、無理だと思います。

このほかにも、ExcelViewer97 というものがあったと思います。
計算式を見るというわけにはいかないのですが、実際、程度問題でだいたいの計算式は、経験的に、自分で作ったものでしたら、そのレイアウトによ...続きを読む

Qある範囲のセルから任意の値を検索して、その隣のセルの値を取得するという関数はありますか?

Excelの関数について質問します。
ある範囲のせるを検索して、その隣のセルの値を取得するという関数を探しています。
なければユーザー定義で作りたいと思っています。
VLOOKUP関数では一番左端が検索されますが、
それをある範囲まで拡張して、
その右隣の値を取得できるようにしたいのです。
どうかお知恵をお貸しください。

Aベストアンサー

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場合によっては、IFをかぶせてCOUNTIFで確認した方が良いかもしれません。
 ex. =IF(COUNTIF(A1:F200,X1)=1,【上記数式】,"えらー")

ちなみに、VBAでやるならこんな感じになるかと。

動作の概要
 【検査範囲】から【検査値】を探し、
 最初にHITしたセルについて、右隣のセルの値を返す。
 ex. =Sample(X1,A1:F200)

'--------------------------↓ココカラ↓--------------------------
Function Sample(ByVal 検査値 As Variant,ByVal 検査範囲 As Range)
 For Each セル In 検査範囲
  If セル = 検査値 Then Exit For
 Next セル
 Sample = セル.Offset(0, 1)
End Function
'--------------------------↑ココマデ↑--------------------------

いずれもExcel2003で動作確認済。
以上ご参考まで。

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場...続きを読む

QEXCEL VBAマクロ作成で、他のEXCELからデータを取り込みたい

メインプログラム(EXCEL VBA)より、
他のフォルダーにあるEXCELの項目の内容を取り込みたいです。
たとえば他のフォルダーのEXCELのRange("A2:A3").ValueをメインプログラムのRange("C2:C3").Valueにセットしたい時です。

・コマンドボタン押したら、どこのEXCELから取り込むかのポップアップ(?)は、表示はできてます。
・作業者が選んだパスとブックもMsgBoxで表示できてるので、もらう相手の場所も取得できてます。

・となると次はOPEN,INPUTですか?
テキストデータの取り込みですと、Inputでそのバッファを定義してるのですが、なんか違うような。。。

よろしくお願いします!

Aベストアンサー

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Cells(2, 2).Value ' 相手シートの B2 の値を自分自身の A1 に書き込む

readBook.Close False ' 相手ブックを閉じる
Set readSheet = Nothing
Set readBook = Nothing

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Ce...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング