- ベストアンサー
IF関数と文字列のコピー
- Book名AAAとBook名BBBの条件に基づいて、IF関数と文字列のコピーを行いたい場合、どのようにすればいいのでしょうか。
- Book名AAAの特定の条件を満たす場合、Book名AAAの特定のセルの値をBook名BBBの特定のセルにコピーする方法を教えてください。
- Book名AAAの特定の条件が真の場合、Book名BBBの特定のセルにBook名AAAの特定のセルの値をコピーする方法について教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
難しいマクロを使うよりも、手動で、行と列を入れ替えて、フィルタ機能を使ってコピーしてはいかがでしょう。
その他の回答 (3)
- bunjii
- ベストアンサー率43% (3589/8249)
>Book名AAAにA行にキーワード(文字列)B行に、その検索需要数(数値)があります。 次のように読み変えてよろしいですか? 「Book名がAAAのA列に文字列が入力されていて、B列には数値が入力されています。」 >真である場合、Book名BBBのA行に、Book名AAAのA行をコピーします。 これも次のように読み変えて良いでしょうか? 「真である場合、Book名がBBBのA列の同じ行のセルへBook名がAAAのA列の真である行の文字列を代入します。」 もし、「コピーします」に拘る場合はVBA等のプログラム(マクロ)を使わないとできません。 Excelの組込み関数で処理する場合はデータを代入する数式を目的のセルへ設定しなければなりません。 IF関数の例 Book名がBBBのA列の2行目(A2セル)へ =IF(AND([AAA]Sheet1!B2>=2500,[AAA]Sheet1!B2<10000),[AAA]Sheet1!A2,"") 但し、Book名がAAAを開いていることが必要です。 >Book名AAAのB行の値が3000以上10000以下ならの式と別のブックに文字列をコピする 2500以上で10000未満と3000以上で10000以下でが重なる部分(3000~9999)が有ります。 重なる部分については両方に代入またはコピーするのでしょうか? 関数での処理については値を受ける側へ数式を設定するので其々のBookへ関数式を設定すれば目的に合います。 Book名がAAAにVBA等のプログラム(マクロ)を組み込む場合は複数の書き込み先を定義できますので論理の組み合わせを間違わなければ目的通りになるでしょう。 VBAについては不得手なので考え方のアドバイスまでにさせてください。 何れにしても条件分岐の論理をフローチャートに書いて確認されることをお勧めします。
お礼
回答ありがとうございます。 文章にするとわからないのですが、フローチャートにするとわかりやすそうですね。
- imogasi
- ベストアンサー率27% (4737/17069)
質問文がわかりにくい。 列と行を間違えているようだ。 エクセルの第二ステップの質問らしいが、エクセル関数を使い始めて間もないのか。 この質問を見ても、質問するのは、それなりの経験が必要とつくづく思う。 ーー 以下を認識したうえで、この質問は別に表現を工夫して、再質問したらどうか。 ーー エクセル関数は、 (1)式を入れる、そのブックのそのシートのセル1つにしか結果の「値!」をセットできない。 これを破るのは、VBAなどでしかできない。VBAなら任意のブックのシートのセルを指定して結果をセットできる。 これを判っているのか。 (2)また1つしか「値!」を返せない。複数セルに異なった値を返せるのは配列数式だけ.なぜ値に括弧を付けて強調しているか判るか。 >コピする(コピーする) 「コピー」という用語はここでは適当でないだろう。 (式を入れるセル以外のセルの値を)セルの値を(加工もできるが)、(そのままや関数で加工して)「代入する」イメージで、コピーとは言わない。 小生が言いたいことは、コピー元のセルの書式は持ってこれないのだ。 ほかに、エクセル関数で、「コピーする」を使う場合として、「あるセルの式を他セルへコピーする」はいつも行うことで、これならコピーという用語を使う。 ーー 他ブックのシートの値を関数式で参照するのは(エクセル関数学習の第2ステップレベル) http://www.excel-jiten.net/formula/ref_other_books.html ほか多数を参照。 まずブック名は[ ○○ ]で、シート名は○○!で指定する。
お礼
回答ありがとうございます。 関数は使い始めというか、かなり忘れているといった段階です。
- Prome_Lin
- ベストアンサー率42% (201/470)
まず、基本的な指摘をさせて頂きます。 「A」、「B」は、「列」です。 決して「行」ではありません。 この「列」と「行」は、エクセルの処理をする上で、極めて重要な用語ですので、決して間違えてはいけません。 意識して、意識して、「A列」「B列」、「1行」、「2行」と言いましょう。 この用語を間違えると、ひどくややこしい話になりますし、もし、「VBA」などに興味もたれたときは、行:Row、列:Columnがごっちゃになると、マクロが組めませんし、別にマクロどうこうでなくても、相手に話が伝わりません。 くれぐれも、エクセルの話をされるときは、「行」と「列」という言葉を意識して使い分けてください(かく言う私も、最初のころは、なかなか意識できませんでしたが・・・) さて、本題ですが、関数でやるとなると、長い「IF文」になります。 「D」ドライブの「Programming」というフォルダに「AAA.xlsx」というエクセルのファイルがある、という前提条件です。 「BBB.xlsx」の方は、どこにあっても、そもそも、「BBB.xlsx」という名前である必要はありません。 「BBB.xlsx」の「A1」セルに以下をコピー&ペーストして、必要な行数、コピー&ペーストします。 =IF(AND('D:\Programming\[AAA.xlsx]Sheet1'!B1 > 2500,'D:\Programming\[AAA.xlsx]Sheet1'!B1 <= 10000), 'D:\Programming\[AAA.xlsx]Sheet1'!A1, "") 次に、「BBB.xlsx」の「B1」セルに以下の「IF文」をコピー&ペーストし、同じく必要なだけ下にコピー&ペースとします。 =IF(AND('D:\Programming\[AAA.xlsx]Sheet1'!B1 > 2500,'D:\Programming\[AAA.xlsx]Sheet1'!B1 <= 10000), 'D:\Programming\[AAA.xlsx]Sheet1'!B1, "") しかし、これですと、条件を満たさないところは、「BBB.xlsx」で空白となってしまいます。 上から詰めたい、という場合は、私の場合、「VBA」でマクロを組むしか方法が分かりません。 どうしても関数で処理したい場合は、他の方に聞いてください。
お礼
お礼が遅くなってしまい、申し訳ありません。 今回の処理は、やるとしたらVBAになるのですね。 ありがとうございました。 行と列のことは、投稿してから、「ああ!」ってなってしまいました
お礼
そのてがありましたね。 ありがとうございました!