ちくのう症(蓄膿症)は「菌」が原因!?

エクセル詳しい方!!お願いします!

=IF(会計簿!$C$6=”13-ア”,”会計簿!$A$6”,IF(会計簿!$C$6=”13-イ”,”会計簿!$A$6”,IF(会計簿!$C$6=”13-ウ”,”会計簿!$A$6”,IF(会計簿!$C$6=”13-エ”,”会計簿!$A$6,””))))
の返しが会計簿!$A$6になるのを会計簿!$A$6に入力されている値にしたい!

A 回答 (5件)

あらら・・・、今度は絶対参照にしていませんでした ><


=IF(OR(会計簿!$C$6="13-"&{"ア","イ","ウ","エ"}),会計簿!$A$6,"")

これが正解ですね _ノフ○)))グタリ
    • good
    • 1
この回答へのお礼

訂正回答ありがとうございます!
やってみます!

お礼日時:2017/06/11 19:32

No3のesupuressoです。


微妙に式を間違っていましたので訂正します。
訂正前 =IF(OR(会計簿!$C$6="13-"&{"ア","イ","ウ","エ"}),!$A$6,"")"")
訂正後 =IF(OR(会計簿!C6="13-"&{"ア","イ","ウ","エ"}),会計簿!A6,"")

訂正前の式の最後、「 "") 」これが余計でした。 彡O┓ペコリ
    • good
    • 1

数式の計算結果が「"会計簿!$A$6"」となっているため、文字列として返されてきます。


「"会計簿!$A$6"」の「”」を削除することでセル「A6」の値が返ってきます。

IF関数を多用しているようですが、一例として次の式でも同じ意味の計算式が作れますね。
=IF(OR(会計簿!$C$6="13-"&{"ア","イ","ウ","エ"}),!$A$6,"")"")
    • good
    • 1

=IF(会計簿!$C$6=”13-ア”


  ,”会計簿!$A$6”
  ,IF(会計簿!$C$6=”13-イ”
    ,”会計簿!$A$6”
    ,IF(会計簿!$C$6=”13-ウ”
      ,”会計簿!$A$6”
      ,IF(会計簿!$C$6=”13-エ”
        ,”会計簿!$A$6
        ,””
       )
     )
   )
 )

の返しが
 会計簿!$A$6になるのを
 会計簿!$A$6に入力されている値にしたい!

・・・

INDIRECT関数は指定した文字列をセル範囲に置き替えて値を参照します。
 A1セルに「1000」と入力されていたら
 =INDIRECT("A1")

 1000が返ります。
…が、
 ”会計簿!$A$6”

 会計簿!$A$6
と変えるだけで良い。


・・・余談・・・
ダブルクォーテーションが一つ足りないのに気が付いてる?
    • good
    • 1
この回答へのお礼

回答ありがとうございます!
やってみます!!

お礼日時:2017/06/11 19:32

>会計簿!$A$6に入力されている値にしたい!



値を返せばいいということなら以下のように修正すれば会計簿シートのA6の値を返してきます。

=IF(会計簿!$C$6="13-ア",会計簿!A6,IF(会計簿!$C$6="13-イ",会計簿!A6,IF(会計簿!$C$6="13-ウ",会計簿!A6,IF(会計簿!$C$6="13-エ",会計簿!A6,""))))

ただこの式だと「13-ア」でも「13-イ」でも「13-ウ」でも「13-エ」でも、すべて同じ会計簿シートのA6の値を返してきますが、それでいいのですか?
    • good
    • 1
この回答へのお礼

回答ありがとうございます!
やってみます!

お礼日時:2017/06/11 19:33

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

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

Qエクセル SUMPRODUCT関数について

SUMPRODUCT関数を使い、以下の合計を件数を出したいのですが、いろいろ調べてもよくわかりませんのでご教示をお願いいたします。(エクセル2010使用)

【やりたいこと】
以下の表を使用し、「みかん」と「ばなな」を購入した件数を月ごとに合計して表示する関数を作りたい。4月の合計件数はB8セル、5月はB9セル、6月はB10セルに表示できるようにします。

     (A列)  (B列)
(行) 種類  購入日
 1  みかん 4月3日
 2  ばなな 4月15日
 3  りんご 5月6日
 4  りんご 5月30日
 5  ばなな 6月7日
 6  みかん 6月9日
 7
 8 【結果】 4月 2
 9      5月 0
10      6月 2

よろしくお願いします。

Aベストアンサー

こんにちは!

今回の質問の場合は「OR」条件になりますので、足し算にする必要があります。

↓の画像ではA8~A10セルの表示形式をユーザー定義から
0月
とし、単に4とか5という数値のみを入力しています。

B8セルに
=SUMPRODUCT((MONTH(B$1:B$6)=A8)*(A$1:A$6="みかん"))+SUMPRODUCT((MONTH(B$1:B$6)=A8)*(A$1:A$6="ばなな"))

という数式を入れフィルハンドルで下へコピーすると
画像のような感じになります。m(_ _)m

QIF、AND関数について

EXCEⅬの超初心者です。下記の表はA社の「支払い表」見本と、銀行の「振り込み料金表」です。この支払表に送料を表示させたくて、IF関数やAND関数で計算式を作りたいのですが、エラーばかり! どなたか助けていただけませんか!!

◇支払い表 ◇
支払先(口座名) 振込先   銀行番号/支店番号 口座番号 振込金額     送料
川田敦男    三菱東京UFJ/室町   0005/430 4683231 \60016  ?
小野田美奈子 三井住友/新宿西   0009/259 4030041 \27000  ?
田口たつ    みずほ/横浜駅前   0001/292 1207310 \9000  ?
株式会社テレパ みずほ/青山   0001/211 5675505 \31680   ?



◆当行同一支店内宛
3万円未満 216円
   3万円以上 432円

◆当行本支店宛
3万円未満 324円
   3万円以上 540円

◆他行宛(電信)
3万円未満 648円
  3万円以上 864円

EXCEⅬの超初心者です。下記の表はA社の「支払い表」見本と、銀行の「振り込み料金表」です。この支払表に送料を表示させたくて、IF関数やAND関数で計算式を作りたいのですが、エラーばかり! どなたか助けていただけませんか!!

◇支払い表 ◇
支払先(口座名) 振込先   銀行番号/支店番号 口座番号 振込金額     送料
川田敦男    三菱東京UFJ/室町   0005/430 4683231 \60016  ?
小野田美奈子 三井住友/新宿西   0009/259 4030041 \27000  ?
田口たつ    みず...続きを読む

Aベストアンサー

No4の続きです。
I2を順次下にコピペすると I3,I4と自動的に変わりまり、
    右にコピペすると J2,K2と自動的に変わります。
I2 は 相対セルの形式だから。
$I$2 の絶対セルの形式にすれば、どこにコピペしても$I$2は固定のまま変わりません。
詳しくは、参考書で相対セルと絶対セルの違いを確認してください。
G2に入力する式はI2,J2ではなく、$I$2,$J$2の絶対セルで回答してあります。

また
>小生は、IF(C2=100,IF(D2=1,・・・つまりCとDを振り出し銀行ナンバー、支店のナンバーを” ”で囲って(文字認識化)、この双方の文字に当てはまるもの、一つに当てはまるもの、すべてに当てはまらないもの、として選択しようとしていました。

この考え方で概ねよいですが、「一つに当てはまるもの」については
もしも他行の支店番号が貴方のみずほ銀行の支店番号と同じになることがあり得るなら
他行とみずほの判別を追加する必要があると思います。

Q下記計算式の解説をお願いいたします。

{=IF(ROW($E2)-1<COUNTIF($E$2:$E$2272,$T$2),INDEX($J$2:$J$2272,SMALL(IF($E$2:$E$2272=$T$2,ROW($E$2:$E$2272),99999),ROW($E2))),"")$E$2272),99999),ROW($E2))),"")}

言葉足らずな点は補足します。よろしくお願いいたします。

Aベストアンサー

No.1です。

>配列数式を使わずに出来ますか?

作業用の列を使えば可能です。
仮にF列を作業用の列として使った場合は
F2セルに
=IF(E2=T$2,ROW(),"")

という数式を入れフィルハンドルでダブルクリック、
もしくはE列にこれ以上データはない!という位まで下へコピーしておきます。

表示したいセルに
=IFERROR(INDEX(J:J,SMALL(F:F,ROW(A1))),"")

という数式を入れフィルハンドルで下へコピー!
これで配列数式にしないで対応できると思います。

※ 作業列が目障りであれば遠く離れた列にするか
非表示にしておいてください。m(_ _)m

Qexcelで条件に合うよう、複数のセルの合計を求めたい

例えば、次のように並んでいるセルの数値があるとします。

1515
2748
540
5509
2195
680
7142
305
5042
530
667
325
9950
4800

その合計が30000以上で、かつ、最小の数字となるよう、複数のセルを選択したいと思いますが、これを実現できる関数はありますか?

Aベストアンサー

いわゆる「ナップザック問題」と呼ばれる種類の問題になると思います。

14個を選択する/しないなら、総当りしても16384個ですから、力技でも行けるかも。
画像を参考に、
1行目にデータの数値を横並び。
2行目に0~13の固定値を右から
3行目に2の0乗~2の13乗(8192)の固定値を右から
A列に0~16383の固定値
で、

B4:O16387の範囲に、
B4:=MOD(INT($A4/B$3),2)
をコピペして2進数の各桁の値を

P4:P16387の範囲に、
P4:=SUMPRODUCT($B$1:$O$1,B4:O4)
をコピペして、2進数の各桁のビットとデータの数値の積和

で、全16384通りの計算が行われるので、A4:末尾を選択して並べ替えすると、
合計が30002となる、
1515
2748
2195
680
7142
305
667
9950
4800
が確認できるとか。

--
もっと数値の数が増えると、この方法では厳しいので、

ナップザック問題をExcelで解く
http://www.geocities.co.jp/SiliconValley-Oakland/8139/

みたいなプログラムで解くような事になります。


条件が違うのでプログラムはそのまま使えませんが、似た質問。

エクセルで、「袋詰め問題」を解きたい - Excel(エクセル) 解決済 | 教えて!goo
https://oshiete.goo.ne.jp/qa/1255891.html

いわゆる「ナップザック問題」と呼ばれる種類の問題になると思います。

14個を選択する/しないなら、総当りしても16384個ですから、力技でも行けるかも。
画像を参考に、
1行目にデータの数値を横並び。
2行目に0~13の固定値を右から
3行目に2の0乗~2の13乗(8192)の固定値を右から
A列に0~16383の固定値
で、

B4:O16387の範囲に、
B4:=MOD(INT($A4/B$3),2)
をコピペして2進数の各桁の値を

P4:P16387の範囲に、
P4:=SUMPRODUCT($B$1:$O$1,B4:O4)
をコピペして、2進数の各桁のビットとデータの数値の積...続きを読む

QEXCELで集計する数式について

EXCELで集計する最も最適な数式があれば教えてください。

シート①の表を別のシートに集計して反映させる数式があれば教えてください。

現在はイコールを使って別シートに反映させてますが、集計量が多くなり簡単に対応できなくなってしまい、困っています。
よろしくお願いします。

Aベストアンサー

B1セルに 0
C1セルに =COUNTIF($C$3:C8,"<>0")
右へオートフィル

A14セルに
=IF(ROW(A1)>$F$1,"",INDEX($C$2:$F$2,MATCH(ROW(A1)-1,$B$1:$F$1)))
B14セル
=IF(A14="","",INDEX(A:A,SMALL(IF(INDEX($C$3:$F$8,,MATCH(A14,$C$2:$F$2,0))>0,ROW($C$3:$C$8)),COUNTIF($A$14:A14,A14))))
[Ctrl]+[Shift]+[Enter]配列数式、{}で囲まれる。
C14セル
=IF(A14="","",INDEX($B$3:$B$8,MATCH(B14,$A$3:$A$8,0)))
D14セル
=IF(A14="","",INDEX($C$3:$F$8,MATCH(B14,$A$3:$A$8,0),MATCH(A14,$C$2:$F$2,0)))
A14:D14セル 下へオートフィル

Qエクセル 関数 教えてください!

添付画像のようにしたいのですが、エクセルでそんなことが出来るのか分かりません。
賢者の皆様、知恵をお貸しください。

詳細はこんな感じです。

①②③は条件付書式ということはなんとなく分かります!
僕なりに一生懸命悩んでしましたが、浅知恵のためお手上げ状態です。。

①=予想と結果が1番で一致したときに、予想列の該当セルを黄色に塗りつぶす
②=予想と結果が2番で一致したときに、予想列の該当セルを赤色に塗りつぶす
③=予想と結果が3番で一致したときに、予想列の該当セルを緑色に塗りつぶす
④=予想A、予想B合計の統計点数を出す(1番予想が3点、2番予想は2点、3番予想は1点)
⑤=④を数字の大きいもの順に抽出する(同じ値は表示順で抽出)
⑥=1番予想が予想通りになった確率を求める
⑦=2番予想が予想通りになった確率を求める
⑧=3番予想が予想通りになった確率を求める

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

Aベストアンサー

こんばんは!

①~③は大丈夫というコトなので・・・

④~⑤についてだけ
まず④は
↓の画像のように作業用の表を作成するのが簡単だと思います。
「作業表1」は1番~3番の「得点?」の表を作成しておきます。
K2セルに
=IF(B9="",0,VLOOKUP(B9,$O$2:$P$4,2,0))+IF(F9="",0,VLOOKUP(F9,$O$2:$P$4,2,0))

という数式を入れ列・行方向にフィルハンドルでコピー!

⑤について
「作業表2」のO11セルに
=COUNTIF(K$2:K$8,">"&K2)+COUNTIF(K$2:K2,K2)

という数式を入れフィルハンドルで右へ3列分・下へ7行コピーしておきます。
そしてK11セルに
=INDEX($J$2:$J$8,MATCH(ROW(A1),O$11:O$17,0))

という数式を入れ列・行方向にフィル&コピー!
これで画像のような感じになります。

※ 作業用の表が目障りであれば遠く離れた列にするか
非表示にしておいてください。

⑥~⑧については
0%か100%のどちらかになってしまいますよね?
それでも良いのであれば・・・
B17セル(%表示にしておく)に
=(VLOOKUP($A17,$A$3:$D$5,COLUMN(),0)=INDEX($A$9:$A$15,MATCH($A17,B$9:B$15,0)))*1

という数式を入れフィルハンドルで列・行方向にコピー!

B17セルを選択 → B17セルの四辺にマウスポインタを移動させ上下左右の小さな矢印になったところで
Ctrlキーを押しながらF17セルまでドラッグ&ドロップ
数式内の「COLUMN関数」だけに手を加え
=(VLOOKUP($A17,$A$3:$D$5,COLUMN(B1),0)=INDEX($A$9:$A$15,MATCH($A17,F$9:F$15,0)))*1

という数式にして、これも列・行方向にフィル&コピー!

こんな感じではどうでしょうか?m(_ _)m

こんばんは!

①~③は大丈夫というコトなので・・・

④~⑤についてだけ
まず④は
↓の画像のように作業用の表を作成するのが簡単だと思います。
「作業表1」は1番~3番の「得点?」の表を作成しておきます。
K2セルに
=IF(B9="",0,VLOOKUP(B9,$O$2:$P$4,2,0))+IF(F9="",0,VLOOKUP(F9,$O$2:$P$4,2,0))

という数式を入れ列・行方向にフィルハンドルでコピー!

⑤について
「作業表2」のO11セルに
=COUNTIF(K$2:K$8,">"&K2)+COUNTIF(K$2:K2,K2)

という数式を入れフィルハンドルで右へ3列分・下へ7行コピーしておきま...続きを読む

Qexcel で質問です。

画像のA97には
=IF(FALSE=OR(B97="",LEFT(B97,1)=" ",LEFT(B97,1)="("),ABS(A96)+1,ABS(A96)*-1)
が入っています。

画像のAB97には
=IF(LEFT(J97,1)<>"・","-","")
が入っています。

こういう感じのexcelの使い方を勉強したいのですが、excelの本が多くてよくわかりませんでした。

どういう書籍を購入すべきか?あるいはどこかのサイトでこういう使い方を専門に取り扱っている。などで構いませんのでよろしく御教授願います。

Aベストアンサー

表紙に
初歩の、初めての、入門、これから始める、…
の言葉がある書籍で、かつ、
実際にパラパラと捲ってみて、
貴方の表現を借りると「こういう感じの」数式(関数と呼ばれます)がいっぱい載っている書籍がお奨めです。

ついでながら、貴方が挙げた
=IF(FALSE=OR(B97="",LEFT(B97,1)=" ",LEFT(B97,1)="("),ABS(A96)+1,ABS(A96)*-1)
の式は無駄な部分(は他人を戸惑わせます)が式を長くしています。無駄だけを省いたのが下記。
=IF(OR(B97="",LEFT(B97,1)=" ",LEFT(B97,1)="("),ABS(A96)*-1,ABS(A96)+1)

Qエクセル 関数について

エクセル表を作成しているのですが、わからない関数について教えてください!
画像のようなデータ表(タイトル=☆☆とします)から別シートへ、基準にもとづき自動入力されるようにしたいです!

抽出先の新しいシートですが、
A1=空白です
A2=名前
B1,C1,D1,E1,F1,G1,H1=日付を順に入力しています
B2,C2,D2,E2,F2,G2,H2=日付からTEXT(B1,"aaa")で曜日を出しています
A3,A4=画像のデータから名前を出しています(=☆☆!G3)
A4,A5=画像のデータから名前を出しています(=☆☆!G4)
A6,A7=画像のデータから名前を出しています(=☆☆!G5)
A8,A9=画像のデータから名前を出しています(=☆☆!G6)

①B~Hの3,5,7,9行目に☆☆シートをもとに労働時間を抽出したい

②B~Hの4,6,8,10行目に☆☆シートをもとに出勤時間を抽出したい

③抽出する際は休みの日は空白にしたい
→☆☆!A3:F6にない曜日は空白

④抽出する際は別シートの祝日データをもとに、祝日も空白にしたい
※祝日データは別シート(シート名=祝日一覧のA1:A17に祝日の日付が入っています
→D,E,Fはゴールデンウィークのため無条件で空白

空白は✖を入れています。
横並びのデータの区切り目は・で区切っています
A列の3,4、5,6、7,8、9,10はセルを結合しています

//// A・B・C・D・E・F・G・ H
1】✖・5月1日・5月2日・5月3日・5月4日・5月5日・5月6日・5月7日
2】名前・月・火・水・木・金・土・日
3】A・7・7・✖・✖・✖・7 ・✖
4】結合・10:00・10:00・✖・✖・✖・10:00・✖
5】B・✖・5.5・✖・✖・✖・✖・✖
6】結合・11:00・✖・✖・✖・✖・✖
7】C・4・10・✖・✖・✖・4・✖
8】結合・12:00・12:00・✖・✖・✖・12:00・✖
9】D・3・8・✖・✖・✖・✖・✖
10】結合・19:00・14:00・✖・✖・✖・✖・✖



こうなるように作り上げたいのですが関数が分かりません。
IF関数やFINDを使って試行錯誤しているのですが、エクセル初心者で知識が浅すぎて入れている関数ではエラーになってしまいます。。
賢者の皆様、知恵をお貸しください。。

エクセル表を作成しているのですが、わからない関数について教えてください!
画像のようなデータ表(タイトル=☆☆とします)から別シートへ、基準にもとづき自動入力されるようにしたいです!

抽出先の新しいシートですが、
A1=空白です
A2=名前
B1,C1,D1,E1,F1,G1,H1=日付を順に入力しています
B2,C2,D2,E2,F2,G2,H2=日付からTEXT(B1,"aaa")で曜日を出しています
A3,A4=画像のデータから名前を出しています(=☆☆!G3)
A4,A5=画像のデータから名前を出しています(=☆☆!G4)
A6,A7=画像のデータから名前を出し...続きを読む

Aベストアンサー

こんにちは

ご質問の前半の①、②は単なるセルの参照なので、参照するセル位置を計算すればよいだけですね。
残りの③、④は、ご質問文だけではよくわかりませんが、空白にする条件式を作成して、上記の参照をする代わりに空白にすれば済むでしょう。
ただし、表計算で集計することを考慮した表の作り方とは思えないので、計算を面倒にしているだけとも思えますが・・・

①、②に関しては元の表から参照する位置を計算できれば、INDEXやOFFSET関数で求めることができます。
行数は、「(=☆☆!G3)」のように直接指定のようなので、名前から検索する必要はないみたいなので、単純に「抽出シート」の3、4行が元シートの4行に、5、6行が元シートの5行を…といった按配で参照できればよいので、
 行は INT((ROW()+1)/2)+2 のような計算で算出できると思います。
添付の図では4行目から実データが始まっているようなので、上記の計算にしていますが、図をよく見ると実際は3行目なのかも知れませんので、その場合は調整が必要です。

列に関しては、日付で元シートから検索するにしても、元シートに日付欄が無いようなので、どうやって照合なさるつもりなのかわかりませんが、例えば元シートの2行目の曜日表示はDATE型の値を曜日表示しているものと仮定するなら、
 MATCH(B$1,元シート!1:1,0)
で、該当する列数を得ることができます。(H列なら8、K列なら11・・・)
「出」を参照したい場合はそのまま、「退」なら+1、「計」は+2をすることで参照したい列を算出することが可能です。
あとは上記の行と列を利用してINDEXやOFFSET関数で参照すればよいだけです。

③に関しては、元シートのA~F列に該当する曜日の文字があるかをチェックすれば良いので、
 ISERROR(MATCH(TEXT(B$2,"aaa"),OFFSET(元シート!$A$1,対象行数-1,0,1,7),0))
のようなチェックをかければ判別できるでしょう。
(↑の式中の「対象行数」は①で求める、対象行の式を意味します)
他にももう少しスマートな方法がありそうな気もしますが・・・とりあえずの方法として。

④も③と同様ですが、別シートのデータがどのようになっているのか不明なのでよくわかりません。
>A1:A17に祝日の日付が入っています
とのことなので、日付で検索して該当するものがあるかないかで、ほとんど③と同様の方法で判別が可能と思います。
それぞれが作成できたなら、それらのORをとれば、求める条件になるものと思います。

これらの式を順に組み合わせてゆけば、ご希望の関数式を作成できると思いますが、一気に結果を求めようとすると式が複雑になる傾向が多分にありますので、中間集計シートを作成したり、作業列や行を利用するなどして、集計(といっても単なる参照ですが)をしやすい形に変換しておくという方法のほうがやり易いかも知れませんね。

回答を考えながら感じた個人的な感想を言わせてもらえば、計算で表示する仕組みをほとんど考慮せずに作成された表形式だという気がします。
なさりたいことは基本的には単純な参照に近い内容なので、計算の仕組みを事前に考えて全体の構成を行えば、ほとんど同じ内容の表でも、もっと簡単に計算が可能なものができるものと思います。
きつい言い方ですが、わざわざ複雑で難しいものにしておいてから、「自動計算は誰かやってくれ~」と言っいるような気がします。

こんにちは

ご質問の前半の①、②は単なるセルの参照なので、参照するセル位置を計算すればよいだけですね。
残りの③、④は、ご質問文だけではよくわかりませんが、空白にする条件式を作成して、上記の参照をする代わりに空白にすれば済むでしょう。
ただし、表計算で集計することを考慮した表の作り方とは思えないので、計算を面倒にしているだけとも思えますが・・・

①、②に関しては元の表から参照する位置を計算できれば、INDEXやOFFSET関数で求めることができます。
行数は、「(=☆☆!G3)」のように直接指定のよ...続きを読む

QCellsがコピーできません

自分なりに下記条件でコード書いてみましたが、
うまくコピーできませんTT
説明不足かもしれませんが、どこがイケないのか
どなたかご教授いただけないでしょうか
当月末までに何とかしたいのですが、、、

不具合がある各商品データを行10~150、outdataシートに集約
列CにBOX-Noを持っており、setdataシート列CのBox-Noと一致したら
outdataシートからsetdataシートにその行ごと(商品データ)コピー
outdataがなくなるまで繰り返し、但し一商品に不具合が複数もある

outdataシートは月末には10~150行で増減がある(box-noはランダムで並ぶ)

setdataシートには商品すべてが入力されているレイアウトになっている
列CのBox-Noで商品名を検索し貼り付け(商品の一定位置行は決まっていない)
各商品には不具合データ貼り付け行が直下に5~30行ほどある


Sub tenki()

Set ws = Worksheets("setdata")
Set wo = Worksheets("outdata")

For outcnt = 10 To 150
outbox = wo.Cells(outcnt, "C")

If outbox <> "" Then

For setcnt = 1 To 3000
setbox = ws.Cells(setcnt, "C")

If outbox = setbox Then
wo.Range(wo.Cells(outcnt, "C"), wo.Cells(outcnt, "Z")).Copy _
Destination:=ws.Cells(setcnt + 2, "D")
End If

Next setcnt

End If

Next outcnt

End Sub

自分なりに下記条件でコード書いてみましたが、
うまくコピーできませんTT
説明不足かもしれませんが、どこがイケないのか
どなたかご教授いただけないでしょうか
当月末までに何とかしたいのですが、、、

不具合がある各商品データを行10~150、outdataシートに集約
列CにBOX-Noを持っており、setdataシート列CのBox-Noと一致したら
outdataシートからsetdataシートにその行ごと(商品データ)コピー
outdataがなくなるまで繰り返し、但し一商品に不具合が複数もある

outdataシートは月末には10~15...続きを読む

Aベストアンサー

ANo1です。

未だに、なさりたいことがよくわかりません。
意図と違う動作をするコードを示されても、実際になさりたいことを理解することはできませんね。

>なぜこうなるのか、手詰まりしていますTT
>何が足りないのでしょうか
記入される行位置が、意図するところと違うのだろうと想像しますが、それを決めているのは
>ws.Cells(setcnt+2, "D").End(xlup).Ofset(1,0)
という1行の計算部分です。
対象がはっきり絞り込めているので、この部分でどのように計算されているかを手計算でシミュレートしてみるとか、あるいは、デバッガのウオッチ式を利用しながら追跡してみたりすば、比較的簡単に理解できるのではないでしょうか?


以下は、私が勝手な想像で「こんなことでは?」と考えたものなので、内容的には異なる可能性が高いですがご参考までに。

※ ご例示の図ではデータの転記のされ方が説明文やご提示のコードと違うので、ますますわからなくなりますが、ご提示のコードでは『C~Z列のデータをD列~へ』転記するように記されていますのでそれに習っています。
(そうすると、C列の「Box○」の文字も転記されるので、何か違いそうですが…)
※ 「setdataシート」の構成い¥について、以下の仮定をしています
 (仮定が成立しない場合は、私の意図通りにも動作しません)
 ・C列にはキーとなる「Box○○」(○は数字)以外の文字は記入されていない
 ・同上の記入のある行から(2行下か?)から転記を始めるようですが、
  その2行分のD列には必ず何らかの記入がある(空白となっていることはない)
 ・同様に転記したデータの行でも、D列が空のものは存在しない
  (D列の空行を探して、転記していますので)
※ Box○○間の行数が少なくて転記できなくなった場合や、検索キーとなるBox○○と一致するものが「setdataシート」に存在しない場合は、とりあえず転記せず、その行数をカウントするようにしています。
実際には、いろいろな対処法が考えられると思います。
例えば、見当たらない場合は追加の項目を作成するとか、行を追加して記入するとか・・・
よくわからないので、カウントしておいて最後にその数を表示するようにしてあります。

※ あくまでも勝手な想像に基づいた処理ですので、(私にはわからない)質問者様の本当になさりたいこととは異なる可能性が大です。

Sub testSample()

Dim shs As Worksheet, shd As Worksheet
Dim rw As Long, r As Long, rTmp As Long
Dim val, errCount As Integer

errCount = 0
Set shs = Worksheets("outdata")
Set shd = Worksheets("setdata")

For rw = 10 To shs.Cells(Rows.Count, 3).End(xlUp).Row
 val = shs.Cells(rw, 3).Value
 r = 0
 On Error Resume Next
  r = WorksheetFunction.Match(shs.Cells(rw, 3).Value, shd.Columns(3), 0)
  If Err.Number <> 0 And val <> Empty Then errCount = errCount + 1
 On Error GoTo 0
 
 If r > 0 Then
  rTmp = shd.Cells(r, 4).End(xlDown).Row + 1
  If rTmp < shd.Cells(r, 3).End(xlDown).Row Then
   shd.Cells(rTmp, 4).Resize(, 24).Value = shs.Cells(rw, 3).Resize(, 24).Value
  Else
   errCount = errCount + 1
  End If
 End If
Next rw

If errCount > 0 Then MsgBox "転記できないものが " & errCount & "件ありました"
End Sub

ANo1です。

未だに、なさりたいことがよくわかりません。
意図と違う動作をするコードを示されても、実際になさりたいことを理解することはできませんね。

>なぜこうなるのか、手詰まりしていますTT
>何が足りないのでしょうか
記入される行位置が、意図するところと違うのだろうと想像しますが、それを決めているのは
>ws.Cells(setcnt+2, "D").End(xlup).Ofset(1,0)
という1行の計算部分です。
対象がはっきり絞り込めているので、この部分でどのように計算されているかを手計算でシミュレートしてみるとか...続きを読む

Qエクセルの関数で

以下の算式を満たすエクセルの関数を教えていただけないでしょうか。

セルA1(①) セルA2(②) セルA3(③) セルA4(④) セルA5(⑤)


③=①-②
④=③÷② 小数点3位未満切り捨て
⑤ ④が0.05超の場合  0.09+((④-0.05)×0.3  (上限0.1) 小数点3位未満切り捨て
④が0.05以下の場合 0.09-((0.05-④)×0.1  (下限0.06) 小数点3位未満切り捨て


ここの⑤を満たす式を教えてください。

例えば①531,116,991②646,729,949のとき⑤は0.067となります。

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

Aベストアンサー

0.05超の場合の式…⑥
0.05以下の場合の式…⑦
IF(④>0.05,IF(⑥>0.1,ROUNDDOWN(⑥,×),0.1),IF(⑦<0.06,0.06,ROUNDDOWN(⑦,×)))

×部分はうろ覚えです、小数点第三位なら「3」…ですかね…?

以上でどうでしょう


人気Q&Aランキング

おすすめ情報