ここから質問投稿すると、最大4000ポイント当たる!!!! >>

エクセルが少し使える程度です。
1000個のブック内に同じ名前のシートが1個づつできています。
その1000個のシート毎にK列の最大値を求めたいのですが、
1000個のシートを”全て開くことなしに”できないでしょうか?

シート名は整理表から求めることができます。
シート名="C9&"\"&D9&"\["&A9&".xls]sheet1'"

シートが開いていれば、以下で求めることができるのですが。
=max(シート名!$k$2:$k$1250)

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

A 回答 (4件)

ご質問の内容を取り違えていましたらすみません。


状況・課題の確認も兼ねて冗長な説明になるかと思いますがご容赦ください。

まず、開いているブックへの参照は
A:=max([Sample.xls]Sheet1!$k$2:$k$1250)
といった形になりますよね。

ここでリンク元のブックを閉じると、
数式は自動的に
B:=max('D:\***\[Sample.xls]Sheet1'!$k$2:$k$1250)
といった形に変わります。

この状態であれば、閉じたブックの値を参照することができます。
また、Bの形の数式を直接入力した場合でも
閉じたブックの値を参照できます。

問題は、対象のブックが大量にある場合に
Bの形の数式を順次入力していくのは現実的でない
ということだろうと思います。

対象ブックが開いている場合には、indirectを使用して
C:=max(INDIRECT("'"&A1&":\"&B1&"\["&C1&".xls]Sheet1'!$k$2:$k$1250"))
とすれば参照を動的に生成することができますが、
indirectでは閉じたブックを参照することはできません。

で、ようやく対策ですが、
Bの形の数式自体を文字列として生成し、
D:="=max('"&A1&":\"&B1&"\["&C1&".xls]Sheet1'!$k$2:$k$1250)"
メモ帳等を経由して貼り付けることで、
イの形の数式を一気に入力することができます。
(エクセルからエクセルへ直接の値貼り付けや数式貼り付けでは不可)

ただし、対象のブックが動いた場合には
その都度参照を貼りなおす必要がありますので、
対象のブックが頻繁に動くような場合には、
マクロを利用するほかはなかろうと思います。
1.#1さんの方法で直接参照する。
2.「整理表」の変更をイベントで取得して参照数式を書き換える。
3.リンク元ブックをバックグラウンドで開いてしまう(!)
といったアプローチが考えられます。
    • good
    • 3
この回答へのお礼

> indirectでは閉じたブックを参照することはできません。
→ indirectでなければ閉じたブックを参照することができますが、
エクセルからエクセルへ直接の値貼り付けや数式貼り付けでは不可
なので、メモ帳等を経由して一気に貼り付ける。

と理解しました。ここで、「メモ帳等を経由して」とはどういうことでしょうか?

なお、マクロについて、#1さんのアドバイスを見よう見真似で試行錯誤中です。

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

お礼日時:2007/05/16 16:57

' フォルダ内のファイル名で文字列作成


Option Explicit
Dim strLine
Dim Fs
Dim objOutput
Dim oTarget
Dim oFile
Dim FileEx
Dim t
Const ForWriting = 2

Set Fs = WScript.CreateObject("Scripting.FileSystemObject")

Set objOutput = Fs.OpenTextFile("Maxresult.csv", ForWriting, True) ' Maxresult.csvを書き込みモードで開く

t = 0

' 現在のフォルダ内のファイル名を格納
Set oTarget = Fs.GetFolder(".")

For Each oFile In oTarget.Files 'すべてのファイルに繰り返す

FileEx = Fs.GetExtensionName(oFile) ' ファイル名から拡張子を抜き出す
If FileEx = "xls" Then ' 拡張子を比較 (.xls)のとき処理

strLine = ""
'ここで必要な文字列(関数式)を作成します
strLine = oFile.Name & "," & "=MAX('" & oTarget.Path & "\[" & oFile.Name & "]Sheet1'!K2:K1250)"
objOutput.WriteLine strLine ' 出力ファイルに書き出す
t = t + 1

End If

Next

objOutput.Close

MsgBox "処理終了 Excel 数 = " & t


---------------------------------------------------------
VBScript でちょこっと作ってみました。
フォルダ数が少なければ、たぶん使いやすいとおもいます
(ひとつのフォルダにファイルが沢山あるとき)


スクリプトの処理内容

対象のフォルダ内のすべてエクセルのファイル名とパスを収得して
「ファイル名」と「=MAX('D:\***\[*****.xls]Sheet1'!$k$2:$k$1250)」
のテキスト形の文字列をCSVの結果に出力します


使い方
先頭の Option Explicit から MsgBox の最後までコピーして
メモ帳などに貼り付けて保存してください。(名前はなんでもいいです)
そして 拡張子を(.txt)から(.vbs)に変更します
アイコンの形がメモ帳からSの形をしたものに変わります。
TESTフォルダをデスクトップにでも作り、そこにエクセルファイルをコピーして
同じTESTフォルダにSの形をしたアイコン「(.vbs)のファイル」を入れてください
で、Sの形をしたアイコンをダブルクリックするとテキストの形で関数文字列を作り
(Maxresult.csv)のファイルができます。
CSVファイルをエクセルで開くと関数が値を収得してきます。



フォルダ数が多いと使いにくいと思います。
役に立つかわかりませんが、
    • good
    • 0
この回答へのお礼

ここまで考えていただき、本当にありがとうございました。
少しづつ試みてみます。

お礼日時:2007/05/17 15:08

#2です。


説明が判りにくかったようですみません。
indirectの説明は余計でした。

indirectでなければ(式Bの形であれば)
閉じたブックを参照することができますが、
式Bを1000パターンも手打ちするのは大変です。

そこで、数式Dを使って1000パターンの数式Bを文字列として作ります。
しかし数式Dが返す「数式」はあくまで文字列なので、
そのままでは求める値を返しません。
文字列扱いになっている「数式」を普通の数式としてExcelに認識させる方法として、
文字列の「数式」をコピーして、いったんメモ帳などに貼り付け、
それを再度コピーして、Excelに貼り付け直す方法があります。
「メモ帳等を経由して一気に貼り付ける。」というのはそういう意味でした。


以下繰り返しになりますが、まとめです。

(私の理解では)ご質問の内容には2つの課題(条件)があります。
条件1.「閉じたブックの内容を参照したい」
条件2.「大量のブックの内容を参照したい」

もし条件1だけであれば、
B:=max('D:\***\[Sample.xls]Sheet1'!$k$2:$k$1250)
の形で数式を入力すれば解決します。
(閉じたブックの内容を参照できます)
しかし、大量のブックに対してこの形の数式をそれぞれ入力していくのは困難です。
つまり、この方法は条件2を満足しません。

条件2だけであれば、
C:=max(INDIRECT("'"&A1&":\"&B1&"\["&C1&".xls]Sheet1'!$k$2:$k$1250"))
といった形で数式を入力してフィルすれば解決します。
(「整理表」から順次参照元を取得して参照を機械的に生成できます)
しかし、この方法では閉じたブックを参照することは出来ません。
つまり、この方法は条件1を満足しません。

そこで、条件1・2を同時に満足する方法として提示したのが、
1.Bの形の数式をいったん文字列として1000パターン生成する。
 D:="=max('"&A1&":\"&B1&"\["&C1&".xls]Sheet1'!$k$2:$k$1250)"
2.1で生成した文字列を数式として入力しなおす。
 1で作った1000パターンの「数式」をメモ帳に貼り付ける
 ↓
 それを再度エクセルに貼り付ける。
 ↓
 1000パターンの「数式」が数式としてExcelに認識され、値を返す
という方法です。

乱長文失礼しました。
    • good
    • 1
この回答へのお礼

ご推察のとおり、たくさんあることが最大の問題でした。
やってみます。
重ね重ねありがとうございました。

お礼日時:2007/05/16 18:45

マクロがすこし分かれば、出来ると思いますが、


がんばって作ってみてはどうでしょう。

ブックを開かないでセルのデータを読む
http://officetanaka.net/excel/vba/tips/tips28.htm
    • good
    • 3
この回答へのお礼

マクロがわからないのですが、(処理の手順をどこに書くのか、どこに記録してどう起動するのか)この際がんばってみます。
ありがとうございました。

お礼日時:2007/05/16 12:58

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

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

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

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

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

Qリンク先のファイルを開かなくても、値が読み込めるようにできますか?(SUMIFSを使ってます)

エクセル2010を使っている者ですが、あるファイルではリンク先のファイルを開いていないと、値が読み込めません。

なお、いろいろと調べて、以下のとおりの設定になっております。
・「外部リンクの値を保存する 」にチェックが入っている。
・「すべてのブックリンクの自動更新を有効にする」にチェックが入っている。
・起動時の確認で「○メッセージを表示しないで、リンクの自動更新を行う」にチェックが入っている。

当該ファイルの中で、値を読み込みたいところでは、SUMIFSの関数を使っているのですが、そのせいなんでしょうか。
そうだとしたら、SUMIFSを使っていても、リンク先のファイルが閉じた状態で値を読み込む方法はないのでしょうか?

Aベストアンサー

No.1の回答者さんが書いているように、ブックを閉じたときの仕様に
なっていますので、SUMIFS関数を使うのならブックを開いておいて、
作業します。
https://support.microsoft.com/ja-jp/kb/260415

どうしてもブックを閉じて作業したいのなら、SUMIFS関数を使わずに
配列数式に変更して回避します。
{=SUM(IF((条件1)*(条件2),範囲))}
http://ameblo.jp/pcroom123/entry-11742483652.html
http://excel-magic.com/post-32/

Qexcel INDIRECT 他ファイル参照

INDIRECTの関数を使って,他のエクセルファイル(以下Bファイル)を参照すると,
Bファイルを開いているときは正しく数値を表示しますが,
Bファイルを閉じるとエラー表示になります。

回避する方法は無いでしょうか?

(元ファイルと,Bファイルの両方から参照先に関する情報を得ているので,INDIRECT関数は,必須かと思っています)

参考までに3種類試したソースを示します。
できれば3は避けたいと考えています。
ご意見よろしくお願いします。


1:=INDIRECT("'[★★★Bファイル.xlsx]"&$A27&"'!o$7")
エラー表示になります。

2:=INDIRECT("'"&MID(CELL("filename",$A$1),1,FIND("[",CELL("filename",$A$1))-1)&"[★★★Bファイル.xlsx]"&$A26&"'!o$7")
エラー表示になります。(パスまで含めて参照)

3:='C:\Users\test\[★★★Bファイル.xlsx]213旅費'!O$7
正常(常に数値を表示します)

Aベストアンサー

>回避する方法は無いでしょうか?
INDIRECT関数を使っている限り、回避できません。

外部データの取り込み機能で一時的にデータをすべて持ってくれば、同一ブック内になるので参照できます。
(閉じるときに取り込んだデータを破棄できます)
手間が状況に左右されるので、マクロで3のようにしてしまう方が簡単かもしれません。

Qエクセル関数>参照ファイル名をセルから呼び出す

別ファイル(ブック)のセルを表示させたいのですが、例えば
=[あいうえお.xls]かきくけこ!$A$5
とせずに、
ファイル名は A1セル の文字列を充てる、というようなことは出来ないでしょうか?

関数が分からない人でも、簡単に参照したいファイル名を変えられるようにしたいのです。

よろしくお願い致します。

Aベストアンサー

A1に「あいうえお.xls」があるとき
 =INDIRECT("[" & A1 & "]かきくけこ!$A$5")
でよいでしょう。
ただし「あいうえお.xls」が開いている必要があります。(#REF!エラーになるため)

A1に入力されたブック名が開いていないなら、ブックを開くようにするのであればマクロが必要です。ブック名を入力しているのがSheet1だとしたら以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて保存して下さい。
するとINDIRECT関数を入力したブックを開くときに、A1セルのブックも開くようになります。ただし下から3行目のファイルパスは修正が必要です。

Sub Auto_open()
Dim wb, mybk As Workbook
Set mybk = ThisWorkbook
For Each wb In Workbooks
  If wb.Name = Sheets("Sheet1").Range("A1").Value Then
    Exit Sub
  End If
Next wb
Workbooks.Open "C:\Temp\" & Sheets("Sheet1").Range("A1").Value
mybk.Activate
End Sub

A1に「あいうえお.xls」があるとき
 =INDIRECT("[" & A1 & "]かきくけこ!$A$5")
でよいでしょう。
ただし「あいうえお.xls」が開いている必要があります。(#REF!エラーになるため)

A1に入力されたブック名が開いていないなら、ブックを開くようにするのであればマクロが必要です。ブック名を入力しているのがSheet1だとしたら以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて保存して下さい。
するとINDIREC...続きを読む

Qエクセルで別ブックのセルを参照する式の内部

エクセルで別ブックのセルを参照する式の内部


別ブックのセルを参照する時は

='パス名[ブック名]シート名'!セル名

という式みたいなので、
='item\zaiko\[zaiko_2010_06_01.xls]在庫シート'!B5
という式を作りました(パスは適当です)。

それで、
='item\zaiko\[zaiko_2010_06_01.xls]在庫シート'!B5
='item\zaiko\[zaiko_2010_06_02.xls]在庫シート'!B5
='item\zaiko\[zaiko_2010_06_03.xls]在庫シート'!B5
='item\zaiko\[zaiko_2010_06_04.xls]在庫シート'!B5

と日付を連番で複数のセルに入れていきたいので、
日付の 2010_06_01 の部分を他セルから持ってきたいのですが、
この式の中に 文字列参照のMID() とかで挿入できるでしょうか?
日付の入っているセルがちょうど横の方に連番で存在しています。

分かる方いましたら教えてください。
よろしくお願いします。

エクセルで別ブックのセルを参照する式の内部


別ブックのセルを参照する時は

='パス名[ブック名]シート名'!セル名

という式みたいなので、
='item\zaiko\[zaiko_2010_06_01.xls]在庫シート'!B5
という式を作りました(パスは適当です)。

それで、
='item\zaiko\[zaiko_2010_06_01.xls]在庫シート'!B5
='item\zaiko\[zaiko_2010_06_02.xls]在庫シート'!B5
='item\zaiko\[zaiko_2010_06_03.xls]在庫シート'!B5
='item\zaiko\[zaiko_2010_06_04.xls]在庫シート'!B5

と日付を連番で複数のセルに入れていきたい...続きを読む

Aベストアンサー

=INDIRECT("''item\zaiko\[zaiko_"&A1&".xls]在庫シート'!B5")
とすれば出来ることはできますが、参照先のブックは開いている必要があります。

単に、沢山の数式を入力するのが面倒だというだけであれば、A1のセル以降に日付部分が入力してある場合、
="='item\zaiko\[zaiko_"&A1&".xls]在庫シート'!B5"
のように入力し、下へ数式をオートフィル等でコピーし、
入力した数式範囲を範囲選択→コピー→形式を選択して貼り付け→値でOKし、
範囲選択したまま、編集→置換で検索する文字列「=」、置換後の文字列「=」で置換します。

Q外部ブック参照が#REF!になってしまう

二つのブックがあり、一つには参照するデータが入っています。それをもう一つのブックから
=INDIRECT(ADDRESS(5+C4,13,,,"[A.xls]"&$A2))
と参照しています。

このとき、A.xlsを開いていれば正しく値を参照するのですが、A.xlsを閉じた状態だと#REF!になり値を参照してくれません。
A.xlsを開かずに、自動的に外部ブックの値を参照することはできないのでしょうか。

よろしくお願いいたします。

Aベストアンサー

コンピュター外部保存ファイルのデータは、一旦内部メモリに読み込まないと、絶対内容は読めません。
ーーー
今のところ関数式参照では質問のようなことは出来ません。
(また読み込む(Open)ことと、画面に表示する(Visible=True)こととは別なので、内部メモリに読み込むことはするが、裏で処理し、という時代が来るかもしれませんが。)
ーーー
ハイパーリンクを挿入したときは、元のセルをクリックしたときには指定したブック等は開いてしまいます。
ーー
リンク張り付けの場合は、Aブックと連動する用意ができていて、更新するを選択すると、Aブックの指定箇所を見に行って、リンクしたセルを更新しますが、Aブックを開くタスクは起動しないようです。しかし内部メモリにAブックを読み込んでいるでしょう。

QExel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数ではなく、マクロで処理を希望します。

自分では、部品表の商品番号をコピーして、コード一覧表で検索し、検索結果の右隣のセル(B列のコード)の値を部品表のC列に貼り付ければよいかと思い、書いてみたんですが…

Sub 別ブックから貼り付ける()
  Dim 検索する As Long
Windows("部品表.xls").Activate
検索する = cells(i,2).Value
Windows("コード一覧表.xls").Activate
ActiveWindow.SmallScroll Down:=-3
Selection.AutoFilter Field:=3, Criteria1:="=検索する", Operator:= xlAnd

と、してみたものの、検索しても、その検索結果の隣のセルのコードをどうやって取得すればいいのかが、わかりませんでした。

基本事項は本で学びましたが、呪文のようなコードはよく理解できません。懸命にネットで検索して、訳して理解する努力をしてはいますが。

どうぞよろしくお願いします。

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数...続きを読む

Aベストアンサー

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks.Open("C:\★★\コード一覧表.xls") '★要変更★
 I = 2
 Do While Range("A" & I).Value <> ""
  ThisWorkbook.Worksheets("Sheet1").Range("C" & I).Value = Application.VLookup(ThisWorkbook.Worksheets("Sheet1").Range("B" & I).Value, xlBook.Worksheets("Sheet1").Range("A2:B65535"), 2, 0)
  I = I + 1
 Loop
 xlBook.Close
 Application.ScreenUpdating = True
 MsgBox ("完了")
End Sub

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks....続きを読む

Q参照先のブックを開かずに内容をコピーしたい

エクセルのマクロ初心者です。
いつもここで他の方のQ&Aを参考にしたり、自分で質問したりしてお世話になっています。

今回は、参照先のブックを開かずにその内容をコピーする方法についてお聞きしたいです。
現在、下記のようなマクロを組んでいます。

Workbooks.Open FileName:="BookA.xls"
Sheets("Sheet1").Activate
Range("B4:H4").Copy
Windows("BookB.xls").Activate
Sheets("Sheet2").Select
Range("B1").Select
Sheets("Sheet2").Paste
Workbooks("BookA").Close
Windows("BookB").Activate

つまり、BookAのセルの一部分をコピーしてBookBのセルに貼り付けるという内容なんですが、コピー参照先のBookAを一度開いてコピーしてからBookBに行って貼付け、さらにBookAを閉じた後でBookBに再び戻る、という動作になっているため、画面がパラパラと切り替わる時間があって少々うっとおしいのです。
BookAをいちいち開かずに内容をコピーする方法があると思うのですが、どのような構文を使えばいいでしょうか?
ご回答よろしくお願いします。

エクセルのマクロ初心者です。
いつもここで他の方のQ&Aを参考にしたり、自分で質問したりしてお世話になっています。

今回は、参照先のブックを開かずにその内容をコピーする方法についてお聞きしたいです。
現在、下記のようなマクロを組んでいます。

Workbooks.Open FileName:="BookA.xls"
Sheets("Sheet1").Activate
Range("B4:H4").Copy
Windows("BookB.xls").Activate
Sheets("Sheet2").Select
Range("B1").Select
Sheets("Sheet2").Paste
Workbooks("BookA").C...続きを読む

Aベストアンサー

>画面がパラパラと切り替わる時間があって少々うっとおしいのです。
これだけならマクロの最初と最期で
Application.ScreenUpdating = False
処理
Application.ScreenUpdating = True
とすればいいのでは?

QVLOOKUP関数で開いていないファイルを参照

月度ごとのファイルがあり、フォーマットは全て同じです。
<例>
一覧データ0604.xls
店番 金額
111  15000
112  10000

この金額を一覧表にしたいと思います。
店番  0604 0605 ・・・
111  15000 12000
112  10000 18000

この一覧表を作るために、VLOOKUP関数を使いました。
普通に入れると、ファイル名の変更が面倒なので、作業行を作っています。
店番  0604 0605 ・・・
作業行
111  15000 12000
112  10000 18000

06年04月の作業行(B2セル)には以下の式を入れています。
="'D:\マイドキュメント\[一覧データ"&B1&".xls]全店明細'!$A:$B"

そして実際のVLLOKUPは111店の場合こうです。(B3セル)
=VLOOKUP($A3,INDIRECT(B$2),2,0)

これでフィルコピーしてデータを持ってくることはできるのですが、一覧データファイルが開いていないとダメです。
すると2年分であれば24個のブックを開かないといけません。
出来ればファイルを開かずに使えると良いのですが、この式ではダメですよね?
もしできる方法があれば教えて下さい。よろしくお願いいたします。

月度ごとのファイルがあり、フォーマットは全て同じです。
<例>
一覧データ0604.xls
店番 金額
111  15000
112  10000

この金額を一覧表にしたいと思います。
店番  0604 0605 ・・・
111  15000 12000
112  10000 18000

この一覧表を作るために、VLOOKUP関数を使いました。
普通に入れると、ファイル名の変更が面倒なので、作業行を作っています。
店番  0604 0605 ・・・
作業行
111  15000 12000
112  10000 18000

06年04月の作業行(B2セル)には以下の式を入...続きを読む

Aベストアンサー

>出来ればファイルを開かずに使えると~
と言うことですが、ブックを同時に開くように「作業状態の保存」で保存してはいかがでしょう
作業用のブックと参照したいブックをあらかじめ開いておいて
 ファイル → 作業状態の保存
で保存するだけです
これは文字通り作業状態(開いていたブックの状態)をそのまま保存する機能です
保存したファイルを開くと、保存時に開いていたブックを全て開いてくれますので【 手 間 】はかかりません
また、各々のブックの変更は各ブックへ引き継がれますので普通に作業できます
なお保存したファイルには ".xlw" の拡張子が付きますが、このファイル自体にはブックの中身のデータは存在しません
データのバックアップやコピーが必要なときは、ブックを対象にしてください

QWorkBooksをオープンさせずにシートにコピーしたい【EXCEL VBA】

よろしくお願いします。
今あるブックにあるシートを別のブックにコピーしたいのですが、今考えているのは

ここから////////
'ブックを開く
Workbooks.Open コピー元のブックのパス
'シートをコピー
Worksheets.Item(コピーするシート名).Copy _
after:=Workbooks(コピー先のブック名).Sheets(1)

'ブックを閉じる
Application.DisplayAlerts = False
Workbooks.Item(コピー元のブック名)Close True
Application.DisplayAlerts = True
ここまで////

なのですが、コピーものとのブックが複数ある時、画面がチラチラしてしまいます。ブックをオープンさせずにシートを他ブックにコピーさせる方法ってないでしょうか。
ご存知の方がいらっしゃいましたら、ご教授お願いします。

Aベストアンサー

画面のチラツキを押さえたいだけなら、画面の更新をやめればいいだけじゃないでしょうか?

ブックを開く前に
Application.ScreenUpdating = False
ブック閉じてから
Application.ScreenUpdating = True

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

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

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

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

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

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

宜しくお願いします。

Aベストアンサー

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

でどうでしょうか?


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

人気Q&Aランキング