Excelで大量のデータ処理をしなくてはならないのですが、以下の処理をExcel VBAで自動処理できないでしょうか?
どなたかお知恵をお貸しください。
(1)A、B、C列からなるリストがあります。A,B列にはそれぞれオートフィルタが設定してあり、C列は空白です。A列、B列にそれぞれ条件を設定し、抽出したデータのC列(空白)に特定のデータを入力します。A列、B列2つの条件の組み合わせが100通りくらいあり、現在手動でオートフィルタを設定し、C列にデータを入力しております。例えばA,B列の条件の組み合わせと、それに対応するC列に入力するデータを表にしたテーブルを別に作り、A,B列の条件を自動に設定して、抽出し、C列にデータを自動に入力することを、テーブルの一番上の行から最後の行まで繰り返す、というようなことをVBAでExcelにしてもらいたいのです。自分でちゃんと勉強し、調べて、それでも分からなかったらお聞きするというのが筋だと思うのですが、今この仕事に追われて、時間がありません。(ほとんど毎日午前様です。)この仕事が片付いたら、じっくりVBAを勉強したいと思っております。どうぞよろしくお願いいたします。

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

A 回答 (8件)

修正するとすれば



条件の列がD列で、「あ」と入力したい列がG列になり
K列から始まる条件の表をなら
K1に「条件1」と名前を定義してそのセルに「4」と入力(D列)
L1に「条件2」と~     「0」と入力(無視)
M列はタイトルとデータ
G列のデータ範囲に「分類」と名前を定義

---------------------------この↓から---------------------------------
Sub 新データ処理1()
'条件1のデータの上のセルに「条件1」と名前を定義し表の左から対応するデータまでの列数を入力
'条件2のデータの上のセルに「条件2」と名前を定義し表の左から対応するデータまでの列数を入力
'入力するデータの範囲に「分類」と名前を定義
'オートフィルタは表に空白列や行があると別の表と認識するので↑の列数が違ってくる場合があります
'分かり図らい場合はA1のセルを選択後、オートフィルタをつけて▼を数えて下さい
'条件を1つにしたい場合、「条件2」は0を入力すると無視します

Dim i As Integer
Dim j As Integer
Dim a As Integer
Dim b As Integer
j = Range("条件1").Column
a = Range("条件1").Value
b = Range("条件2").Value

Range("A1").Select
Selection.AutoFilter
For i = 2 To Range("条件1").CurrentRegion.Rows.Count
Selection.AutoFilter Field:=a, Criteria1:=Cells(i, j), Operator:=xlAnd
If b <> 0 Then Selection.AutoFilter Field:=b, Criteria1:=Cells(i, j + 1)
Cells(i, j + 2).Select
Selection.Copy
Range("分類").Select

ActiveSheet.Paste
Next i
Selection.AutoFilter
End Sub
    • good
    • 0
この回答へのお礼

april21さん、本当に毎回ありがとうございます。実は今日他のリストでも試してみました。そのリストでは条件は1つで、D列がそれにあたるので、april21さんが書いてくださったコードのRangeAというところをDに変更し、Selection.AutoFilter Field:=4,、Criteria2:=Cells(i, j),を削除、Criteria1:=Cells(i, j)は、(2,7)、Cells(i, j + 2).Select を(2,8)というように変えてみました。なかなかうまくいかなくて5回くらい試行錯誤してしまいました。でもなんとこれでうまくいきました!!しかし私の修正では不安なので、早速april21さんが書いてくださったように直してみます。実行してみてびっくりしました。今まで手動でやっていたときには30分位かかっていたことが、何と1分です。素晴らしいですね。april21さんのコードがシンプルでとても軽いのでしょうね。社員一同本当に感激しております。どうもありがとうございました。今回のことでapril21さんにはたくさんの貴重なお時間を私どもの為に使っていただき、言葉に出来ないほど感謝しております。また何かありましたらどうぞご教授くださいませ。私もなるべく人に頼らなくてもVBAが使えるようにがんばります。

お礼日時:2001/04/27 23:48

>このプログラムをほかのリスト処理にも使用したいのですが、他のリストでは、条件が1つになり、


>条件の列がD列で、「あ」と入力したい列がG列になり、組合せの表もK列から始まるという風

分類用のシートにすれば修正しなくても結果は得られると思います。
他のリストからこのシートに必要な個所だけコピーして分類が出来たら他の
シートに分類の列をコピーして貼り付けます。

D列をコピーしてA列に、B列をタイトルのみで(データは空)F列を「=」に
します。
(B列も空=F列も空 になりデータの全てが対照になる)
G列をC列にコピー(ここは名前を定義してあるので「分類」にG列のデータ範囲を指定も可)
K列をE列にコピー
結果が出たらリストに貼り付け、分類用のシートはそのまま閉じれば再使用の時
セルをクリアしたりしなくて済みます。(F列に「=」を入れておけば楽かも?)
リストファイルにVBAを入れなくて済むのでファイルサイズも少しは軽い???
    • good
    • 0

「我社の製品はこの二つの条件がどのように組み合わさっても、状態維持をクリア」


↑だと10個、10個で100通りですね?

「A、B社2つの条件の組み合わせは100通りすべてあるわけではなく、こちらで必要な組み合わせだけですので」
↑のどのような組み合わせでもというのに反してますね?

それで最初のご質問をもう一度読んでみたのですが・・・。

オートフィルタのA列の▼をクリックすると重複データを除いたデータが表示されますね?
仮に「goo」というデータを1つ選択すると「goo」を含む行だけ抽出されます。
B列の▼をクリックすると「goo」を含む行のB列の重複しないデータ(excel、VBA、kiroro)が表示されたとして

A列の▼をクリックした時に表示されるデータ「goo」をA列の条件として
B列の▼をクリックした時に表示されるデータ(excel、VBA、kiroro)をB列の条件として

この時の組み合わせを
E列 F列  G列
goo、excel、 あ
goo、VBA、 い
goo、kiroro、 う
 ・  ・
 ・  ・
セルに入力させて表を作り
その表のG列にC列に入力するデータを手動であ、い、うと入力して

A列がgooで、かつ、B列がexcelならばC列に「あ」と自動で入力したいという事なのでしょうか?

この回答への補足

april21さん、早々にご返答いただきありがとうございます。また当方の説明があやふやで、april21さんを悩ませてしまったようで、申し訳ありません。

A列の▼をクリックした時に表示されるデータ「goo」をA列の条件として
B列の▼をクリックした時に表示されるデータ(excel、VBA、kiroro)をB列の条件として

この時の組み合わせを
E列 F列  G列
goo、excel、 あ
goo、VBA、 い
goo、kiroro、 う
 ・  ・
 ・  ・
セルに入力させて表を作り
その表のG列にC列に入力するデータを手動であ、い、うと入力して

A列がgooで、かつ、B列がexcelならばC列に「あ」と自動で入力したいという事なのでしょうか?

⇒⇒⇒ということです。ただ、E列 F列 G列
              goo、excel、 あ
              goo、VBA、 い
              goo、kiroro、 う
という組み合わせの表は、april21さんが最初に考えてくださったプログラムのように、あらかじめ手動入力で用意しておいて、この組合せが満たされているものだけC列に"あ"と書き込みをするという事が出来ればいいのです。april21さんが最初に作ってくださったプログラムを実行してみました。大成功でした。これで大満足でございます。私の至らぬ説明で大変ご迷惑をおかけしました。このプログラムをほかのリスト処理にも使用したいのですが、他のリストでは、条件が1つになり、条件の列がD列で、「あ」と入力したい列がG列になり、組合せの表もK列から始まるという風に、場合によって変わってしまいます。その際、april21さんが作ってくださったプログラムを適宜変更すればいろいろなリストで実行することが出来ると思うのですが、修正するのは難しいでしょうか?もしそれほど難しくないのであれば、どの部分を修正すればいいのかご指導いただけますでしょうか?もし難しいのであれば結構です。本当に無理ばかり申し上げてすみませんが、どうぞよろしくお願いいたします。

補足日時:2001/04/27 01:54
    • good
    • 0

>条件が100個というのはE列の条件データが10個、F列の条件データが10個で、100通りほどの組み合わせがあるということなのです。

早速会社で試してみますね。お忙しい中本当にありがとうございました。
それでは、各10個のデータから100通りの組み合わせを得るところから始めなくてはならないのでは?
↓のでは手動で設定してしていた100通りの組み合わせを事前にE列とF列に入れて処理させる時に
使いまわすだけで良いのかと思ってましたので各10個のデータを入れても10通りしか処理出来ません。
100通りの組み合わせが何なのかも分かりませんし・・・。
何らかの規則性があれば自動で生成する事も出来ると思いますが今の段階では分からないの出きません。
それに100通りに対応するC列に入力させるデータも分かりませんし・・・。

Excel VBAでデータを自動処理したい(2)には数値データだけでしたが
データって数値だけなのですか?
条件のつけ方は2個の数値に合致するだけで良かったのですか?

この回答への補足

april21さん、私の質問の書き方が悪くて申し訳ありません。補足させていただきます。具体的に申し上げますと、この処理は、我社で製造しているある製品に対して2つの別の会社にテストを依頼しているのです。A社には10通りの様々な条件でテストをしてもらっています。同様にB社にも別の10通りの条件でテストをしてもらっています。我社の製品はこの二つの条件がどのように組み合わさっても、状態維持をクリアできなくては販売できません。このテスト結果を表にまとめるための処理なのです。データは条件データもC列に入力させるデータも数値ではなく文字データです。そしてA、B社2つの条件の組み合わせは100通りすべてあるわけではなく、こちらで必要な組み合わせだけですので、april21さんが最初に考えてくださったように、事前に用意しておくことが出来ます。こんな状況なのですが、どうでしょうか?貴重なお時間をお取りしてしまって恐縮です。お時間があるとき、又木が向いたときなどにでもご返答くだされば感激ですが、どうぞ負担の感じず無視されても結構です。ここまで考えてくださっただけでも本当に感謝しております。どうもありがとうございました。まずはお礼と補足まで・・・。

補足日時:2001/04/25 23:46
    • good
    • 0

>我社にはVBAの経験者がおりません


■登録方法
[ツール] メニューの [マクロ] をポイントし、[Visual Basic Editor] をクリック。
エディタが開くので「挿入」-「標準モジュール」クリック。
VBAをコピーして貼り付けます。

エディタを閉じてエクセル画面に戻ります。
[ツール] メニューの [マクロ] をポイントし「マクロ」をクリック。
「データー処理1」と表示されてるはずなので選択して「実行」
(注意:実行する前にオートフィルタはオフにしておいてください)

■実行するには
↓の通りABC列の表とEFG列の表が必要なので
AB列に抽出するデータとC列に条件合致時に入力されるデータ領域。
EF列は条件のデータとG列に条件合致時に入力するデータ。
(条件に比較演算子などを用いる場合は左に付けて下さい。3より小さいは<3
という風に。フィルタオプションで設定できるものは設定できるはずです)

2つの条件に合致するデータが何もない場合にコピー先が変わるのを防ぐ為に
C1を利用しているのでデータ領域以外に一行必要です。
(タイトルは何でも構いませんのでタイトル行をつけてください)

C列の領域に名前を定義して下さい。
「挿入」-「名前」-「定義」で名前を分類に、参照範囲はC列のデータ領域選択。
(タイトル行を含むデータの最後までを選択、100個あるなら100まで)

ここまで出来たら↑の手順で「データ処理1」を実行してみてください。

確認するにはC列をキーにして並べ替えを行ってみると確認しやすいかも?
毎日、手作業でされてるのはC列が出来上がってるでしょうからテストしてみて下さい。

データが文字なのか数字だけなのか両方なのかまったく分からなかったし・・。
条件が100個って・・想像できません。
    • good
    • 0
この回答へのお礼

April21さん、度々の補足、またVBAの登録、実行の仕方まで丁寧に教えてくださり本当にありがとうございます。条件が100個というのはE列の条件データが10個、F列の条件データが10個で、100通りほどの組み合わせがあるということなのです。早速会社で試してみますね。お忙しい中本当にありがとうございました。

お礼日時:2001/04/24 23:51

補足


■「条件1」「条件2」のセルは""にしないようにしてください。
スペース1コでもいいので入れてください。
■↓の2行要りません。(削除するの忘れました^_^;)
If Cells(i, 5) = "" Then Exit For
If Cells(i, 6) = "" Then Exit For
■>3は>3です(半角になってなかったです。

説明するのは作るより難しい(ーー;)まだあるかも・・。
ARCさんのもあるし・・動かなかったらゴミにだしてやってください。
    • good
    • 0

>A、B、C列からなるリスト


A  B  C・・・・←必ずタイトル行つける事
14  あ  
10  い  

条件1  条件2  分類・・・(左からE、F、G列)
10    い    1


C列に名前を定義して下さい。
「挿入」-「名前」-「定義」で名前を分類、参照範囲はC列のデータ領域選択。
上の例では =Sheet1!$C&1:$C&3 って感じに(3は使う行数によって変わります)

C1セルのタイトルはマクロ処理すると条件に当てはまらなかったデータが入力されるので変わってしまいます。(必要な場合は処理後つけてください。)

オートフィルタにはオプションで「等しい」だけでなく「より大きい」とか比較もあるので一応出来るようにしてあります。
3より大きいと条件をつけたい場合は「>3」に
(比較演算子は左に)
あで終わるものは「*あ」に
あで始まるものは「あ*」に

オートフィルタはオフにしておいてください。
---------------------ここから↓コピー-----------------------
Sub データ処理1()

Dim i As Integer

Range("A1").Select
Selection.AutoFilter
For i = 2 To Range("E2").End(xlDown).Row
If Cells(i, 5) = "" Then Exit For
If Cells(i, 6) = "" Then Exit For
Selection.AutoFilter Field:=1, Criteria1:=Cells(i, 5), Operator:=xlAnd
Selection.AutoFilter Field:=2, Criteria1:=Cells(i, 6), Operator:=xlAnd
Cells(i, 7).Select
Selection.Copy
Range("分類").Select

ActiveSheet.Paste
Next i
Selection.AutoFilter
End Sub
---------------------ここの↑まで-------------------------------------

とりあえず、確かめましたのでちゃんと動くはずですが・・動かなかったら
説明が抜けてたるのかもしれないのでどうなったかお知らせください。
100通りも条件つけては確かめてないのでバグがあったらm(__)m

文字が一致するだけでいいのであればもっと簡単に出来るので処理は速くできます。
↑のVBAだとちょっと処理が複雑になるのでデータが沢山ある場合には遅いかも?
    • good
    • 0
この回答へのお礼

April21さん、ご回答本当にありがとうございます。しかもプログラムの動作まで確認くださったなんて本当に感激です。ゴミにするなんてとんでもない!!私は今回のことでプログラミングに大変関心を持つようになりました。先のARC産の回答と同様にApril21さんのプログラムも是非使わさせていただきます。処理の速さを要求するなど私には恐れ多いことです。今手動でやっていることから開放されるだけでも天にも昇る気分です。私を含めた社員一同に希望を下さり本当にありがとうございます。我社にはVBAの経験者がおりませんので、April21さんのプログラムはきちんとしているのにうまくいかないかもしれませんが、みんなでがんばってみます。

お礼日時:2001/04/23 23:42

DGet関数を使っても何とかなりそうな気はしますが、VBAで書くとすれば以下のような感じになります。



使い方は、
DataSearch(検索する範囲, 取得する列番号, [条件1] [,[条件2]]…)
です。

例: E列に野菜名, F列に産地, G列に価格が入力されているとすると、
=DataSearch(E:G,3,"Tomato","Aomori")
で、青森産トマトの価格を返します。

=DataSearch($E$2:$G$100,1,,,1200)
で、1200円の野菜の名前を返します。(複数ある場合は、リストの上にあるものが優先)

Public Function DataSearch(DataRange As Range, FieldNum As Long, ParamArray SearchValues() As Variant) As Variant
 Dim MaxColumn As Long '最大列数
 Dim LeftCol As Long '左端のセルの列番号
 Dim MaxRow As Long '最大行数
 Dim Rng As Range
 Dim i As Long
 Dim CurrentRow As Long
 Dim Hit As Boolean
 '準備
 MaxColumn = UBound(SearchValues)
 If (DataRange.Columns.Count - 1) < MaxColumn Then
  MaxColumn = (DataRange.Columns.Count - 1)
 End If
 MaxRow = DataRange.Worksheet.UsedRange.Rows.Count
 
 'データ範囲の各行について処理
 For Each Rng In DataRange.Rows
  '準備
  LeftCol = Rng.Column
  CurrentRow = Rng.Row
  Hit = True
  '各列について判定処理
  For i = 0 To MaxColumn
   If IsMissing(SearchValues(i)) = False Then
    If Cells(CurrentRow, LeftCol + i) <> SearchValues(i) Then
     Hit = False
     Exit For
    End If
   End If
  Next i
  '終了判定
  If Hit = True Then
   DataSearch = Cells(CurrentRow, LeftCol + (FieldNum - 1)).Value
   Exit For
  End If
  If Rng.Row >= MaxRow Then
   Exit For
  End If
 Next Rng
End Function
    • good
    • 0
この回答へのお礼

ARCさん早速のご回答本当にありがとうございます。会社の同僚と一緒にがんばってみます。VBAを使えば自在にコンピュータを動かせるのですね。今回のことで真剣にVBAを勉強してみようと言う思いが強くなりました。会社の仲間たちはここ最近ゴールの見えない大量のデータ処理に終われて目が死んでいましたが、ARCさんのおかげで瞳に輝きが戻ってきました。社員一同お礼申し上げます。そして私個人としてもこのようなプログラムをこんな短時間で作ってしまわれるARCさんにご尊敬申し上げます。ARCさんのようなプロフェッショナルな技術を得るには相当勉強しなくてはならないでしょうが少しでも近づけるようがんばりたいと思います。また何かありましたらよろしくお願いいたします。

お礼日時:2001/04/24 01:10

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

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

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

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

Qエクセル プルダウンの作り方

お世話になります。
エクセルでプルダウンの作り方を教えていただけませんでしょうか?
住所を▼のボタンでクリックしたら【北海道,青森,秋田,岩手・・・】などの選択ができるようにしたいのです。
宜しくお願いします。

Aベストアンサー

メニューから「データ」、「入力規則」、「設定」で「入力値の種類」を「リスト」を選択します。
そうすると「元の値」という表示がでますので、そこで前もって作っておいたリストの範囲を指定します。
多くないのでしたら、そのままそこにカンマで区切って入力しても出来ます。

QExcelで「A列で任意のグループ」「B列は空白以外」「C列は空白セル」の数

さきほど、質問をした者です。
回答を締め切った後で、追加質問がありますので、新たに質問させていただきます。(たびたびスミマセン)

Excelで「A列で任意のグループ」名、かつ、「B列は空白ではないセル」、かつ、「C列は空白セル」の件数を出したいのです。 (オートフィルタではなく。)

=SUMPRODUCT((A3:A271="グループ名")*(B3:B271="▲▲▲")*(C3:C271=""))

という式を作ったのですが、「B列の空白以外」という条件にする"▲▲▲"の部分はどうすればいいのでしょう?

Aベストアンサー

B3:B271<>""

Qエクセルでプルダウンメニューの作り方

  エクセルの画面で、よく三角形を逆さまにした形をクリックするといくつかメニューが出てき、どれかを選べるようになっていますが、その作り方を教えてください。
 会社で人事を担当していますが、三角形(プルダウンボタン)をクリックすると社員氏名一覧が表示され、そこから選択できるようにしたいのです。
 しばらく自力でいろいろやってみましたが、さっぱり見当がつかず、どうやればいいのか分かりませんでした。よろしくお願いします。

Aベストアンサー

こんばんは!
当方使用のExcel2003での一例です!

↓の画像のようにSheet2に名簿表を作成しておきます。
画像ではSheet2のA2セル以降を範囲指定 → 名前ボックスに仮に「名簿」と入力しOK
これで範囲指定したセルが「名簿」と名前定義されましたので、

Sheet1のリスト表示させたいセルを範囲指定 → メニュー → データ → 入力規則
→ リスト → 「元の値」の欄に
=名簿
としてOK

これでSheet1のセルをアクティブにすると右側に下向き▼が表示されますので、そこをクリック!
これで希望に近い形にならないでしょうか?
Excel2007の場合は↓のURLが参考になるかもしれません。

http://www.eurus.dti.ne.jp/~yoneyama/Excel2007/excel2007-ny_kis2.html

尚、同一Sheetに「名簿表」を作成する場合は名前定義する必要はなくて
「元の値」の右側の四角をクリックし、リスト表示したいセルをそのまま範囲指定すればOKです。

以上、お役に立てば良いのですが・・・m(_ _)m

こんばんは!
当方使用のExcel2003での一例です!

↓の画像のようにSheet2に名簿表を作成しておきます。
画像ではSheet2のA2セル以降を範囲指定 → 名前ボックスに仮に「名簿」と入力しOK
これで範囲指定したセルが「名簿」と名前定義されましたので、

Sheet1のリスト表示させたいセルを範囲指定 → メニュー → データ → 入力規則
→ リスト → 「元の値」の欄に
=名簿
としてOK

これでSheet1のセルをアクティブにすると右側に下向き▼が表示されますので、そこをクリック!
これで希望に近い形にならない...続きを読む

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...続きを読む

Qエクセル(Excel) 納品書の作り方【画像修正版

昨日http://oshiete.goo.ne.jp/qa/7348426.htmlで質問させていただき、詳しくご回答いただき少し進んだのですが、状況が変わったので改めて質問させていただきます。

■エクセル(Excel)で納品書の作成をしています。
シート1に納品書、シート2に商品マスタ(一覧)を作っていて、シート2の一覧を反映させて
納品書に番号を打ち込むだけで、商品名・単価までが出るシステムを作りたいのですが、
昨日のご回答の中の「VLOOKUP」?を入れて、自分なりにマス目の数字を変えてやってみたのですが
反映されずN/?のようなエラーになってしまいます。

※画像が見にくかったのでシート<CENTER></CENTER>だけにしました。

1、上記のように、シート2との関連付けの係数を、写真の場合の数字で教えてください。

2、合計と、合計から20%を引いた数値を割り出す関数も、写真の数字で御願いします。

宜しくご教授お願い致します。

Aベストアンサー

こんばんは!
前回投稿した者です。

当方もかなり古い(人間も古い!なぁ~んちゃって!)Excel2003を使用しています。
↓の画像のようにSheet2にデータを作成しておきます。

#N/A というエラーは、「検索値」がない!ということですので
お示しの画像のB列にSheet2のA列にないデータを入力するとそういったエラーが表示されます。

画像のセル配置ですと
C4セルに
=IF($B4="","",VLOOKUP($B4,Sheet2!$A:$C,COLUMN(B1),0))
(「$」マークの位置に気を付けてください)
という数式を入れD4セルまでオートフィルでコピー!
そのまま最後の24行目までコピーしておきます。

F4セルには
=IF(COUNTBLANK(B4:E4),"",D4*E4)
という数式を入れ、F24までオートフィルでコピー!

これでB列に商品番号を入力すればSheet2のデータが反映され、
E列に数量を入力でF列に金額が表示されると思います。

最後に合計金額のF26セルは
=IF(COUNT(F4:F24),SUM(F4:F24),"")
手数料のF27セルは
=IF(F26="","",F26*0.2)

これで何とか形にならないでしょうか?

※ 振込金額の欄は不明ですので手を付けていません。

参考になりますかね?m(_ _)m

こんばんは!
前回投稿した者です。

当方もかなり古い(人間も古い!なぁ~んちゃって!)Excel2003を使用しています。
↓の画像のようにSheet2にデータを作成しておきます。

#N/A というエラーは、「検索値」がない!ということですので
お示しの画像のB列にSheet2のA列にないデータを入力するとそういったエラーが表示されます。

画像のセル配置ですと
C4セルに
=IF($B4="","",VLOOKUP($B4,Sheet2!$A:$C,COLUMN(B1),0))
(「$」マークの位置に気を付けてください)
という数式を入れD4セルまでオートフィルで...続きを読む

QA列が空白なら、計算式の入っているB.C・・~列も空白で表示する方法。

A列に対して、B.C・・~列にそれぞれ違った式が入っています。
A列が空白だと、B列#N/A、C列1 ・・・と、それぞれ答えが返ってきます。
今までは、各B、C・・列に「A列が空白の場合は表示しない」設定を「条件付書式」を使ったり「IF(ISERROR・・」の関数を使ったり
無い知恵と知識を振り絞って悪戦苦闘の末、1列1列・・こつこつ設定していたのですが
「もっと簡単な方法があるのでは??」と都合のいいことを考えました。

しかし、恥ずかしながら私には知識が無いもので、そんな事が出来るのか、また仮に出来るとしても方法がわかりません。
関数でも、条件付書式でも、何でもかまいません。
指定したセルが空白の場合、そのセルに対して数式が入っている他の複数セルにも何も表示しないように一発で出来るようにするには、
どうすればいいのか教えて頂けませんか?
98です。出来るだけ簡単な方法がありがたいです。
余談なのかもしれませんが、B列にはVLOOKUPの関数、C列には「A列内の数字+1」と言う式が入っています。
C列はA列に0と入力しても、空白でも1という答えが返ってきてしまいます。そこでA列が空白の場合答えが表示されないようにしたいのです。)
宜しくお願いします。

A列に対して、B.C・・~列にそれぞれ違った式が入っています。
A列が空白だと、B列#N/A、C列1 ・・・と、それぞれ答えが返ってきます。
今までは、各B、C・・列に「A列が空白の場合は表示しない」設定を「条件付書式」を使ったり「IF(ISERROR・・」の関数を使ったり
無い知恵と知識を振り絞って悪戦苦闘の末、1列1列・・こつこつ設定していたのですが
「もっと簡単な方法があるのでは??」と都合のいいことを考えました。

しかし、恥ずかしながら私には知識が無いもので、そんな事が出来るのか、また仮...続きを読む

Aベストアンサー

ご質問の「もっと簡単??」、「一発で出来る」という事と解釈して回答しますので、相違していれば読み捨て下さい。
(1)対象範囲を選択
(2)選択された状態で数式を入力、完了時にctrl+enterキー同時に押下して下さい。
   一例ですが以下のようになります。
   =IF(セル<>"",VLOOKUPやセル+1の数式,"")
   セルが""(空白)でなければ数式を実行、空白ならば空白を設定。
為参考.B列はVLOOKUP関数の為、検索値が見つからない場合は#N/Aが戻りますので、IF(COUNTIF(検索範囲,A1),VLOOKUP数式,"")とする方法もあります。

Qエクセル(Excel) 納品書の作り方【改めて】

昨日http://oshiete.goo.ne.jp/qa/7348426.htmlで質問させていただき、詳しくご回答いただき少し進んだのですが、状況が変わったので改めて質問させていただきます。

■エクセル(Excel)で納品書の作成をしています。
シート1に納品書、シート2に商品マスタ(一覧)を作っていて、シート2の一覧を反映させて
納品書に番号を打ち込むだけで、商品名・単価までが出るシステムを作りたいのですが、
昨日のご回答の中の「VLOOKUP」?を入れて、自分なりにマス目の数字を変えてやってみたのですが
反映されずN/?のようなエラーになってしまいます。

※画像が貼り付けてあります。商品名は1番以外伏せさせていただいています。
くっつけてありますが、左側がシート1・右側がシート2です。

1、上記のように、シート2との関連付けの係数を、写真の場合の数字で教えてください。

2、合計と、合計から20%を引いた数値を割り出す関数も、写真の数字で御願いします。

宜しくご教授お願い致します。

Aベストアンサー

画像がいまいちよく見えないのですが、納品書の項目は左から、No、商品番号、商品名、単価、数量、金額でいいのでしょうか(名前は多少違っていても意味があっていればもんだいないです)

でしたら、
C1セルに=IF(ISBLANK(B2),"",VLOOKUP(B2,Sheet2!$A$2:$C$200,2,FALSE))
D1セルに=IF(ISBLANK(B2),"",VLOOKUP(B2,Sheet2!$A$2:$C$200,3,FALSE))
E1セルは空白で
F1セルに=IF(D2="","",D2*E2)
といれて、C1からF1までをコピーしてその下の行にタテに貼り付ければ出来ますよ。
おそらくエラーが出たのは、コピーしたときにVLOOKUP関数の最初のセルの指定がずれてしまっているのでは無いかと思いますよ。     

Q【EXCEL】条件付き書式、A列、C列、D列、E列が同じ値の時にB列の背景色を変えたい

お世話になります。

エクセルの条件付き書式の数式の使い方について教えて下さい。
A列、C列、D列、E列の値が同じ時にB列のセルの背景を青に
塗りつぶしたいと思っています。

なので、「数式を使用して、書式設定するセルを決定」、
「次の数式を満たす場合に値を書式設定」で、数式を
「=A1=C1=D1=E1」と入力し、書式、塗りつぶし、青、
を選択して、条件付き書式を設定しました。
すると、、、画像のような結果になります。

私の感覚だと画像でセルの値が「11」~「15」の時だけ
B列が青になると思うのですが実際の結果は画像の通りです。

先の話の通りA列、C列、D列、E列の値が同じ時だけ
B列のセルの背景を青にしたい場合はどうい数式になるのでしょうか?

すいませんが、詳しい方、数式(関数?)で説明できる方よろしくお願い致します。

追記
可能でしたらA列、C列、D列、E列が空白の時はB列の背景色をなしにしたいと思っております。
→A列、C列、D列、E列に値があって、かつ同じ値の場合のみB列の背景を青にしたいです。

お世話になります。

エクセルの条件付き書式の数式の使い方について教えて下さい。
A列、C列、D列、E列の値が同じ時にB列のセルの背景を青に
塗りつぶしたいと思っています。

なので、「数式を使用して、書式設定するセルを決定」、
「次の数式を満たす場合に値を書式設定」で、数式を
「=A1=C1=D1=E1」と入力し、書式、塗りつぶし、青、
を選択して、条件付き書式を設定しました。
すると、、、画像のような結果になります。

私の感覚だと画像でセルの値が「11」~「15」の時だけ
B列が青にな...続きを読む

Aベストアンサー

AND関数を使えば判定ができるのでは?
 =AND(A2<>"",A2=C2,C2=D2,D2=E2)

A列には常に判定する数値が入っているなら「A2<>""」は不要です。

参考サイト
http://www.relief.jp/itnote/archives/003940.php

Qエクセル2007でプルダウンで選んだものに反応

Excel2007でプルダウンで選んだものに反応して隣のセルが自動入力される方法(エクセル2007)
A1をプルダウンで「猫」「犬」から選べるようにし、「猫」を選んだ場合B1に自動に「111」が、「犬」を選んだ場合B1に自動に「222」と入力されるようにしたいです。
ご教授の程、宜しくお願いします。

Aベストアンサー

VLOOKUP関数での方法です。
(1)別シートに入力文字列と対応コード表を作成。(仮にSheet2のA:B列範囲で順不同)
(2)B1に=IF(COUNTIF(Sheet2!A:A,A1),VLOOKUP(A1,Sheet2!A:B,2FALSE),"")を設定
   入力文字列が存在しない場合は空白としています。

QエクセルでA列文字中にある複数のメールアドレスをそれぞれB列、C列、etcに書き出す。

表題の通りなのですが、具体的には以下の具合です。ソフトはGoogle spreadsheet

A列
1000xxxx1@shop.rakuten.co.jp 1000xxxx2@rakuten.co.jp 1000xxxx3@shop.rakuten.co.jp

この文字列にはメールアドレスが三つほどある(時に、一つ。時に二つ。のことも有り) ので、

B列
1000xxxx1@shop.rakuten.co.jp

C列
1000xxxx2@rakuten.co.jp

D列
1000xxxx3@shop.rakuten.co.jp

というように出来ればと思います。

Aベストアンサー

VBAのSplit関数でいけるかな。
http://officetanaka.net/excel/vba/tips/tips62.htm


人気Q&Aランキング

おすすめ情報