▼━質問時の注意・決まり事━━━━━━━━━━━━━━━━━━━━ ・1 現行スレ内で既出の質問が無いか、ページ内検索をしよう。(Ctrl+F) ・2 図やコードを書く場合、TABや連続する半角スペースは無視されるので注意 ・3 VBAコードを貼る場合は、部分的に伏せたり省略したりせずに全て貼りましょう。何レス使っても構いません。 ・4 2回目以降の質問では名前欄に初回質問の番号を入れよう。 ・5 回答内容でわからない部分があっても、すぐに聞き返さずにヘルプやGoogleなどで検索しましょう。 ・6 バグ・動作上の不都合・仕様に関する質問などはマイクロソフトのサポートを受けましょう。 ここは技術的な質問のみで。 ・7 VBAはプログラム言語のVisualBasic(6以前)に近い処理が可能で Excelに関係ないことも出来ます。 Excelの操作に関係ない部分は、スレ違いなのでここで聞かずにVB言語やAPI、COMについて自分で勉強し、 どうしてもわからない部分はVBスレやAPIスレなどの該当スレで質問しましょう。 但し向こうはプログラマのスレなので、構文規則などの最低限の事は覚えてから質問しましょう。 ここみたいに丸投げはダメですよ。 ・8 うまくいかなかったにしても自分でやってみたこと(組んだ数式やコード)は書きましょう。 例えエラーになる式やコードでも、何をやりたいのかを的確に把握する手がかりになります。 その上で、どううまくいかないのかを具体的に書きましょう。 エラーが出るなら、何処でどういうエラーが出るのか、 想定外の結果が出るなら、条件と想定上の結果、実際の結果などを詳しく書いてください。 ・9 マルチはダメ。一度マルチしたら、謝っても他のスレの質問を取り下げても回答は得られないと思ってください。 ・A テキストボックス(エディトボックス)、コンボボックス(ドロップダウンリスト)、リストボックス、コマンドボタン、 チェックボックス、オプションボタン(ラジオボタン)、スピンボタン、スクロールバー、等の質問をするときは、 ユーザーフォーム、コントロールオブジェクト、フォームオブジェクトのどれなのかを必ず書くこと。 ・B 書籍や解説サイトの紹介以来はスレ以外。ここは技術的な質問のみで。
>>1 乙です
早速質問させてください
【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 いいえ(英語的に色変更やセル変更などはできる程度)
【4 VBAでの回答の可否】 簡単なものであれば
範囲の中に一つだけ色がついてあるセルがあります
MAX関数のように、この色がついてるセルを導き出したいのですが、そのような関数or機能はあるでしょうか?
範囲は各行。右に現在の数値として、[ ]の値(色付きセル)を表示したい
1 [2] 3 4 5 → 2
1 2 3 [4] 5 → 4
[1] 2 3 4 5 → 1
マクロ使わないと無理じゃね? for each c in activesheet.usedrange if c.interior.colorindex <> xlnone なんか処理 endif next
5 :
988 :2014/05/01(木) 16:25:05.29
>>5 なんで最初からhtm形式で保存&うpしないの?
表とテキストしかないのに。
7 :
988 :2014/05/01(木) 17:11:19.69
>>6 今までhtmlでやってきたのですが、
Excelの方がスッキリしてていいなぁ…と試していたところ、
上手くいかないので質問させていただきました。
自分でも相当調べてみたんですが、
どうしてもわからず、モヤモヤと……
mhtはマイクロソフトの独自形式かも。IEなら開ける。
>>3 セルの色を調べるような処理は、すべてVBAを使わないと無理と思っていい
色の付いたセルの場所とか、セルが何色かとか
例外は条件付き書式で色を付けたセルに対して、同じ条件式を使って判定する時ぐらい
>>8 うちのIE11では開けないんですよねぇ。
バージョンの問題でしょうか。調べてみます。
>>10 その書き込みにも目を通してはいましたが
やはり非対応という解釈になりますか。
設定変更は無理みたいなので他の方法を模索してみます。
ありがとうございました。
前スレ
>>992 の
=lookup(1,0/(a$1:a1<>""),a$1:a1)
これの解説だれか
lookupのヘルプには、
第二引数にソートされた配列じゃない場合は正しい結果を返さない
としか書いてなくて、実際には何が返るのか不明
>>11 直接は開けないけど、ローカルに保存すればIEで開けるという意味だった
たぶん
>>10 のいうとおり
>>3 です。
>>4 >>9 お答え有り難うございます
やはりVBAしか方法がないのですね…
データ量が少ないので手動で行いつつ、
>>4 を参考に調べてみます
ありがとうございました
>>12 なかなかおもしろそうだったので調べてみた。
まず(A$1:A2<>"")この部分は配列で返る。これは事前に勉強してね
割り算の意味は、
0/TRUE は0
0/FALSE はエラー
が返ることを利用する
見た目通り、第二引数が肝心です。
lookupは一番最後にマッチしたもの、またマッチしなければそれ未満の数でマッチしたものが返るっぽい。
そしてエラーは基本無視する。エラーしかなければエラーNAが返る。
つまり検査範囲は0かエラーのみになる。
第一引数は0より大きければなんでもいいことになる。まぁ1でいいだろうな。
A1A2に"a"
a3a4に"b"
でB3を見ると
=lookup( 1, { 0; #div/0!; 0}, A$1:A3)
読めるようになったかな?
エラーは虫、1未満の数で最後にマッチしたものなので、A3、すなわち"b"を返す
この仕様、公式に書いてないので怖くて業務用には使えないけど
>>15 ありがとうございます。
第二引数がソートされてない場合は最後にマッチした結果を返す、という部分がミソですね。
これ最初に考えた人、どんな頭してんだろ…
縦方向の結合セルに対して、この式使えば便利だと思ったんですが、
確かにいつ変わるかわからない仕様なので業務で使うのは止めときます
17 :
名無しさん@そうだ選挙にいこう :2014/05/02(金) 09:09:43.81
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 それしか方法がなければ可 やりたいこと 別のフォルダにあるBookからID検索で顧客の名前、生年月日、性別を反映させたい。 過去に作成した顧客データがあるのですが、1月〜12月と月ごとにフォルダ分けしています。 原本であるBookの顧客ID欄にIDを入れると過去に作成した顧客データからデータを反映させるには どうすればいいでしょうか?
原本に過去データのシートをコピーしてvlookupでも使えば? 見た目悪ければ、過去データのシートは非表示で
19 :
17 :2014/05/02(金) 10:50:51.15
作業を早くする為にそうしたいという希望ですので 出来ればID入力で済ませたいです。
>>19 顧客データのブックは12個?それともフォルダが12個で、その中にブックが複数ずつ入ってるの?
その顧客データは追加や修正されることはある?
▼━質問テンプレ (必ず使ってね) ━━━ 【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 はい・いいえ 【4 VBAでの回答の可否】 可・否 テーブルと書式設定をした上で、AからOまでセルを使い、価格表を作っている。 途中いくつかのセルに簡単な足し算の式を入れたんだが、昨日までは例えば B10に日付を入力すると、書式設定が反映されて、上の式が自動で下におりてきて、 入り、セルのデザインも書式設定のデザインに変わったんだが、いきなりできなくなった。 ほかのexcelファイルもどうやらそうみたい。 原因わかる方いますか?
23 :
17 :2014/05/02(金) 12:31:33.36
>>20 その年度のフォルダ内に1月〜12月までのフォルダがあります(12個)
そして月ごとのフォルダ内に複数(詳細は不明ですがかなりの数)の顧客データがあります。
新規の顧客も継続されている顧客も関係なく常に新しいbookで作成しますので
顧客データの追加はありますが修正は今のところ不明です。
26年度のフォルダ→1月〜12月のフォルダ(12個)→顧客データ(かなりの数)
こういった形です。
継続されている顧客のbookを作成する際に、顧客IDを入力する名前、生年月日、性別が
反映される仕様にしたいのです。
>>23 めんどくさすぎて笑えるw
ID打つ度に全部のブックを検索すんのか?w
25 :
17 :2014/05/02(金) 13:04:51.21
>>24 めんどくさいという事は可能なんでしょうか?
>>25 可能だけどVBA必須なのと、1件入力するたびに検索で数十秒待たされる可能性がある
作るのも面倒だし、使うのも面倒な物になりそうな悪寒
対策の一つとしては、毎日朝一番にまず最新の検索用の名簿を作って、入力作業中はその名簿から検索するように作る
これなら名簿のアップデートに数分、あとは瞬時に検索できるようになるはず
この規模になるとボランティアで作れるもんじゃない
プロに金を払って作って貰うレベル
27 :
17 :2014/05/02(金) 14:09:36.44
>>26 可能だけど実用的ではないという事ですね。
わかりました。教えて頂いた理由を添えて断ることにします。
わざわざ教えて頂きありがとうございました。
ソフトの作成に20万かけて、月給10万の入力要因のパートを一人クビにできれば、3ヶ月目からは利益が出る計算だけどな
29 :
17 :2014/05/02(金) 14:35:30.31
名前、生年月日、性別だけの項目ではないので少し厳しいかと思います。
>>22 自動になっております。他に原因ありますか?
>>21 ,30
>入力すると、書式設定が反映されて、上の式が自動で下におりてきて
マクロかな?
そのエクセルのセキュリティの設定が変更されてませんか?
ファイルタブ−オプション−セキュリティセンター−セキュリティセンターの設定 と開いていき
マクロの設定(4通り)のうち「警告を表示せずにすべてのマクロを無効にする」が選択
されてないか、みてください。
>>25 書式設定が隣のセルから勝手にコピーされるのはわかるけど、式まで自動入力されるなんて初めて聞いたわ
>>31 のいうとおりマクロだろうな
あと、マクロ署名の証明書有効期限が切れたとか
テーブルだとふつうにしてくれる機能だけどな いっこのセルに式いれると全部の行に同じ式がはいる
テーブルの範囲が解除されちゃってるんじゃね?単に。
>>32 関連で…
お節介機能は出来るだけを消しているんだけど、
隣の書式のコピーを止められないかな?
36 :
名無しさん@そうだ選挙にいこう :2014/05/04(日) 00:22:42.98
複数のExcelファイルに書かれているデータを 行にデータがある箇所だけ抜き取って まとめて別の一つのExcelファイルにまとめたいのですが そういうやり方とかあるのでしょうか?
http://imgur.com/IglyEDz.jpg 勤務表なんですが、
13:00〜18:00という勤務の日は、書式設定の表示形式を、 [h] にして分を表示させないようにしていて
11:30〜17:30という勤務の日は、とくに設定を変えずそのまま表示してます。
これを、 13:00 と入力した時だけ表示形式を自動で[h]にして 13 と表示されるようにすることってできませんか??
さらに、入力する際に 13 と入力するだけで、表示形式が[h]の 13:00 になるようにできませんか?
▼━質問テンプレ (必ず使ってね) ━━━
【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
>>38 単に「13」とだけ入力すると、それは13日(24時間×13日=312時間)という意味になってしまうので、
VBA不可ならシリアル値(本当の日付けや時間)を使うのをあきらめて、13日を13時とみなして扱うしかない
>>36 いくらでもあるが、場合による。
恐らくある程度決まっているだろうけど、全てのブック名、その中のシート名を列挙
>>38 そのままの要望だとvba必須
そうでなければ作業列を用いて、G列に
=if(g1=13,0.54166666666,g1) ・・・
みたいなアホな式を立てる必要がある
そうでなければ、基本的に全体を「時間」「分」に分ける必要がある
1 火 12 00 - 18 00
のようにするしかない
間違いなく後者のほうが良いだろう
>>38 分が0の時に表示しないだけなら条件付き書式で
数式 =MINUTE(A1)=0
書式 h
にするだけ
42 :
38 :2014/05/04(日) 19:30:16.39
>>39-41 親切丁寧な解答、すごくありがたいです!
後者の要望に関してはさすがにVBAか複雑な式が必要になってしまうんですね・・。
前者の要望に関しては、
>>41 の条件付き書式を設定して使うとよさそうですね。
これで楽になりそうです。ありがとうございました!
質問です エクセルでフィルタかけて、抽出した行のみをまとめて色つける方法はありますか? ドラッグドロップすると消えた行もまとめて色付けされてしまうorz
A1 あ A2 い A3 あ あ でフィルタかけてA1:A3を塗ると い も塗ってしまうってことだな A1:A3を選択 ホーム 検索 条件を選択してジャンプ 可視セル の状態で色塗りすればok
>>44-46 ありがとうございます!
おかげで120行を一つづつctrl+しなくてすみます
範囲選択した後、alt+;でええやん
>>48 そんなんあったのか、thx
そういや新しいショートカットキー、いつからか覚えなくなったなぁ
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 多少 【4 VBAでの回答の可否】 否 別ファイルか、同ファイルの別シートに品名等の一覧を作っておき メインシートで入力時にそれを参照させることはできますでしょうか? 品名、型番など多種に渡り数も多いので入力の手間を省きたいのです。
>>51 LOOKUP関数でテーブルを別シートや別ファイルに作るってことは出来るけど
>>52 ありがとうございます。それでやってみます。
G H i 1 #NAME? 2013/07/01 2013.07.01 式 =WEEKNUM(H1,2) =SUBSTITUTE(I1,".","/") と書かれた状態で正常に表記されていたG1がふと見るとエラを出すようになったのですが H1をダブルクリックするとエラーが消えるのですがこれは一体何がおきているのでしょうか? Excel2003です。
>>54 ずれてしまったので訂正・・・
G H i
1 #NAME? 2013/07/01 2013.07.01
式 =WEEKNUM(H1,2) =SUBSTITUTE(I1,".","/")
56 :
54 :2014/05/08(木) 01:18:56.52
>>54 度々済みません
ダブルクリックエラーが解消されるのは「G1」でした。。
57 :
54 :2014/05/08(木) 01:47:49.69
>>54 メモリー不足かPCがおかしくなったのかと別のノートPCで確認してみましたが同じくエラーが出ていまして
ダブルクリックして式を1度表示させるとエラが消えます。。何なんでしょうねぇこれは。。
iの日付データが元からあったデータで
Gの=WEEKNUM(H1,2)とHの式はVBAで後から自動記述しています。
58 :
54 :2014/05/08(木) 02:06:57.62
>>54 自己解決!!
再度式を記述するVBAを実行しましてまったっく同じ式を再記入させるいと正常に表示されました。
式もデータも間違いはないようですがシート数が結構多く自動処理時に何らかの予期せぬ不具合に遭遇したようです。
>>58 たぶん
Range("H1") = "=SUBSTITUTE(I1,""."",""/"")"
とかやってんじゃない?それじゃエラーになって当たり前だよ
60 :
54 :2014/05/08(木) 02:24:05.82
>>59 こう書いて列の最終行まで記述しています。
With Range("I1")
.Formula = "=Substitute(I1,""."",""/"")"
.AutoFill Destination:=.Resize(end_row)
End With
ご指摘頂いた式と類似してますね、、、
これはまずいのでしょうか?
プロシージャの中で Application.Calculation = xlManual ってやってない?
excelの不具合の前にまず自分の頭を疑え excel作ってる人はお前なんかより遥かに頭いいよ
>>60 With Range("I1") > With Range("H1") でした、、眠くてどうも駄目です、、w
64 :
54 :2014/05/08(木) 02:31:16.26
67 :
54 :2014/05/08(木) 02:40:55.59
>>65 >>66 なるほど今までは何となく動いていましたが
入れておくとより確実になるわけですね
ありがとうございます。試して見ます。
69 :
名無しさん@そうだ選挙にいこう :2014/05/08(木) 10:59:58.10
キーボードの右下ふきんにセルを編集するためのショートカットキーはありませんか? と申しますのは複数セル同時入力時にすでに入力されてる1つのセル値を他の複数のセルにコピーするとき 右手1つで操作したいときに便利だからです。(不明点はエスパーすること。Excel上級者なら意味は分かると思います。)
【1 OSの種類 .】 Windows xp 【2 Excelのバージョン 】 Excel2002 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 VBAでSelectionが連続したセルの場合と連続していないセル(セルとセルが飛び地のようになっている。)の場合で処理を変えたいのですが Ifで分岐するときどういう記述の仕方になりますか? またそれと同等の書き方があれば教えて下さい。 よろしくお願いします。
>>71 もっとスマートな方法もありそうだけど、とりあえず思いつきで
With Selection
If .Rows.Count * .Columns.Count = .Cells.Count Then
MsgBox "れんぞく"
Else
MsgBox "とびとび"
End If
End With
73 :
71 :2014/05/08(木) 12:40:30.42
>>72 嗚呼、素晴らしい!
このスレ始まって以来のアインシュタインだ。
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 vlookupをindexmatchに置換する簡単な方法って何かありますか?
>>72 ありがとうございます。
シンプルでスマートだと思います。
勉強になります。
>>74 Replace(文字列, "vlookup", "indexmatch")
導入日 JANコード メーカー名 商品名 規格 入数 原価 売価 率 a店 b店 c店 d店 e店 f店 g店 h店 i店 j店 k店 l店 m店 n店 o店 p店 q店 r店 s店 t店 u店 合計
05/13(火) 4901301026587 ○○商事 A機器 100g 5 1000 1500 33.3% 1 1 1 1 4
05/13(火) 4901301026587 ○○商事 A機器 100g 5 1000 1500 33.3% 1 1 1 3
↓
導入日 JANコード メーカー名 商品名 規格 入数 原価 売価 率 a店 b店 c店 d店 e店 f店 g店 h店 i店 j店 k店 l店 m店 n店 o店 p店 q店 r店 s店 t店 u店 合計
05/13(火) 4901301026587 ○○商事 A機器 100g 5 1000 1500 33.3% 1 1 1 1 1 1 1 7
のように2行を1行に集約したいのですが、1000行くらいあり、何か方法はないかと思い、書き込みをさせて頂きました。
よろしくお願いします。
http://www1.axfc.net/u/3237874 に同様のファイルをアップロードさせて頂きました。
>>77 何と何が一致したら集約するの?
導入日から率まで9項目全部?
80 :
名無しさん@そうだ選挙にいこう :2014/05/08(木) 18:45:32.99
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 コピペだけ出来ます。 【4 VBAでの回答の可否】 可 コードの校正をお願いします 「店舗」と言うシートがありまして、全セルを対象に 「#N/A」となっている(式はありません) セルだけをクリアにする↓のようなコードがマクロ記録でできたのですが、コピペ で運用しようとしたら動きませんでした。 正しいコードを教えてくださいm(_ _)m Sheets("店舗").Select Selection.SpecialCells(xlCellTypeFormulas, 16).Select Application.CutCopyMode = False Selection.ClearContents End Sub
82 :
名無しさん@そうだ選挙にいこう :2014/05/08(木) 19:11:52.15
すみません。ソルバーを使用した線形計画法の質問をさせてください。 以下の条件の下で、利益が最大になるそれぞれの製品の個数を求めなければならないのですが、 どのように解を見つければよろしいでしょうか? 変数が4つで、意味が分からなくなってしまっています。 よろしくお願い申し上げます。 製品/1台当たり利益/前工程(人時/台)/後工程(人時/台) A/100000/30/50 B/80000/40/40 C/65000/50/30 D/50000/60/20 前工程(人時)/後工程(人時) 処理能力/20000/1600
すみません。 処理能力/20000/16000 でした。
85 :
81 :2014/05/08(木) 19:54:46.73
>>84 はい、「店舗」と言うシートの全セルを対象としたいです
86 :
81 :2014/05/08(木) 19:55:41.99
>>84 はい、店舗と言うシートの全セルを対象としたいです
87 :
81 :2014/05/08(木) 19:56:34.08
すみません連投してしまいました
>>82 製品/生産台数/前工数/後工数/利益計
A/1/30/50/100000
B/1/40/40/80000
C/1/50/30/65000
D/1/60/20/50000
計/4/180/140/295000
こっから始めて
条件が 前工数計<=20000
後工数計<=16000
出来るんか?今忙しい
>>81 それだと#N/A以外のエラーも消去されてしまう
厳密にやるなら
Sheets("店舗").Select
For Each c In ActiveSheet.UsedRange
If c.Text = "#N/A" Then c.Clear
Next
対象のセルが大量に(数十万個のオーダー)あるなら画面の書き換えと再計算は止めた方がいいかも
90 :
81 :2014/05/08(木) 21:14:18.36
>>89 ありがとうございます
セルは大体2800〜30000弱位ですから
大丈夫と思います
>>89 それ、テキストで #N/A って書いてあったらクリアされるぞ
厳密とか言うなら CVErr とか使わないと
ちゃんと調べるならISNA関数あたりかな
>>82 変化させるセル
セル 名前 値
$B$2 A 120.1547162
$B$3 B 114.7937092
$B$4 C 109.9484325
$B$5 D 105.103142
目的セル
セル 名前 値
33600773.57 33600773.5
結果がこうなった
条件がいくつでも追加できる
変数はいくつでもセルが連続してれば範囲で選択できる
変化セルを整数にする方法がわからんし
結果が正しいのかもわからん
普通にやるとマイナス個で結果でるから、条件に変化セル>=0も追加しなきゃならん
>>82 目的セル (最大値)
セル セルの値
$H$6 34166667
変化させるセル
セル セルの値
$B$2 A 233
$B$3 B 0
$B$4 C 0
$B$5 D 217
オプションで線形モデルにしたら結果が変わった
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 E〜GH列の間で、いくつかの列をグループ化しています。 未入力のセルにデータを入れるため、このグループを解除しようとしたら もともとグループ化されてなかったためエラーになってしまいました。 CMN1 = Month(Date) * 5 + 105 CMN2 = Month(Date) * 5 + 109 Set Rng = Range(Columns(CMN1), Columns(CMN2)) Rng.Columns.Ungroup ┌────────────────────── |実行時エラー 1004 |RangeクラスのUngroupメソッドが失敗しました └────────────────────── そこで、グループを解除する前に、グループ化されてるか否かを判定しようと、 If Rng.Columns.Group Then Rng.Columns.Ungroup としてみましたが スルーされてしまいました。 どうすればグループ化されてるか否かを判定できるでしょうか?
【1 OSの種類 .】 Windows 7 【2 Excelのバージョン 】 Excel 2007 【3 VBAが使えるか .】 コピペだけ 【4 VBAでの回答の可否】 可 異なるBOOKのシートをコピーして張り付けするVBAを教えてください 同じフォルダ内に touki TK5200 YRT189 と言う3つのBookがありまして コードはtoukiのBOOKで実行したいのですが、ほか2つのファイルは開いていません 処理内容は TK5200のOPP32と言うシートの全てのセルをコピーして toukiのkousaihiと言うシートに貼り付けて YRT189のTT678と言うシートのA〜Hをコピーして toukiのzappiと言うシートのA〜Hに値だけ貼り付ける と言う処理が出来るコードをお願いします。
>>96 いっそ判別なんかしないでそのままエラーを出させてはどうだろう?
Rng.Columns.Ungroup
の部分を
On Error Resume Next
Rng.Columns.Ungroup
On Error Goto 0
にしちゃえばエラーが出ても無視して先に進めるよ
どうせグループ化されてない部分でエラーが出るなら
この処理無視しても問題ないでしょ
一連の操作をマクロの記録でやれ
Excel2010、GoogleIMEの組み合わせでセルにMacroと入力しようとすると Mあcろになってしまうのですがこれを回避するにはどうすればいいですか? Excelの時だけ起きます。
>>103 入力中からです。
一文字目をシフトキー押しながら入力した時に起きます。
ちなみに以前使ってた機種では一文字目をシフトキー押しながら入力した時は 全てアルファベットで入力してくれてました。
>>98 IsErrorよりISNA(IsNA)の方が判定式がシンプルになる
For Each c In ActiveSheet.UsedRange
If WorksheetFunction.IsNA(c) Then c.Clear
Next
>>91 CVErrは用途が逆じゃ?
>>105 その機能は知らなかった
Excel2010、GoogleIME、windows7の組み合わせだけどMacroになるけどなぁ
解決法としては
・エクセルのオートコンプリートを切る
・googleime エクセル でぐぐって片っ端から色々試す
ぐらいしか思い浮かばぬよ
>>107 ありがとう。
確かに出来ていたのはWindows7でした。Windows8だと無理なのかもしれませんね。
変換候補に出てくる”もしかして”が代用できるのでそっちを使います。
>>109 返還中にF10で半角英語に変換できるよ
領土返還
>>106 こっちの方がシンプルだろ
まあ、たいして変わらんとも言うが (w
For Each c In ActiveSheet.UsedRange
If c.Value = CVErr(xlErrNA) Then c.Clear
Next
> CVErrは用途が逆じゃ?
逆の用途って、なんだ?
113 :
99 :2014/05/09(金) 13:45:40.98
>>108 フォルダは毎回移動した場所でつかうので、同じフォルダ内で検索したいと思います。
↓マクロで作ったコード
ChDir "C:\Users\****\Desktop\***" '←フォルダ名は常に同じですが、フォルダの場所は変わります。
Workbooks.Open Filename:="C:\Users\***\Desktop\"フォルダ名"\YRT189.xls"
Sheets("TT678").Select
Columns("A:H").Select
Selection.Copy
Windows("touki.xlsx").Activate
Sheets("zappi").Select
Columns("A:H").Select
ActiveSheet.Paste
>>112 c.Valueがエラー値じゃなかった場合、その判定式では実行時エラーで止まる
vbaでシート無しのブックを作れませんか? 既存ブックのシートを新規ファイルにコピるときに、 worksheets("sheet1").copy set wb = activeworkbook だと、いったんマクロの制御から離れたのを後から捕まえに行くのが気持ち悪い。 先にworkbooks.addして、そこにコピーすればいいけど、最初からあるシートを消すのも面倒というかスマートじゃない
俺もそう思ってた時期があったわ それで動くんだからまぁいいかと思って諦めた、っつうか慣れた
今はエクセル2010の正規版はまともな値段(1万円台)では買えないのでしょうか さすがに2000ではそろそろ限界が…
>>119 無理っぽいね
中古かオークションかDSP版かボッタ価格か2013か
>>119 これから長く使うことを考えれば2013でいいとも思う
122 :
名無しさん@そうだ選挙にいこう :2014/05/10(土) 18:41:07.64
【1 OSの種類 .】 Windows 7 【2 Excelのバージョン 】 Excel 2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 エクセルを用いて収支表を作成していたのですが行き詰ってしまいました。 例えば以下のような収支データがあったとします。 [テーブル1] 年月日 収支 2014/5/1 +20000 2014/5/1 -50000 2014/5/15 -30000 2014/5/31 -40000 2014/6/1 +30000 2014/6/8 -25000 それを基に2014年5月に収支が発生した日数を数える方法はありますか? COUNTIFS(テーブル1[年月日],">=2014/5/1",テーブル1[年月日],"<=2014/5/31") のようにCONTIFS関数を用いても収支の発生した件数は「4件」と表示させることはできますが、日数を「3日」と表示させることはできません。 何かいい方法はありますでしょうか?
124 :
名無しさん@そうだ選挙にいこう :2014/05/10(土) 22:18:32.50
>>123 ピボットテーブルよく分からないんで関数だけで表現する方法ありますか?
>>124 月だけ表示する列を入れれば、簡単に出来るのでは?
>>122 C1=IF(AND(MONTH(A1)=$D$1,COUNTIF($A$1:A1,A1)=1),1,0)
D1=5
D1は月
こういうのってSUMPRODUCTでできる?
=SUMPRODUCT((TEXT(範囲,"yyyym")="20145")/COUNTIF(範囲,範囲))
128 :
名無しさん@そうだ選挙にいこう :2014/05/10(土) 22:41:29.42
>>125 なるほど
やっぱり作業列挟む必要あるんですかね
>>126 SUMPRODUCTは確かにググったら出てきました
数値の種類の数を数える場合有効みたいです
ただ自分がやろうとしてるのは数値の範囲を限定してから数えないといけないので困ってます
129 :
名無しさん@そうだ選挙にいこう :2014/05/10(土) 22:46:28.89
>>127 すごい!
見事に動きました
有難うございます
ところで今後の勉強のためにこの数式の意味教えていただけると幸いです
>>127 うほっサンクス
>>129 全部配列のまま計算してる。
5/1,5/3,5/3,6/4だと
sumproduct({true,true,true,false} / {1,2,2,1})
true/1 + true/2 + true/2 + false/1
で、合計が3
>>120 中古でもオークションでも構わないのですが
アヤシイOEM版ばかりなので…
2013は評判激悪なんですけど
大丈夫ですか?
会社で使っている2010は使いやすいので
2010にしようと思っています
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2013 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 Excelの資格試験を受けようと思っているのですが 出題項目として「以前のバージョンとの下位互換性を保つ」というのがありました。 検索してもいまいち答えが見つからないのですが 具体的にどうすれば良いのでしょうか?
>>131 試用版があるのでダウンロードしてみては?
個人的にいくつかほしい関数があるので、2013はかなり欲しい
>>132 そんなのあるのか
下位互換って行ってもセル範囲、ifserrorを使わない、条件付き書式は3つまで・・・とかそれぐらいしか思い浮かばない
>>132 xlsxじゃなくてxls形式で保存しろってこと
テーブルも構造化参照もつかえないのは痛い
137 :
名無しさん@そうだ選挙にいこう :2014/05/12(月) 00:52:35.94
>>132 一番簡単なのは
>>134 が言ってるように
作ったらxlsで保存してみること。
xlsではサポートされてないものを使っていれば
互換性チェックで怒られる。
だから、実際の場面では対して困らない。
試験や検定じゃ、そういうわけにはいかないでしょけど。
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 XSLXではなく、XSLファイルを作る必要があってXLSファイルを弄っているのですが このファイル形式、ZIP圧縮時に 完全無編集でもセーブするたびに勝手にファイルサイズがころっころ変わるんですが どうなっているんでしょうか? (起こるのはXLSだけで、他のファイルではこんな事はないので、ZIP圧縮ソフトのせいではないです) 圧縮時に最高で500バイトくらい変わってしまい、 ファイルはできるだけ小さくしろと言われているので、 セーブ回数にまで気をつけないといけないとか、精神的にストレスを感じます 酷い時は、ただ圧縮しただけのファイルより、 開いて、セーブもせずにただ閉じただけものを 圧縮するとファイルサイズが200バイト肥大化した事もありました 霊現象みたいで気持ち悪いです
>>138 xlsはセーブした回数、つまり「改訂回数」を内部情報として保存する機能がある
ファイルを右クリック→プロパティ→詳細を見て、改訂番号がそれだ
その更新回数の数字のせいで、おそらくzip形式での圧縮効率がよくなったり悪くなったりするんだろう
たった数字一つで500Bも変わると言うのは謎だが…
また、君のクライアントか上司か知らんが相手が500Bくらいで文句を言ったりせんだろ
一々気にするな
>>138 Excel に限らず、Office のファイルは内部にファイルシステムの様な構造持ってて、領域の管理とかを色々やってるから、見かけ上はちょっとした変更でも内部の管理領域の内容ががらっと変わることはある。
なので、そういうもんだと思って使うしかない。
ファイルサイズを気にしてる人の真意はわからんが、HDD のバイト単価と君の時給を比較して説得するがよろし。
毎回新規に別名保存すりゃええんちゃう
外付けのHDD 1TBが8000円前後で買える今、5kバイト云々しても…と思うが、、、、
>>134 >>137 ありがとうございます。
試験の出題項目として書かれていたのですが
実際に試験ではどうすれば良いでしょうか?
また、同様に出題項目に「演算を実行する順序を定義する」とあるのですが
これは何を指しているのでしょうか?
>>143 四則演算の優先度を考慮のうえ、必要に応じてカッコ()を使うってことかな?
【1 OSの種類 .】 Windows7、WindowsXP 【2 Excelのバージョン 】 Excel2010、Excel97 【3 VBAが使えるか .】 不可 【4 VBAでの回答の可否】 不可 Excel2010で.xls形式のシートを作っています ですがこのシートを使う人はWindowsXPでExcel97です 使用者からは何か不具合が合っても苦情は一切来ず、 計算結果を電卓で計算して手入力してしまうみたいです 沢山のセルを一時計算領域にして、 演算順序の都合で()が多用され、複雑に計算するシートで ()が多いのも手伝ってうっかり一部ifネストが8を超えて 計算式を書いてしまうことがあります Excel98は、最初から8以上のifネストされているファイルに どのような挙動をするのでしょうか? できる限り相手には少ない労力(時間)で使って貰いたいのですが、 相手から苦情が一切来ないもんで、手の出しようがありません (試しにわざと大量ifネストして自分のPCにExcel97ビューワーを 入れても普通に挙動するのでこのビューワーは97ではなく内部では 2007以降が動いてる事が分かり、無意味でした)
>>145 >できる限り相手には少ない労力(時間)で使って貰いたいのですが、
>計算結果を電卓で計算して手入力してしまうみたいです
その人は計算式じゃなくて表があれば十分ってことなんだろ?
計算式使えれば便利なんだろうけど、本人はそれを知らないか知ろうとしてないわけだから
直接説明して拒否反応示すなら計算式不要ってことだ。
【1 OSの種類 .】 Windows 7 【2 Excelのバージョン 】 Excel 2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 臨時収入があったので24インチのワイドモニタを買ったら、ホームタブのスタイルに [標準][どちらでもない][悪い][良い][チェックセル]という目障りな文字群が現れました。 これを消すにはどうすればいいですか?
>>147 右クリックで設定が現れるよ
テキトーに動かしてみるといい。戻したくなったらリセットボタン
149 :
名無しさん@そうだ選挙にいこう :2014/05/12(月) 21:43:56.05
>>143 ほんとうに、
>「以前のバージョンとの下位互換性を保つ」
しか書いてないの?
前後に文章があるんじゃない?
「以前のバージョンとの下位互換性を保つ」
だけじゃ問題になってないよね。
「互換性を保つ」のは良くない
「互換性を保つ」と怒られる
「互換性を保つ」と海外旅行に行ける
などなど、なんでも考えられちゃうぞ。
横レスだが、その問題と答えを見ないとまるで分からん 現場ならなんとでもするが、試験とかいうアホのつくったアホな世界観に合わせる能力はここの連中にはないわ
>>150 バカを相手にしなくていい
下位互換性を保つ とあったら普通は
低いバージョンのエクセルでも開けて正しく見れること を指す
高校や大学受験じゃねーんだよ 受けたこともない・勉強したこともないなら黙ってりゃいいのに
【1 OSの種類 .】 Windows問わない 【2 Excelのバージョン 】 ←これを知りたい 【3 VBAが使えるか .】 不要 【4 VBAでの回答の可否】 不要 Boolean型(TRUE/FALSEで返してくる奴)は TRUEが1、FALSEが0としてそのまま計算できますが (例えばA1が5の時に、B1に(A1=5)*12とするとB1は12になります) これってExcelのバージョンいくつからの仕様でしょうか?
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 NO 【4 VBAでの回答の可否】 NO A B C D E F・・・ 1 No 商品名 単価 単位 単位2 日数 2 1 砂糖 52 1000 g 5 3 2 塩 5 100 g 3 4 3 胡椒 68 100 g 10 5 4 りんご 120 1 個 7 ・・・ こんな感じの表で、(実際の表は食品ではありません) 今までBの商品名をvlookupで検索して単位や単価や最終的な値段やら 色々なデータを出していたんですが、最近データが増え過ぎて重くなり まずvlookupを取りやめ、indexとmatchの組み合わせにしたのですが ある程度重さが緩和されたもののまだ重く、 更にindexの範囲を全体(index(A1:D5,match("りんご",B1:B5,0),3))から 一部(index(C1:C5,match("りんご",B1:B5,0),1))に全部書き直して 更に軽量化したのですが、まだ重いので、 今度は商品名ではなくNoで検索しようとなったのですが 数式も何百も打ち直し、数式のメンテナンス性自体を捨ててまで、それをやって リスクに見合っただけの効果は出るでしょうか? 今、やろうとしてるのはindex(C1:C5,match("りんご",B1:B5,0),1)→index(C1:C5,match(4,A1:A5,0),1)です
156 :
名無しさん@そうだ選挙にいこう :2014/05/13(火) 18:54:07.36
>>155 indexは
=INDEX(B1:B3,MATCH(D1,A1:A3,0))
こんな感じでいいけど、まぁ第三引数一個減らしたところで変わらんだろう。
もうそこまで重いならaccessにした方がいいと思う。
>>154 あなたの求める答えじゃないけど
エクセル2000はそうなってます。
A1が5の時に、B1に =(A1=5)*12 と入力すると
B1に12が表示されました。
オフィス2000より古いのって97でしたっけ?
たしかウチでもウィンドウズ98のPCに入ってたと思うんですが、
そのPC自体が今起動できる状態じゃないんで試せなかったです。
SUMPRODUCT()ならまだしも、VLOOKUP()が重いなんてまずない 重いのは別に原因がある
160 :
名無しさん@そうだ選挙にいこう :2014/05/13(火) 19:32:46.34
>>159 いや普通にあるぞ
えげつないワークシートを見たことのない君は幸せもの
具体的に言うと
sheet1!a1=vlookup(b1,$c:$z)…
みたいに参照範囲の広いvlookupが数千行に渡って入っている上、
その結果が
sheet2!a1=vlookup(sheet1!a1,$c:$z)…
とまた参照され(もちろんこれも数千行ある)、ヘタすればもう2.3回参照されているという恐ろしい物が世の中にはあるのだ
こんなシートを手動計算+shift+F9を駆使してなんとかやりくりしてる会社を見た時は泣きそうになった
レコードが数千行もあったら、普通はデータベースソフト使うところ、そうじゃない会社は意外とたくさんある 急成長してシステムに手が回ってない所とか 顧客がたった2年で1000倍に増えちゃった会社を知ってる 大ヒットって怖いね
162 :
名無しさん@そうだ選挙にいこう :2014/05/13(火) 20:05:11.83
まさにそれ。新しい会社ならいいけど、古い会社が何かの間違いで急成長すると色々歪になる。 タイムカードも去年まで手書き+電卓計算だったわ。 金は取らないから、ちょっとでいいのでレクチャーさせて欲しい。苦しんでる事務さんはいっぱいいるだろう。
163 :
155 :2014/05/13(火) 20:09:40.05
皆さんレスありがとうございます
とりあえずは、"りんご"がメンテナンスの最後の砦なので
現状維持でいこうと思います
>>160 まさにそんな感じです
エクセルで100万行扱える様になって久しいわけで 数千行程度でデータベースソフト奨めるのもどうかと思う
ええー?最近のエクセルは、100万行以上扱うるの? 俺も新しいの買おうかな
Excel2007から 1万6384列 × 104万8576行 になりました
実際にデータと数式で100万行埋めたらどうなるだろう
168 :
154 :2014/05/13(火) 21:07:18.48
169 :
名無しさん@そうだ選挙にいこう :2014/05/13(火) 21:17:40.72
>>167 ほぼ間違いなくフリーズする
全セル選択後、「1」を入力してctrl+enter
A1,A2,A3・・・I1000000ぐらいでフリーズした
win7+E8400+メモリ4GB+エクセル2010だったかな
170 :
158 :2014/05/13(火) 21:51:41.67
>>168 わざわざってことじゃなくて普段から家では2000使ってますwww
2013なんて触ったこともないし、
2007とか2010とかは会社のPCで使うけど家には2000までしかないです。
>>163 そもそも引っ張ってくるのは入力時だけだろ?
例えば昨日までの入力したセルのVlookupなんてもはや不要なんで
コピー 数値として貼り付け やって計算式を無くして数値として固定化しちゃえば軽くなるだろ
trueって-1だとずっと思ってたわ
BASIC 上がりの爺乙 まあ、VBA は -1 だから、こっちで我慢汁
そもそも0以外は全部true なんで-1にするかというと、整数型でオールビット1にすると何バイト変数でも必ず-1になるから
176 :
名無しさん@そうだ選挙にいこう :2014/05/14(水) 09:29:19.82
なるほろ〜 他システムとの互換性からなんだ。 一つおりこうさんになれました
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 一つのセルがいくつかの数字だったら条件一致にする方法は =if(or(G1=19,G1=79,G1=93,G1=96),"一致","不一致") =if((G1=19)+(G1=79)+(G1=93)+(G1=96),"一致","不一致") =if(iserror(match(G1,B1:B4,0),"不一致","一致") <B1=19/B2=79/B3=93/B4=96> しかないのでしょうか? もっと分かりやすい関数は無いでしょうか?
>>177 一致対象の数字でリスト作っておいて、
そのリスト範囲で、検査対象の数字を数えて>0="一致"は
>>177 こんなのはどう?
比較する数値が1列にまとまってるから、ちょっとはわかりやすくないかな
=IF(ISERROR(MATCH(G1,{19,79,93,96},0)),"不",)&"一致"
>>177 Match( ) しかなさげだね
あまり変わらんけど、配列使って
=if(isna(match(G1,{19,79,93,96},0),"不一致","一致")
でどうかな?
被った... orz
>>178-181 どうもです
そういうのを探してました
{ }ですねありがとうございました
【1 OSの種類 .】 Windows7hp 【2 Excelのバージョン 】 Excel2013 ファイルを開くと、Excelがもうひとつ起動してしまいます。 具体的には目的のファイルのExcelの裏に重なって タイトルがExcelでシートのないExcelが開かれます。 目的のファイルを先に閉じると空白のExcelが残ります。 空白のExcelを先に閉じると目的のファイルも閉じます。 どうしたらこれを開かないようにできますか?
下側2〜3セルに数式をコピーする時に、 ↓、ctrl+D、↓、ctrl+D、・・・って連打してて 間違ってctrl+↓でsheetの最下セルでctrl+Dを押しちゃって それをスルーしちゃって保存してて、気が付くとファイルサイズが激肥大化してるという現象 どーだ、あるあるだろう
185 :
名無しさん@そうだ選挙にいこう :2014/05/14(水) 22:36:30.01
>>183 他のアプリケーションを無視する
違ってたら御免
>>186 その系列選択した状態で、その区間をクリックするとその区間だけ選択された状態になるから、あとは右クリックで色でも線の種別でも設定し放題だったと思う
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2013 sheet2を作るにあたり、sheet1のB列を参照し、"あ"であれば"a"、"い"であれば"b"、該当がなければ"c"と表示させたい sheet1は ID、区分1(あ/い) sheet2は ID、区分2(a/b/c) 区分2 =IF(VLOOKUP(A2,Sheet1!A:B,2,FALSE)="あ","a",IF(VLOOKUP(A2,Sheet1!A:B,2,FALSE)="い","b","c")) これだと該当なしのところが#N/Aになってしまいます どこが間違ってるのでしょうか?
191 :
名無しさん@そうだ選挙にいこう :2014/05/15(木) 15:09:03.82
>>188 =IF(VLOOKUP(A2,Sheet1!A:B,2,FALSE)="あ","a",IF(VLOOKUP(A2,Sheet1!A:B,2,FALSE)="い","b","c"))
VLOOKUP(A2,Sheet1!A:B,2,FALSE)="あ"
の部分は該当なしだとエラーが返る。エラーはtrueでもfalseでもない
あとは
>>189
【1 OSの種類 .】 Windows8.1 【2 Excelのバージョン 】 Excel2013 以前から使っていたショートカットを表示したいが出来ますか? 例えばセルの書式設定ダイアログを出す時に以前からの Alt+O → shift+E で出来はしますが Excel2013では Alt+O を押すと 「以前のバージョンのメニューシーケンスを入力」 と出るだけで何を入力すればいいか、どんな選択肢があるか? が表示されません。表示されるような設定は出来ますか?
194 :
名無しさん@そうだ選挙にいこう :2014/05/15(木) 16:18:54.72
195 :
186 :2014/05/15(木) 20:21:08.83
>>187 できました。
最初は「何書いてんだコイツ、俺へのレスか?」って思ってたけどねw
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 A1の取る数値は1〜4で、 B1を、A1にあわせて5、15、20、32という一見バラバラな数値を入れたいのですが (A1が2ならB1に15を、A1が3ならB1に20を入れたいです) B1のifの入れ子なし、1セルだけ(vlookupなし)で解決できる関数はありませんか? KANSUU(A1,{1,2,3.,4},{5,5,20,32})または KANSUU(A1,{5,5,20,32})みたいな関数が欲しいのですが
196 自己解決しました choose(A1,5,15,20,32)でできました
Ctrl+1ってそーいうことじゃないのか。 言われてみれば、リボンになってから、Altでメニュー掘ってく使い方はしなくなったな
>>195 書いてる方もわかるかなぁ? 状態だったけど、解決してよかった。
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel97 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 以下の計算式(2chの文字制限仕様上、途中改行してますが4行全部で1計算式です) のifネストが何レベルか知りたいのですが、 正確にカウントできる方がいらっしゃいましたらどうか教えてください (自分が数えたときは5だったり6だったり7だったりと正確にカウントできませんでした) また、入り組んだ式のifネストが正確に分かるVBSとかがあると助かります =IF(BV10="";"";IF(BS10="N";IF(IF(GD10=0;FY$11;FY$17)+3-GF10>GC10;IF((2^GE10)*GJ10<0.5;"×";(2^GE10)*GJ10); 8*GJ10*(GE10-2));IF(GK10<>"";GK10;IF(IF(GD10=0;FY$14;FY$17)+3-GF10>GC10;IF((2^GE10)*GJ10/IF(GI10=1;1;GF$4)< IF(GI10=1;1;0.5);"×";(2^GE10)*GJ10/IF(GI10=1;1;GF$4));IF(GG10*GJ10/GF$4<IF(GI10=1;1;0.5);"×";GG10*GJ10/ IF(GI10=1;1;GF$4))))))
201 :
200 :2014/05/16(金) 00:08:35.48
失礼しました 200のは仮環境でCalcで組んだ式でした 質問の式は下の式です =IF(BV10="","",IF(BS10="N",IF(IF(GD10=0,FY$11,FY$17)+3-GF10>GC10,IF((2^GE10)*GJ10<0.5,"×",(2^GE10)*GJ10), 8*GJ10*(GE10-2)),IF(GK10<>"",GK10,IF(IF(GD10=0,FY$14,FY$17)+3-GF10>GC10,IF((2^GE10)*GJ10/IF(GI10=1,1,GF$4)< IF(GI10=1,1,0.5),"×",(2^GE10)*GJ10/IF(GI10=1,1,GF$4)),IF(GG10*GJ10/GF$4<IF(GI10=1,1,0.5),"×",GG10*GJ10/ IF(GI10=1,1,GF$4))))))
>>201 複雑すぎる上に無駄多過ぎだろ
そういう式書く奴は死ねよ、マジで
203 :
名無しさん@そうだ選挙にいこう :2014/05/16(金) 00:14:20.58
>>200 ワロタ
=IF(
BV10="","",IF(
BS10="N",IF(
IF(
GD10=0,FY$11,FY$17
)+3-GF10>GC10,IF((2^GE10)*GJ10<0.5,"×",(2^GE10)*GJ10),8*GJ10*(GE10-2)),IF(
GK10<>"",GK10,IF(
IF(
GD10=0,FY$14,FY$17)+3-GF10>GC10,IF((2^GE10)*GJ10/IF(GI10=1,1,GF$4)<IF(GI10=1,1,0.5),"×",(2^GE10)*GJ10/IF(GI10=1,1,GF$4)),IF(GG10*GJ10/GF$4<IF(GI10=1,1,0.5),"×",GG10*GJ10/IF(GI10=1,1,GF$4))))))
こんなかんじで(でインデント付けて)で戻してを繰り返すといいよ
途中までやって飽きたw
204 :
200 :2014/05/16(金) 00:18:34.94
>>203 いや、それでやって5だったり6だったり7だったりと
どうやらそういうのが苦手なようで
>>200 VBSでやりたいならVBSのスレにいけ
Excelの質問じゃない
=IF 1 (BV10='','',IF 2 (BS10='N',IF 3 (IF 4 (GD10=0,FY$11,FY$17 3 )+3-GF10>GC10,IF 4 ([2^GE10]*GJ10<0.5,'×',[2^GE10]*GJ10 3 ),8*GJ10*[GE10-2] 2 ),IF 3 (GK10<>'',GK10,IF 4 (IF 5 (GD10=0,FY$14,FY$17 4 )+3-GF10>GC10,IF 5 ([2^GE10]*GJ10/IF 6 (GI10=1,1,GF$4 5 )<IF 6 (GI10=1,1,0.5 5 ),'×',[2^GE10]*GJ10/IF 6 (GI10=1,1,GF$4 5 ) 4 ),IF 5 (GG10*GJ10/GF$4<IF 6 (GI10=1,1,0.5 5 ),'×',GG10*GJ10/IF 6 (GI10=1,1,GF$4 5 ) 4 ) 3 ) 2 ) 1 ) 0)
>>204 そんなのも数えられないようなバカがよくこんな式書けたな
エラー出まくって適当なとこに閉じ括弧入れて、とかやってそう
ネストの深さが答えられない回答者も同レベルにしか見えない…
>>207 短絡的だな
「シート作成者は別にいて
シート利用者が不便で一部手直ししようとしたものの
この複雑怪奇な式
Excel97なのでifは7レベルまでだから
追加できるかどうか分からない
そこでこのスレで聞いた」
とか
「エラーを潰し潰しやりながら
新しい仕様を何度も追加するうちに
こんなスパゲティな計算式になってしまった
Excel97なので以下略」
とか色々事情はあるだろ
部分的に同じ式が何度も出てくるから整理しろよ、と思った (2^GE10)*GJ10 が4回 IF(GI10=1,1,GF$4) が3回 作業セルを使えば式も短くなるし、見通しが多少は良くなってネストの段数で迷うこともなくなるだろうに ていうかセキュリティ上危険な97なんかいつまでも使ってんなよ
211 :
200 :2014/05/16(金) 05:12:56.36
>>206 展開ありがとうございます。6レベルですねありがとうございました!
>>210 GI10の内容=(ROW()>GF$78)*1
GE10の内容=GC10-IF(GD10=0,IF(BS10="N",FY$11,FY$14),FY$17)+GF10
更にGE10が呼ぶGC10が=CC10-IF(OR(GB10=70,GB10=71),GB$72,0)-IF(GB10=79,GB$74+GB$76,0)-IF(ROW()>GF$78,INT(GF$4/2)+GB$78,0)
GC10が何度も呼ぶGB10が=IF(ISERROR(MATCH(GA10,WZ,0)),0,MATCH(GA10,WZ,0))
と言う感じで、これでもかなり整理した結果で、質問セルのためだけの作業領域だけで11セル、
それ以外にもイレギュラーな外部変動数値に対応するための作業セルが5、
質問セルが導いた答えを使って更に別の解を出すセルがさらに数十あります
(2^GE10)*GJ10やIF(GI10=1,1,GF$4)はIF(BS10="N")などの真偽で
GE10自体が違う数値になったり、(1,GF$4)の使い道がその箇所によって違うため、
別セルでその数式だけを作業セルにすると理論的には同じ答えになるはずなのに
何故か計算が狂う事があるのでそのままにしてあります
またCalcで作っており、Calcであればif入れ子はいくらでも出来るので些事なのですが、
自分以外の使う人がExcel97〜2013と幅広いので、
一番入れ子の多いこの式のif入れ子が7を超えていないかを質問しました
212 :
200 :2014/05/16(金) 05:32:26.86
あ、でもGC10の中の、IF(ROW()>GF$78,INT(GF$4/2)+GB$78,0)は
IF(GI10=1,INT(GF$4/2)+GB$78,0)に整理できますね
(今、2chにコピペしたのを見て気付いた)
ともかく、みなさん、特に
>>206 さん本当にありがとうございました
>>212 横槍ですまんが
GI10が取る数値は0か1しかないみたいだからIF(GI10=1,INT(GF$4/2)+GB$78,0)じゃなくてGI10*(INT(GF$4/2)+GB$78)とすべき
IFが1個減るよ
ついでに言うとGC10全体をこう書き換えれる
=CC10-((GB10=70)+(GB10=71))*GB$72-(GB10=79)*(GB$74+GB$76)-GI10*(INT(GF$4/2)+GB$78)
どうかな?
一生悩んでろw
215 :
183 :2014/05/16(金) 08:46:44.88
XLStart フォルダにあった個人用マクロブックを削除して
新たに作り直したら解決しました。
>>185 さん、ありがとう
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel97 【3 VBAが使えるか .】 コピペであれば 【4 VBAでの回答の可否】 可 B列に"納品日"と記入されているセルが複数あります そのセルの一つ上のセルに"納品日"と記入されているセルから、 2つ下のA列の値を返す場合のコードおしえてください。
>>216 >B列に"納品日"と記入されているセルが複数あります
>そのセルの一つ上のセルに"納品日"と記入されているセルから、
>2つ下のA列の値を返す場合のコードおしえてください。
ちょっと何言ってるのかわかんない
2行目の「そのセル」ってのは単に「B列のセル」のこと?
それとも1行目で説明してる「B列で"納品日"って書いてあるセル」そのもののこと?
ここの解釈しだいで
「そのセルの一つ上のセルに"納品日"と記入されているセル」というのが
「B列で"納品日"って書いてあるセルの一個下のセル」なのか、
「B列で2個続けて"納品日"って書いてあるセルの内、下のほうのセル」なのか、
どっちを意味してるのかが変わってくるんだけど。
あと、3行目で言ってる値を返すってのはどこに返すの?
2行目で言ってたセルに返すの?
そうするとB列で位置が不定のセルに値を返すとなると
それを実行するタイミングはいつ?
例えばB2に納品日って書いた瞬間に
リアルタイムでB3にA5の値を入れるなんていうマクロなら
Worksheet.Changeイベント拾わなきゃならないし、
そうじゃなくてすでに複数の"納品日"セルが存在していて、
それら全てに一括で処理を加える、っていうマクロなら
その処理のトリガーを何か設定しないといけない。
こういうことが曖昧だと答えようにも答えられないよ。
218 :
216 :2014/05/16(金) 17:49:49.56
すみません 「その」セルはB列に複数ある"納品日"と書いてあるセルのことです。 書き直しました↓ B列に"納品日"と記入されているセルが複数あります その納品日と記入されているセルの、一つ上のセルに "納品日"と記入されているセルから、 2つ下のA列の値を返す (2つ下がって1つ左に)
>>216 とりあえず、
計算結果を出したいセルにその計算結果を色違いで手入力し、
計算に必要なセルも別の色で塗りつぶして
そのシートをアップせよ
>>218 =INDIRECT("A"&(ROW()+2))
221 :
216 :2014/05/16(金) 18:27:03.42
222 :
名無しさん@そうだ選挙にいこう :2014/05/16(金) 18:44:50.47
>>221 B3=A6
それをB14やらB23に
じゃだめなのか
223 :
名無しさん@そうだ選挙にいこう :2014/05/16(金) 18:45:23.12
>>221 B3=A6
それをB14やらB23にコピー
じゃだめなのか
224 :
221 :2014/05/16(金) 19:37:05.06
>>222 .223
そうです。
しかし、B列に"納品日"が出現するセルは毎回違います
225 :
名無しさん@そうだ選挙にいこう :2014/05/16(金) 20:00:51.89
>>224 こんなん?Sub a()
For i = 1 To 60000
If Cells(i, 2) = "納品日" Then
Cells(i - 1, 2) = Cells(i + 2, 1)
End If
Next
End Sub
226 :
名無しさん@そうだ選挙にいこう :2014/05/16(金) 20:01:11.29
>>224 こんなん?
Sub a()
For i = 1 To 1000000
If Cells(i, 2) = "納品日" Then
Cells(i - 1, 2) = Cells(i + 2, 1)
End If
Next
End Sub
227 :
221 :2014/05/16(金) 20:07:29.28
228 :
221 :2014/05/16(金) 20:43:21.58
すみませんがもうひとつ 216のようなシートで A列に「分類」と記入されているセルがあれば そのセルの1つ下の行を削除して行を詰めるコードもお願いします。
229 :
名無しさん@そうだ選挙にいこう :2014/05/16(金) 20:46:07.48
230 :
186 :2014/05/16(金) 20:50:06.03
231 :
230 :2014/05/16(金) 20:51:12.63
233 :
221 :2014/05/16(金) 22:03:19.27
>>229 マクロを作ってみましたが
Cells.Find(What:="分類", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, MatchByte:=False, SearchFormat:=True).Activate
Rows(ActiveCell.Row + 1).Select
Selection.Delete Shift:=xlUp
・1ヶ所だけしたできない
・空欄でなくても削除されてしまう
>>233 上からじゃなくて下の行から削除してきなよ
ズレるじゃん
【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2010(下記画像では2013)
ttp://i.gyazo.com/38846314e55672ca1c6b2a92bbaaf7ad.png F列はE列の内容の説明で、
E4はプルダウンが名前「いいい」のものが選択できますがE14ではできません。
このような表を作った際に上(E3,E4)は意図したとおりに動くのに対して
下(E13,E14)は動かないのは一体なぜなのでしょうか。
また、別の方法があればご教示願います。
やりたいことは2段階のプルダウンリストで(始めにD列で区分1を選びその結果でE列で区分2を選択)
リストに変動がありえるため範囲を可変にしているのです。(名前範囲が=$B$6:$B$11のような場合は2段階選択できる)
元のリストの形式はこのようなものからの変更は難しいです。(区分1ごとに列を分けるなど)
236 :
名無しさん@そうだ選挙にいこう :2014/05/17(土) 00:41:33.77
237 :
235 :2014/05/17(土) 01:09:15.31
>>235 ちゃんと見てないけど
名前定義した範囲が固定ならいけるけど、offsetなんかで可変範囲の場合にはエラーになる現象じゃないかな?
だとしたら残念ながら仕様バグ
>>235 なんというひどい設計のシートだ。目眩がする。
これはさじを投げても君の責任じゃないから
作った人を捕まえてきて作り直させろ。
241 :
235 :2014/05/17(土) 14:28:36.41
よく考えてみたらこの形式だったら名前の定義は必要なかったですね
名前定義の式でINDIRECTを置き換えてしまえば
E13
=VLOOKUP("ちつてと",OFFSET(Sheet1!$B$2,MATCH(D13,Sheet1!$A:$A,0)-2,0,COUNTIF(Sheet1!$A:$A,D13)),1,0)
E14
データ入力規則
=OFFSET($B$2,MATCH(D14,$A:$A,0)-2,0,COUNTIF($A:$A,D14))
多段プルダウンには名前の定義が必要だという先入観に囚われていました
しかし結局INDIRECTが使えない理由が不明
色々と調べては見たのですが関係あるのかどうかすらよくわかりませんで・・・
ttp://www.efcit.co.jp/cgi-bin2/exqalounge.cgi?print+201302/13020009.txt ttp://okwave.jp/qa/q2489939.html >>239 可変範囲の名前定義をINDIRECTできないような仕様になってるのですかね
>>240 リスト作ってる人はお偉いさんなのでなかなか・・・
indirectで可変範囲を指定できない欠陥 concateで範囲指定が出来ないのとか、改善して欲しい
243 :
230 :2014/05/17(土) 19:09:26.77
>>232 拡大してもムリぽですた。
真面目に答えてくださいです。
>>243 は?拡大して操作すれば普通にできたけど?
てか、マウスじゃなくて矢印キーで動かせばいいじゃん
ばか?
245 :
230 :2014/05/17(土) 21:15:01.13
>>244 線の先端を中心付近に置くことはできるけど、中心にはできません。
それと、拡大した円を縮小したらズレるんだけど、これはどう対処すればいいですか?
あと、矢印キーで動かすと線全体が動くんだけど、片側だけ動かすには
どうすればいいですいか?
>>245 alt押しながら線ひくと枠線にスナップするから
それで位置合わせしなよ
手間のかかるやつだなまったく
247 :
230 :2014/05/17(土) 21:50:32.94
>>246 まず初めに円があって、それに線を引きたいので、
枠線スナップじゃダメぽ。
244氏の回答はまだですか?
>>247 図を拡大じゃなくて
表示を拡大しろといってんのにばか?
249 :
230 :2014/05/17(土) 22:14:14.30
そもそも、エクセルの作図機能に期待し過ぎでは?
251 :
名無しさん@そうだ選挙にいこう :2014/05/17(土) 22:23:59.93
>>251 画像を見れば馬鹿でもチョンでもテキトーなのはつくれるよ。
ただ、俺も円の中心に線の先を合わせることは出来なかった。
253 :
名無しさん@そうだ選挙にいこう :2014/05/17(土) 22:48:38.75
>>252 別作業してたからちょっとでも手間省きたかったんだよw
まぁいいや
・線を選択
・上下左右で線全体を微調整できる
・ctrl+shiftで伸ばしたりもできる
・無理なっラ先に丸をどけて線を置いて丸をカーソルで動かす
マウスだと無理だな
>>254 大きな円だと中心近辺に持って行けるが、小さい円でもできる?
ブックをアップロードされるまで待ってダウンロードして開くより、 エクセルを立ち上げて適当な図形を描く方が遥かに手間が省けると思ったのは俺だけ加奈?
Excel2003ですが セルの書式の設定でマイナス値を赤文字にしてる物とマイナス表記にしている物とが混在刷る表で =で引用して計算させる場合にマイナスがプラスになったりするような結果に影響が出ることはありますでしょうか? 文字が赤字だからマイナスって紛らわしすぎますね、はっきり言ってこの機能無くなってほしいw
>>259 書式で「マイナスは赤」と設定してある場合は、ちゃんとマイナスで計算されます
人間がマイナス記号を消して字の色を赤に変える操作をした場合はプラスです
ぱっと見、区別がつかないのでややこしいですね
261 :
名無しさん@そうだ選挙にいこう :2014/05/18(日) 00:47:57.38
>>259 ない。
VBAだとcells(1,1).textで取得すると値が変わる(そんなことする人はまずいないだろうけど)
262 :
259 :2014/05/18(日) 01:06:35.76
263 :
259 :2014/05/18(日) 01:24:58.95
>>260 >>261 259ですが原因がわかりました
小数点5桁ある数値で0が4つ付く場合は小数点5桁に書式指定してないとエラー表示が出るようですね
(0.00001 のような数値)
これが集計結果がおかしくなった原因の一つのようです。
264 :
名無しさん@そうだ選挙にいこう :2014/05/18(日) 01:27:33.13
▼━質問テンプレ (必ず使ってね) ━━━ 【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 現在、Excel2007を使っているのですが、 ブック間でリンクを張って、リンク先の書式変更というものはできるものなのかということを ご教示いただけたらと思います。 例えば、リンク元のセル内の書式が%表示のものをリンク先では小数点第1位までに表示するということです。 (リンク元)126%→(リンク先)126.0といった具合にです。
>>263 補足ですが計算結果が0.00001になるような場合です。。表にはエラーの文字が!!w
>>264 リンクされるのは内容だけ
書式の設定はセル単位
つまり「できる」
逆に書式までリンクする方法は「ない」
267 :
259 :2014/05/18(日) 02:00:42.82
さらなる質問ですが 小数点が多い数値でセルには 「-9E-05」 といったような表記がされる場合とされない場合があるようですが、表記するしないの 基準は一体何なのでしょうか?
269 :
名無しさん@そうだ選挙にいこう :2014/05/18(日) 04:08:21.76
>>266 ありがとうございます
追加なんですが、書式設定で264のようにする場合は、表示形式で
ユーザー定義からやるべきなんでしょうか?
それとも、分類の中から作成するべきなんでしょうか?
270 :
名無しさん@そうだ選挙にいこう :2014/05/18(日) 08:16:21.84
>>269 PC内の計算量という意味では同じ
普段は分類から選べばok
分類にない場合はもちろんユーザー定義で
271 :
名無しさん@そうだ選挙にいこう :2014/05/18(日) 10:38:29.93
>>268 ありがとうございます。
他のセルから引用して計算するときに桁数が多くて桁数が違っている時に出るようですね、
桁数が多くても同一の物の足し算引き算などではでないようですね
>>267 Excelは小数点以下の計算を間違える時があるから注意な
ブックを開いて、なにもせずに閉じようとすると「保存しますか?」って聞いてきます。 何が原因か調べる方法があるでしょうか? できれば、どこのセルが悪さをしてるかまで分かるとありがたいです。 =today()とかは使っていません。
>>274 ブックを開いただけで計算される関数は、TODAY関数のほかに
CELL、INDIRECT、INFO、NOW、OFFSET、RANDの6個があります
これらを使っていると必ず「保存しますか?」になります
簡単に調べる方法は聞いたことないですね
数式そのものをチェックするにはVBAを使うしかないでしょう
276 :
274 :2014/05/19(月) 00:02:15.85
>>275 TODAY, NOW, OFFSET以外は使ったことがなく、
TODAY, NOWはここ何年も使ってないので、OFFSETが怪しいです。
1年くらいまえに作ったものを再利用してるので忘れてしまったw
277 :
名無しさん@そうだ選挙にいこう :2014/05/19(月) 00:23:29.53
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 Windows7(64bit)+Excel2010をCPU Athlon II X4で使っています ですが、少し大きめ(具体的には手動入力項目未入力の状態で 350KBくらいの)シートを使うとExcelの動作が非常にもっさりと重く、 セルへの入力のたびに秒単位で待たされてしまいます Windows7や8に最適化されているi5やi7ならこのもっさり感がなく、 サクサクと小気味良いレスポンスで動くのでしょうか?
279 :
名無しさん@そうだ選挙にいこう :2014/05/19(月) 13:58:51.75
>>278 (具体的には手動入力項目未入力の状態で
350KBくらいの)
全然具体的じゃない
シートの内容見なおしてみては
280 :
278 :2014/05/19(月) 14:09:51.82
シート作成に1ヶ月、それ以降も2年掛けて軽く4〜50回は見直しを繰り返し、 何とか一番重いセルを1秒軽量化できたのですが、それでも未だに 一番重いセルが(Windows再起動直後の一番PCが軽い状態で)2.5秒くらいかかります 1から組みなおすには複雑化しすぎて(重い以外は正常に動いてるのもあるので) …今からじゃちょっときついです AthlonII X4だと重いのですが、i7の人から「まあ、Excelシートってこんなもんじゃない? 重くは無いよ」って話を一度戴いてるので、本当にi7ならII X4で重いシートも 重くないのか知りたかったのですが…
281 :
名無しさん@そうだ選挙にいこう :2014/05/19(月) 14:15:35.42
シート見ないとそんなもん分からん 漫画喫茶で試せば?
282 :
278 :2014/05/19(月) 14:18:36.12
>>281 その手がありましたか!>漫画喫茶
ありがとうございます
283 :
名無しさん@そうだ選挙にいこう :2014/05/19(月) 15:43:50.13
>>278 Excelでやる業務じゃないってことでしょ
【1 OSの種類 】 Windows 7 【2 Excelのバージョン】 Excel 2007 【3 VBAが使えるか 】 いいえ 【4 VBAでの回答の可否】 否 文字列化して全角化したりせず、数値のまま 1.2 や 23.4 のように、 数字は全角 小数点は半角で表示する方法は無いですか? [DBNum3]0.0 の書式だと小数点まで全角になるので。
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2013 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 それしか方法がなければ可 CORREL関数を使いたいのですが範囲内の空欄を無視するのではなく0として認識して欲しいです。 0を非表示にする以外の方法はありますか。
>>285 {=CORREL(IF(ISBLANK(A1:A3),0,A1:A3),IF(ISBLANK(B1:B3),0,B1:B3))}
{ } の入力は配列数式でググって
>>284 そんな方法はない
数字の幅が太いフォントなら色々あるから、そういうのを使う
やるとすれば小数点以上と以下を分けてそれぞれ全角にして 半角小数点と&で繋げばいい
>>278 数列×全行 などの
巨大な「印刷範囲」を設定されてませんか。
>>278 新規ブックにシートを丸ごとコピペしたら一気に軽くなったりして
>>280 > i7の人から「まあ、Excelシートってこんなもんじゃない?
> 重くは無いよ」って話を一度戴いてるので、
なら、その人と同じ構成の PC 買えばいいだけじゃないの?
いや、その人を上回る構成のPC買えよ
294 :
名無しさん@そうだ選挙にいこう :2014/05/20(火) 01:40:49.06
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 それしか方法がなければ可 かなり基本的な質問だと思うのですが… 図形を挿入し、「テキストの編集」からテキストを書き込んでいるのですが、 テキストの左上にすごく小さいフォントサイズで同じ内容の文章が表示され、ゴミのように見えて見栄えがよくありません。 表示されないようにしたいのですが、方法を教えてください。
295 :
名無しさん@そうだ選挙にいこう :2014/05/20(火) 01:42:53.08
>>294 図形を右クリック テキストの編集 delete
もしくはテキストに空白スペースでもいれておけばいいのでは
296 :
名無しさん@そうだ選挙にいこう :2014/05/20(火) 01:55:08.28
>>295 一度消してみました。
それでも、再びテキスト入力すると、入力と同時に左上に小さいフォントサイズの同じ文章が現れます。
長方形の図形の中にテキストを入れ、棚に張るの表示を作りたいのです。
297 :
名無しさん@そうだ選挙にいこう :2014/05/20(火) 02:10:17.42
>>296 >棚に張るの表示を作りたいのです。
拙僧の勉強不足で理解できなかった。これをもう少し詳しく
298 :
名無しさん@そうだ選挙にいこう :2014/05/20(火) 02:33:19.75
>>297 × 棚に張るの表示を作りたいのです。
○ 棚に張る標示を作りたいのです。
>>294 2010以降なら、右クリック→「テキストの編集」ってしなくても
図形挿入していきなりタイプすれば文字が入るはずなんだけど
それでやってもダメかな…根拠はないけど物は試しで
あと、もう一つ試しで
長方形じゃなくて他の図形とかテキストボックスだとどう?
「貼る」じゃね?
スクショうp
やだかわいい
305 :
名無しさん@そうだ選挙にいこう :2014/05/20(火) 08:46:00.64
むしろ影付き文字に設定する方法が分からなかった
影の設定で、位置を左上、距離を遠く、サイズを小さく、色を濃くすればこの状態になるわけだ
【1 OSの種類 .】 Windows Vista 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 COUNTIF関数についての質問です。 特定の文字列からから始まるセルのカウントがうまくできません。 対処法と、できればなぜ出来ないのかという理由を教えて下さい。 例えば「1」から始まる値が入ってるセルの数をカウントするとします。 A1のセルに「12」が入っていて、別のセルに「=COUNTIF(A1,"1*")」と記述します。 別のセルの表示は「1」になると思ってたのですが結果は「0」です。 しかし、A1のセルを「1a」とすれば、結果は「1」となります。 どう対処すればいいでしょうか? よろしくお願いします。
308 :
名無しさん@そうだ選挙にいこう :2014/05/20(火) 12:38:43.67
>>307 「=COUNTIF(A1,"1*")」
これは1で始まる文字列をカウントしてる
結果が0になるのなら、1で始まる文字列がないということ。
A1に入っているのは文字列ではなく数値でしょ。
文字列に変換すればOK.
309 :
名無しさん@そうだ選挙にいこう :2014/05/20(火) 12:42:18.15
>>308 ありがとうございます
TEXT関数で文字列に変換してカウントすることができました
>>309 役に立ちそうな場面がこれっぽっちも思い浮かばないが、かわいい
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel97 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 A1 ウォッカ/2012年物 A2 ウイスキー/1998年物 A3 ワイン/2000年物 A4 ウイスキー/2001年物 となっている時に、 B1〜B4に年数だけ(「年物」自体も含む)を表示させたいのですが (/XXXX年物を入力していないセルもあります、「ワイン」だけとか) B1=IF(ISERROR(SEARCH("/",A1,1)),A1,LEFT(A1,(SEARCH("/",A1,1)-1))) 以外でB1を埋める式は無いでしょうか?
312です 訂正です B1〜B4に飲み物の種類だけ C1〜C4にXXXX年物だけ B1=IF(ISERROR(SEARCH("/",A1,1)),A1,LEFT(A1,(SEARCH("/",A1,1)-1))) C1=IF(ISERROR(SEARCH("/",A1,1)),A1,RIGHT(A1,(SEARCH("/",A1,1)-1))) 以外ででした
>>312 A列をB列にコピーして、B列に対して区切り位置で"/"
315 :
名無しさん@そうだ選挙にいこう :2014/05/21(水) 16:33:37.35
>>312 2010ならiferrorとかあるけどなぁ
ちょっと長いけどそれぐでいいと思う
他には
B1でウォッカを取得、C1でsubstitute「ウォッカ/」を""、「ウォッカ」を""に置換
という手もある
以外でって具体的にどーしたいか書けよクズ
317 :
名無しさん@そうだ選挙にいこう :2014/05/21(水) 16:39:29.00
>>316 それも読み取れないようならもうちょっと頑張ろう!
勉強!勉強!毎日がお勉強だよぉッ!
ちょっと文字列を分割するだけにしては式が長すぎると思ったんじゃね?
>>312 単にデータを分割したいだけなら区切り位置が一番早くて簡単だと思うけど、どうしても数式でやりたいなら
B列=LEFT(A1,FIND("/",A1&"/")-1)
C列=MID(A1,FIND("/",A1&"/")+1,6)
という方法もある
319 :
313 :2014/05/22(木) 12:34:39.96
みなさんどうもありがとうございました
>>314 すみません、言っている意味が全く分かりません
手動でやれって事でしょうか?
それだとExcelを使う意味自体が無いと思います
>>315 やっぱりですか
あきらめて現状維持にします
ありがとうございました
時間が出来たらSUBSTITUTEも試してみようと思います
>>218 FINDは非常に重いんでパスです
先日全部のFINDをSEARCHに書き換えたばかりなんですよ
あと、その式だとA列に「ウォッカ」だけのセルならエラーがでますよね
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2013 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 それしか方法がなければ可 B4-C3,B5-D3,B6-E3という規則性で列方向に100個式を作りたいんですがいい方法はありませんか?
>>320 列方向って、
A1がB4-C3
B1がB5-D3
C1がB6-E3 って意味?
ならばA1に="B"&COLUMN()+3&"-"&CHAR(66+COLUMN())&3
と入れて横にコピペ
列方向に、ってことだから 縦に作るのかと思ってしまったが違うのね
すいません、B4-C3は文字列じゃなくて式として計算させたいのです
>>323 A1=OFFSET($A$1,COLUMN()+2,1)-C3
あとはコピペ
ありがとうございます
>>319 区切り位置知らないのは分かった
次は「区切り位置」でぐぐってみよう
「Excelを使う意味自体が無い」なんてほざいた自分が恥ずかしくなる
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 それしか方法がなければ可 AX3〜AX24にC3〜C24とAW3〜AW24を掛けて足した結果(AX3にはC3*AW3+C4*AW4+...C24*AW24の結果が入る)を表示させたいのですが効率のいい方法はないですか
328 :
名無しさん@そうだ選挙にいこう :2014/05/22(木) 19:44:35.10
【1 OSの種類 .】 Windows Vista 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 170 あ 220 い 110 う 280 え 110 お あいうえおを数値の大きい順に並べたい場合、左の数値の順番を変えずにあいうえおをだけ並べる方法はありませんか?
>>330 数値を作業列にコピーして、あいうえおと作業列を選択して並べ替えたあと作業列を消去
左だけ選んでからソートすれば良い
左じゃなかった、右だ
>>331 作業列を使わないでする方法はないですか?
ちなみに数値で書きましたが実際は数式が入っています
【1 OSの種類 .】 Windows 7 【2 Excelのバージョン 】 Excel2013 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 対象の範囲内で、0の値のセルがある場合に その1つ上のセルの値を値別にカウントしたいのですが どうすれば良いでしょうか?
>>334 あ〜お、まで選択して並べ替えするだけで良い、左の数値は入れ替わらないよ
>>335 作業シートの2行目以降を
A2=IF(Sheet1!A2=0,Sheet1!A1,"")
という数式で埋めてピボットテーブル
【1 OSの種類 .】 Windows8.1 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 折れ線グラフ中に多数ある線の細さを一斉に変えることってできないんでしょうか? 30本くらいあるので一つ一つ変えるとかなり大変なので
341 :
名無しさん@そうだ選挙にいこう :2014/05/22(木) 23:56:20.99
>>330 =rank(a1,a1:a10+row(a1:a10)/10000)
こんなかんじで配列で扱えるかと思ったが俺には無理だった
>>340 普通はマクロを使わないと無理なんだけど、それがダメなら上下の矢印キーとF4を使うぐらいしかないかなあ
まず1本だけ書式設定で太さを変えたら、↓か↑で次の線を選択してF4キーを押せば、さっきと同じ太さに変わる
いちいち書式を設定するよりは少し簡単
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 行の書式設定で、表示を正の数、負の数はそのままで、 0だった時だけ、「特定のセルの内容」を表示したいのですが、 どうしたらいいでしょうか? 1;-1;GA10、1;-1;"GA10"、1;-1;=GA10など試してみたけどダメでした
toro.2ch.net から peace.2ch.net への鯖移転の際に消えちゃってるけど、
本来なら
>>342 と
>>343 の間に以下のレスがあったわけですね。
343 :名無しさん@そうだ選挙にいこう:2014/05/23(金) 06:42:35.82
【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
セルの書式で、正の数や負の数ならそのまま、
0の時は特定の別のセルの内容を表示する方法は無いでしょうか?
例えば「1;-1;GA12」「1;-1;=GA12」とやってみたのですがうまくいきません
344 :名無しさん@そうだ選挙にいこう:2014/05/23(金) 11:43:58.74
>>343 条件付き書式なら出来るかもよ
345 :名無しさん@そうだ選挙にいこう:2014/05/23(金) 14:00:59.86
【1 OSの種類 .】 Windows8
【2 Excelのバージョン 】 Excel2013
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
F1押してヘルプ表示した後、そのヘルプを閉じるショートカットキーを
おしえて!
347 :
345 :2014/05/23(金) 17:01:15.73
>>346 やはり、消えてましたか
書いた筈なのに送信し忘れたかと思ってもう1回書いてしまいました
条件付き書式は既に試したんですが
想定した挙動にはなりませんでした
>>345 そもそも、書式で他のセルの値表示なんて無理じゃね?
349 :
345 :2014/05/23(金) 19:55:21.93
>>348 やっぱりそうですよね
ありがとうございました
350 :
名無しさん@そうだ選挙にいこう :2014/05/24(土) 08:56:25.04
EXCEL2010です。 同一行で違う桁位置にある2つのセル(罫線で囲まれている)を 図形の曲線矢印(矢は片側)で、U字型に結びたいのですが、 U字型になりません。ほぼ水平方向に結ばれます。 U字型にするために矢印の真ん中を上下にドラッグしようとするのですが、 矢印の真ん中のハンドルが動きません。 どうすれば、曲線矢印を自分の好きな形に変形できるのでしょうか?
352 :
名無しさん@そうだ選挙にいこう :2014/05/24(土) 13:44:32.61
参加□ 不参加□ 希望日時 18日 □ 19日 □ 20日 □ エクセルで上記のチェックボックスを作りたいんですが、参加日時のところは「参加」をチェックした場合のみ 選べるようにするにはどうすればいいんでしょうか?普段は項目自体が隠れてるのが希望なんですが。
353 :
名無しさん@そうだ選挙にいこう :2014/05/24(土) 14:00:07.90
354 :
350 :2014/05/24(土) 14:09:59.70
>>352 テンプレ使わないと。
エクセル チェックボックス 択一
でググってください
356 :
名無しさん@そうだ選挙にいこう :2014/05/25(日) 07:56:16.11
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】いいえ 【4 VBAでの回答の可否】否 下記のVLOOKUP関数で指定範囲の中のセルに空欄があった場合、表示されるセルに「0」ゼロが表示されますが、ゼロ表示をしない事はできますか? 記 =IF(ISERROR(VLOOKUP(($D$8,データ!$B$AN,39,FALSE)),““,VLOOKUP(($D$8,データ!$B$AN,39,FALSE))
>>356 0を表示しないだけなら、条件付き書式でも良いし、
式だと長くなるけど
=IFERROR(
IF(OR(VLOOKUP($D$8,データ!$B$AN,39,FALSE)=““,VLOOKUP($D$8,データ!$B$AN,39,FALSE)=0),"",VLOOKUP($D$8,データ!$B$AN,39,FALSE))
,"")
かな。IFERRORの方が楽
358 :
名無しさん@そうだ選挙にいこう :2014/05/25(日) 08:47:13.98
>>357 お返事ありがとうございます
しかし、なぜか入力は正しくありませんとでてきてしまいました。
>>358 データ!$B$AN,
のところは、このままじゃダメでしょう
360 :
名無しさん@そうだ選挙にいこう :2014/05/25(日) 08:57:46.65
MAXで調べるセルの中にエラーセルが1つでもあるとエラーを返しますが 無視させる方法は無いのでしょうか?
"MAX エラー 無視"でぐぐったら出てた
363 :
361 :2014/05/25(日) 17:05:45.50
こういう不可解な隠しコマンドみたいなのは他にあるのですか? こういうのが出てくると使いこなせるのかどうか不安に思えますね。
「使いこなせる」って何だ?
チェックボックスのON/OFFをVLOOKUPを使ってできますか?
配列数式が隠しコマンドってw
>>363 数式内にスペース入れてもいいのか。
知らなかったわ。
369 :
名無しさん@そうだ選挙にいこう :2014/05/26(月) 08:46:12.70
>>368 ほとんどのプログラム言語だとただの文字の区切りだけど、これ、演算子なんだぜ…
=SUM(A1:B2 B1:C2)
だとB1:B2をSUMする
これ使ったことないけどどういう場面で使うんだろう
あとスペースが演算子になる言語ってあるんだろうか
あまりに使わないんで名前も忘れた。
>>368 ,の後は癖でスペース入れるけど、そういうことじゃなくて?
あと長めの数式だと改行も普通に使う
=if(...,
aaa(...),
bbb(...)
)
みたいな。
371 :
368 :2014/05/26(月) 17:55:07.83
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 下記のようにセル(1,1)が更新されたら処理するマクロを作りました。 このセルを手入力で更新する分にはちゃんと動きましたが、 オプションボックスのリンクに設定してオプション選択による更新では動作しませんでした。 どうすればオプションボックス連動に出来るでしょうか? If Target = Cells(1, 1) Then *** End If
オプションボックスってなんだ? ググっても分からなかった
374 :
372 :2014/05/26(月) 19:42:20.01
オプションボタンでした・・・すいません。
375 :
名無しさん@そうだ選挙にいこう :2014/05/26(月) 19:49:31.17
>>372 オプション選択した時にそれを呼び出せばいいんじゃないか
それはどうやるんですか?
377 :
名無しさん@そうだ選挙にいこう :2014/05/26(月) 20:30:03.17
>>376 ごめん無理だったかも
OptionButtoNのクリックで値の変更は Worksheet_Changeの後にくるみたいだから
OptionButtoN_clickで値を変えるようにすればいいと思う
378 :
名無しさん@そうだ選挙にいこう :2014/05/26(月) 20:33:05.90
あと If Target = Cells(1, 1) Then End If これ間違ってる。 Targetのrowとcolumnが1、という比較をしなくてはいけない
379 :
名無しさん@そうだ選挙にいこう :2014/05/26(月) 20:36:03.59
それと俺からの質問なんだけど range("a1")を変更した時、 Private Sub Worksheet_Change(ByVal Target As Range) If Target Is Range("a1") Then MsgBox ("") End If End Sub これってなんでifの条件式が真にならないのだろう? マジで分からん
>>378 If Target.Row = 1 And Target.Column = 1 Then
こうですか???
>>377 > OptionButtoN_clickで値を変えるようにすればいいと思う
これどこで変更できるんでしょう?
リンクセルの値で select case じゃダメかな?
383 :
名無しさん@そうだ選挙にいこう :2014/05/26(月) 20:46:21.02
>>380 そう
>>381 下のどっちか
Sub オプション1_Click()
cell(1, 1) = 1
hokanosyori
End Sub
Private Sub OptionButton1_Click()
Cells(1, 1) = 1
hokanosyoiri
End Sub
385 :
名無しさん@そうだ選挙にいこう :2014/05/26(月) 22:20:11.12
>>384 両方オブジェクトだろ
誰も答えを出してくれないから検索して答えを出したわ
Sub a()
If Cells(1, 1) Is Cells(1, 1) Then
MsgBox ("")
End If
End Sub
これがまさかのfalse
Cells(1, 1)はA1セルそのものじゃなく、別の参照かなんかだったんですね
ByValだからじゃないの
>>385 オブジェクト分かってる?
TargetとRange("a1")は同じ範囲を参照する別のオブジェクト変数なんじゃないのかってことなんだけど
>>385 「オブジェクト」と「オブジェクト型」を混同してる
Isはオブジェクト型を比較する演算子
CellsもRangeもRange型だからIsでは比較できない
CellsやRangeはセル範囲に関係なく、プログラム中で出てくるたびに毎回新しいオブジェクトが作られるという仕様になっている だから Cells(1, 1) Is Cells(1, 1) というコードがあった場合、Rangeオブジェクトがわざわざ別々に2つ作られてから比較されるために結果がFalseになる たとえばこうすれば2つのオブジェクトは同じになる Sub a() Dim c1 As Object, c2 As Object Set c1 = Cells(1, 1) Set c2 = c1 If c1 Is c2 Then MsgBox ("") End If End Sub
390 :
名無しさん@そうだ選挙にいこう :2014/05/27(火) 00:41:10.64
>>389 ありがとう、納得
試してみたらどっちもメモリドカ食いだったわ
Sub a()
Dim Member() As Range
ReDim Preserve Member(1000000)
For i = 1 To 1000000
Set Member(i) = Cells(1, 1)
Next
MsgBox ("")
End Sub
Sub b()
Dim c1 As Object, c2 As Object
Dim Member() As Range
ReDim Preserve Member(1000000)
For i = 1 To 1000000
Set c1 = Cells(1, 1)
Set Member(i) = c1
Next
MsgBox ("")
End Sub
391 :
名無しさん@そうだ選挙にいこう :2014/05/27(火) 15:19:17.03
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010,2013 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 VBAで読み取り専用プロパティを書き換えたいのですが方法はありますか?
392 :
名無しさん@そうだ選挙にいこう :2014/05/27(火) 15:29:12.20
>>391 物による
直接無理な場合は無理
読み取り専用プロパティを書き換えるメソッドがある場合がある
>>391 Range("A1").Locked = False
>>392 Matchオブジェクトの中身を書き換えたかったのですが無理そうですね
ありがとうございます
>>394 なんの目的か知らんけど、matchオブジェクトっぽいクラスなりタイプを定義して、中身全部コピるとか
>>395 そうすることにします
直接書き換えられれば簡潔に書けて速度も速そうだったのですが・・・
たとえばシート1に毎日記録を入力し、シート2のA1に =シート1!A1*2 のような数式があるとします このとき、シート1のA2に何か入力した際に自動でシート2のA2に =シート1!A2*2 と数式が追加される方法ってありますでしょうか? 手動で随時増やすしかないのであればマクロ化しようと思います
>>397 事前にsheet2に入力しちゃだめなん?
sheet2の余計な0が嫌ならisblankなり書式設定で。
399 :
名無しさん@そうだ選挙にいこう :2014/05/27(火) 20:31:03.27
関数からセルに値を入力する場合は、例えば5行目3列に1を入れたい場合は、cell(5, 3) = 1 でいいんですかね? ちょっと試す環境がないので聞いてみました。
400 :
ぴころ ◆lHG3Yzo0a6 :2014/05/27(火) 20:36:33.88
>>398 実際には先の例でいうシート2のような転記先のシートが10ほどあります
また、無駄な記述を避けたいという個人的な思いもあって最低限の行だけ自動でオートフィルしてくれたらなと思ったのですが....
厳しそうならマクロ作ってきます('A`)
403 :
名無しさん@そうだ選挙にいこう :2014/05/27(火) 21:03:27.35
>>399 そりゃvbaだろう(ある意味関数ではあるが)
A1にcell(5, 3) = 1とか入れても無効だぞ
A1?
セルにそんな関数は無理でしょ。 1を表示させたいなら、1を入れればいいんだから。 A1に1を表示させたいなら、別のセルに1を入れておいて、それを参照するしかない。
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 標準モジュールの整理をしたいです。 過去に作成したマクロが60個ぐらいあり、 プロジェクトウインドウで目的のマクロを探し出しづらくなってきました。 今のところは 1モジュールに1マクロが入っていますが、 テーマ別にモジュールを分け、複数のマクロをその中に入れるべきでしょうか? 皆さんはどのようにマクロを整理されていますか?
407 :
名無しさん@そうだ選挙にいこう :2014/05/28(水) 00:44:00.96
>>406 マクロってブックごとに作るもんだと思う。
必然的に最初から分かれている。
俺は標準モジュール1に全て入れ、
sheetモジュールのbutton_clickからcallするようにしてるから
あまり煩雑と感じたことはない。そのボタンも多くて3つか4つぐらい。
まぁ整理するなら、似たようなものは一つにまとめて、引数やinputbox、msgboxで分岐させるとかはどうだろう
privateにすれば一覧にも現れない。
一つのブックに何個もいれて何でも処理できるブック、
ゲーム詰め合わせとかにしてる場合はわからん。
なんにしろ、モジュールじゃなくてブックで分けたほうがいいとは思う。正解は、多分無いだろう。
右クリックメニューの拡張とか、ショートカットに割り当てたマクロとか、よく使う構文のスニペットとか 自分の作業範囲で完結するような類いの物はPERSONAL.XLSにまとめてある
>>406 1モジュールに1マクロなんてことやってるからだろ
右上のドロップスダウンボックスから各マクロに飛べるんだから、目的別とかで3モジュール程度にまとめた方がいい
410 :
名無しさん@そうだ選挙にいこう :2014/05/28(水) 11:01:36.12
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010,2013 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 VBAの標準関数のソースを見たいのですがどこに記述されているのでしょうか?
オープンソースじゃあるまいし…
範囲内の1とTRUEの数をカウントしたい場合、 COUNTIF(A1:A100, OR(1, TRUE)) これだと1をカウントしてくれないんです。 まぁ、COUNTIF(A1:A100, 1)+COUNTIF(A1:A100, TRUE)ってやればいいんですけど、 上ので出来ないのがもどかしいのでどうすればいいか教えてください。
413 :
名無しさん@そうだ選挙にいこう :2014/05/28(水) 18:37:30.39
隨分経つし、どこかに逆汗した結果があるかもなーと思って探してみたけど無かった 無いんじゃね
414 :
名無しさん@そうだ選挙にいこう :2014/05/28(水) 18:37:58.54
415 :
名無しさん@そうだ選挙にいこう :2014/05/28(水) 18:39:56.23
>>412 それはアンタ、
COUNTIF(A1:A100, OR(1, TRUE))
が
COUNTIF(A1:A100, TRUE)
になってるからだよ
=COUNTIF(A1:A100,1)+COUNTIF(A1:A100,true)
mosikuha
countifs
=SUM(COUNTIF(A1:A100,{1,TRUE}))
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 ちょこっと 【4 VBAでの回答の可否】 可 フィールド(ユニーク値)が100個以上あるデータをいちいちピボットで組むのが 大変なので、良かったら知恵をお貸しください。 「年」「月」「日」「Date」以外のフィールドは全てデータフィールドに持っていくのはどう書けばいいのでしょう? Dim wksName As String 'データのあるシート名 Dim pvtName As String 'ピボットテーブル名 Dim cntR As Long 'Max行 Dim cntC As Long 'Max列 Dim strTmp As String wksName = ActiveSheet.Name 'シート名格納 pvtName = "PivotTableNew" With Worksheets(wksName).Range("a1").CurrentRegion cntR = .Rows.Count '行数 cntC = .Columns.Count '列数 End With 'つづく
'データ取得範囲格納 strTmp = wksName & "!R1C1:R" & cntR & "C" & cntC '新規シートにピボットテーブル作成 ActiveSheet.PivotTableWizard _ SourceType:=xlDatabase, _ SourceData:=strTmp, _ tabledestination:="", _ TableName:=pvtName '行フィールド,列フィールド追加 ActiveSheet.PivotTables(pvtName).AddFields _ ColumnFields:="年" 'データフィールド追加(ここからがエラーになります><;) If ActiveSheet.PivotTables(pvtName).PivotFields.Caption <> "年" & "月" & "Date" Then With ActiveSheet.PivotTables(pvtName).PivotFields .Orientation = xlDataField .Position = 1 .NumberFormat = "#,##0_ " '※書式設定 End With End If ActiveSheet.Range("A1").Select MsgBox "処理終了〜!" End Sub
419 :
名無しさん@そうだ選挙にいこう :2014/05/28(水) 21:37:55.98
>>417 データはテキトーに置き換えていいので、構造が同じテストシートをうpしてほしい
>>419 あっ レスついてた、ありがとうございます!
テストシートって元データのことでしょうか?
年 月 日 Date 炭酸(1) 炭酸(2) 炭酸(3) コーヒー(1)、コーヒー(2)、・・・
2014 5 1 20140501 665 222 123 111 223
2014 5 2 20140502 444 223 444 222 225
こんな感じで毎日売上が各商品ごとにデータがあるんです。
こちらをピボットで月別や年別で合計をパパッと出したいのですが
何分項目が沢山ありまして、手でいちいちピボットの迫にフィールドを持っていくのが大変なのです。
もし見当違いのことを言ってましたら申し訳ありません。
421 :
名無しさん@そうだ選挙にいこう :2014/05/28(水) 23:12:06.68
>>420 http://www.dotup.org/uploda/www.dotup.org5090179.zip.html こんな漢字
マクロの記録から改変したほうが早いと思う
あと今気づいたけど
ActiveSheet.PivotTables(pvtName).PivotFields.Caption <> "年" & "月" & "Date" は
(ActiveSheet.PivotTables(pvtName).PivotFields.Caption <> "年" ) and (ActiveSheet.PivotTables(pvtName).PivotFields.Caption <> "つき" )
みたいにっかあないとだめ
422 :
406 :2014/05/28(水) 23:17:38.61
>>407-408 ウチとは真逆ですね…
ウチではマクロのボタンをツールバーに置き、
多数のブックがそれを共用しています。
>>409 そうするのが良さそうですね。やってみます。
レスして下さいました皆様、ありがとうございました。
423 :
420 :2014/05/29(木) 20:53:35.29
>>421 遅くなりましたが、リンクと注意書きありがとうございました。
ちょっと試行錯誤してみます\(^o^)/
エクセルのVBAを基礎から学べるWEBサイトないですかね?とほほのPerl入門みたいな奴希望なんですが。
【1 OSの種類 .】 Windows7 HOME 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 C列に 2014/4/30 17:05 な感じで時間と日にちのデータが入ってます D列に売上データが入ってます 1ヶ月分が1シートになったファイルがあるのですが、ここから別のシートに 4月1日の売上 4月2日の売上 な感じで、各日ごとの売上を抽出したいです。 どうすればよいでしょうか? =SUMIF(C:C,"2014/4/1*",D:D) では計算できませんでした…
426 :
名無しさん@そうだ選挙にいこう :2014/05/29(木) 21:50:53.91
>>424 エクセルは割となんでもできるから、基礎というのが無い
クラスとか知ってれば後はだいたい応用が効くだろう
他言語が結構オススメ、一度でいいからやっておくと良い。
俺が勧めるのはC++だけど、今ではJAVAかな?最近の言語はよく知らないわ。
427 :
名無しさん@そうだ選挙にいこう :2014/05/29(木) 22:08:11.19
こんばんは。 文字列結合について教えてください。 文字列結合で間に改行を入れたいんですが、何故か入りません。 例えば、="ABC" & CHAR(10) & "DEF" と入れても、 普通にABCDEFと表示されるだけで、改行が入りません。 考えられる原因は何かあるでしょうか? Windows7 Pro、EXCEL2010です。
428 :
名無しさん@そうだ選挙にいこう :2014/05/29(木) 22:10:31.66
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 割り算をするときに小数ではなく分数で表示することはできますか? A1、B1、C1 にそれぞれ 6、 9、 =A1/B1 を入力するとC1には0.6667と表示されますが これを2/3と分数で表示させることはできますか。 C1に2、D1に3とかでもかまいません。 (答えが整数のときはD1に1を表示させるとかでもいいです)
430 :
名無しさん@そうだ選挙にいこう :2014/05/30(金) 00:59:16.78
>>430 早い解答ありがとうございます。
これから試してみます。
>>430 431です
ありがとうございます
これで助かります
計算結果が負のときはできないようなので
今、負でも表示させる方法に取り組んでいます
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 4個の数値をZ1:Z4に入れてB1=MATCH(A1,Z1:Z4,0)とするのと 直接B1=MATCH(A1,{10,20,22,25},0)とするのではどちらが処理が軽いでしょうか? MATCHをする件数とMATCHを掛ける対象やデータがやたらと多いので
>>433 配列数式の方が速そうな気はするが、まずは実測しなよ
435 :
名無しさん@そうだ選挙にいこう :2014/05/30(金) 19:15:00.51
100万件ぐらい入れてF9押すんだ
436 :
名無しさん@そうだ選挙にいこう :2014/05/30(金) 21:13:50.55
427です。こんな単純なことに気付かなかったとは、、 無事、意図した通りになった。428さんありがとう。
【1 OSの種類 .】 Windows7/8.1 【2 Excelのバージョン 】 Excel2010/2013 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 いいえ 一覧表をリストの作成にてソートさせた場合に元の順序に戻せる方法はありませんでしたか? 記憶違いかもしれませんがシリアル用の列などを作成しなくても戻せた気がします よろしくお願いします
ctrl+z
保存せずに閉じてまた開く
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 おそらく2007 【3 VBAが使えるか .】 わかりません 【4 VBAでの回答の可否】 簡単にできそうなら 入力用のワークシート(普通の表)に文字列を入れると 印刷用のワークシート(変則的なセル配置)に反映される、という作業をしています 入力用 印刷用 A1 B1 C1 A1 B1 A2 B2 C2 → C1 A3 B3 C3 A2 B2 C2 A3 B3 C3 印刷用ワークシートで、飛び地になっているC1、C2、C3を一括選択して 「折り返して全体を表示する」をチェックしたいのですが、 この場合、Ctrlを押しながら1セルずつ選択部を追加していくしかないでしょうか? 入力用ではCという列の括りなので、印刷用でも何らかの一括選択方法がないかなと思った次第です
>>440 > 飛び地になっているC1、C2、C3
このルールの仕様が決まっているならコンピュータで判断させることができるし
このルールの仕様が決まっていないなら人間が判断するしかない
442 :
名無しさん@そうだ選挙にいこう :2014/06/01(日) 08:28:21.70
>>440 Sub Macro1()
x = 2 '2=Bれつ
For i = 2 To 100 ' 2=100 2から100行
Cells(i, x).Select
With Selection
.WrapText = True
End With
Next
End Sub
BASICってFOR構文のオプションにSTEPってなかったっけ? FOR I=2 TO 100 STEP 2ってやると奇数だけ飛ばして処理するはずだが
444 :
名無しさん@そうだ選挙にいこう :2014/06/01(日) 09:13:03.24
あれ、ごめん抜けてた
>>442 正しくはこう
Sub Macro1()
x = 2 '2=Bれつ
For i = 2 To 100 step 2 ' 2=100 2から100行
Cells(i, x).Select
With Selection
.WrapText = True
End With
Next
End Sub
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2013 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 甲のセルと乙のセルの数字の組み合わせによって丙のセルに色々な数字を指定して入力 したいのですが、どうすればいいのでしょう? 例えば甲が1種類で乙がA5サイズだと丙は200円と表示したり 甲が2種類で乙がB4サイズなら丙は300円と表示させたりしたいのですが。
甲に入る値が何かによって回答が異なる 甲に1とか数値が入り、乙にA5が入るのであれば、作業セルを"1A5"としてVLOOKUPで丙に拾ってくる
>>446 ごめんなさい。 シート見返してみたらもうちょっと複雑でした。
甲は基本的に数値が入り、乙にも数値が入り 丙にはA5、B4などと言った言葉が入ります。
その3つの条件から丁の数値を決めたいのですが、
甲の数値は1〜10 11〜20 21〜30といった形で検索条件が変わっていく形です。
この時の丁にどういう処理をすればいいのか全くわからない状況で、困っています。
それなら同じ。作業セルに甲乙丙の値を連結した値をつくって、VLOOKUPで拾ってくればいい 別シートに 甲-乙-丙 丁 1-2-A5 200円 みたいな表をつくっておく
>>440 元の入力用セルC列を
ハナから「折り返して全体を表示する」設定にしとけば
印刷用にコピーすればセル設定も一緒にコピーされるじゃん
どうやって印刷用フォーマットに変えてるんだね?
>>448 できました。ありがとうございます。
1から全て入力しなくちゃいけないのが難点ですがおかげさまで少しレベルアップできました。
451 :
440 :2014/06/01(日) 22:16:34.66
>>441-442 回答ありがとうございます
それがVBAというものでしょうか、教えてもらっても使いこなせそうにありませんでした…
>>449 数値や文字列なんかは「入力用シートのセルに入力→自動的に印刷用シートの対応するセルに反映」
という仕組みになっているんですが、なぜか文字の大きさや折り返し設定などは
印刷用シートのセルを直接いじらなければ変わってくれないみたいなんです
まさか=で参照してるんじゃ?
>>451 "=C"をキーワードにすべて検索で検索結果を一括選択は?
どんな状態になってるかわからんけど
454 :
名無しさん@そうだ選挙にいこう :2014/06/01(日) 22:41:52.94
>>451 それがエクセル
書式までは数式で飛ばせない
飛ばす 時々聞くけど、他シートのセルを数式で参照することを「飛ばす」と言われると、すごく違和感を感じる 普通に解説本とかに載ってる用語なの?
457 :
名無しさん@そうだ選挙にいこう :2014/06/01(日) 22:59:13.96
載ってない。個人の感覚だろう
>>455 いや、おかしいとかそういう意味じゃなくて
=で参照しただけで書式も一緒に参照されると思ってるのか?と
ものっしょ初歩的なことだっただけに驚いたんだよ
印刷用のシートとあるからには
そっちにも当然書式設定済で、データの桁数が足りなくて
配置が崩れると嘆いているのかと思ったもんで。
459 :
名無しさん@そうだ選挙にいこう :2014/06/01(日) 23:13:30.58
どうせAとBはセルはみ出さないんだろう? 全部のセルを「折り返して全体を表示する」設定にしとけば済む話じゃん
462 :
425 :2014/06/02(月) 01:39:54.72
=SUMIF(C:C,">=2014/4/1",D:D)-SUMIF(C:C,">=2014/4/2",D:D) =SUM(SUMIF(C:C,{">=2014/4/1",">=2014/4/2"},D:D)*{1,-1}) =SUMIFS(D:D,C:C,">=2014/4/1",C:C,"<2014/4/2")
でも、書式設定されてないセルに =a1 って入れるとa1の書式設定がコピーされるんだよな。 オートコンプリート的な機能だと思うけど。
>>463 year,month,dayで年月日取り出して、and条件で比較したほうがよくね?
>>465 数式でやる限りたいして変わらない。
一番望ましいのは、ピボットテーブルで集計して「日」でグループ化する方法。
467 :
名無しさん@そうだ選挙にいこう :2014/06/02(月) 06:49:57.33
>>464 書式設定されてる/されてないの区別って何だろ
一度でもそのセル設定ダイアログを開いてOKボタンを押したかどうか?
469 :
名無しさん@そうだ選挙にいこう :2014/06/02(月) 08:45:32.16
「標準」「G/標準」どちらもリンク元の書式で上書きされる それ以外は個別の設定が維持される
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2013 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 数値入力された列の値をそれぞれ10倍したリテラル数値(式は×で)にする場合 どのようにするのがスマートな方法でしょうか? 現在は作業用の列を用意して行っていますが もっと良いやり方がありそうな気がして質問させて頂きました
>>471 どこかのセルに10と入れてコピー、10倍したいセルを範囲選択、形式を選択して貼り付け、乗算
>>472 ありがとうございます
方法論の質問なので我儘を言って申し訳ないのですが
「どこかのセルに10と入れて」という作業のためのセルを必要としない方法てないものでしょうか?
474 :
名無しさん@そうだ選挙にいこう :2014/06/02(月) 23:46:58.29
ない
>>474 ありがとうございます
よくやる作業なので拘ってしまいました
476 :
名無しさん@そうだ選挙にいこう :2014/06/03(火) 00:00:09.19
ショートカットなりマクロに登録すればいいのに 最初大変だけど捗るよ
>>475 Sub Macro1()
For Each c In Selection
c.Value = c.Value * 10
Next
End Sub
【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
http://i.imgur.com/FyBPdmC.png この画像のように3次元グラフで縦軸の値に応じて連続的に色を変えるにはどうしたらいいでしょうか?
>>478 等高線なら軸の書式設定で目盛り間隔を小さくして、系列ごとに色を設定すればいい
間隔が小さいと系列の数が多くなって手作業で色を設定するのは大変だからマクロ推奨
480 :
478 :2014/06/03(火) 06:38:02.68
>>479 レスありがとうございます。やっぱりVBAでやらないときついですか。
値に応じてグラデーションさせる機能があってもいいと思うんですけどね。
グーグル先生に教わりながらVBAでやってみます。ありがとうございました。
2010ならそれっぽいグラフのテンプレがなかったっけ
そもそもExcelはグラフ機能が貧弱なので グラフに凝りたければ、グラフのソースとなるデータを計算することが主目的なExcelではなく グラフ作成が主目的なアプリやオブジェクトを活用するのが正解
>>481 テンプレには階段が粗すぎるデータしかなかったはず(ネットにはあるのかな?)
細かく色分けするには系列を増やすしかないと思う
グラデーション機能もちょっと違うんだよなあ
2つ質問させて下さい 1.新しいウィンドウを開くと、もともと開いていたウィンドウと文字の大きさや行列の幅などが 変わってしまったウィンドウが開くのですが、元ウィンドウと全く同じものを開く方法はないでしょうか? 2.新しいウィンドウを開く→整列→左右に並べ替え、をすると 元ウィンドウが右、新ウィンドウが左に配置されてしまいます これを逆配置にすることはできないですか?
VBAは分らないとか VBAじゃ嫌だとか、後出ししてきそうな悪寒w まあ後出しは無視が基本なので、 後出ししてきたところで放置されるだけだがな
されるだけだがな(失笑)
488 :
名無しさん@そうだ選挙にいこう :2014/06/05(木) 12:28:06.72
こんいちわエクセル2000です =IF(AND(RC10<20,RC12>=1),RC8-RC5,0) とゆう式の"AND(RC10<20,RC12>=1)"の部分だけをR2C31とかの他のセルにテキストで放り込んでおいて =IF(R2C31,RC8-RC5,)ってやるとき#VALUE!ってなってうまく出来られません どうしたらできれられますか??
>>488 最初にイコール記号が必要です
R2C31の内容は
AND(RC10<20,RC12>=1)
ではなくて
=AND(RC10<20,RC12>=1)
にしてください
なんかいろいろまちがいてた
=IF(AND(RC[-9]<20,RC[-7]>=1),RC8-RC5,) とゆう式の"AND(RC[-9]<20,RC[-7]>=1)"の部分だけをR2C31とかの他のセルにテキストで放り込んでおいて =IF(R2C31,RC8-RC5,)ってやるとき#VALUE!ってなってうまく出来られません どうしたらできれられますか??
標準モジュールに Private Function Eva(trg As String) As Double Eva = Evaluate(trg) End Function て書いてからセルに =IF(eva(R2C31),RC8-RC5,) てったらできました
みんなありがとう!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
えっ何その斜め上の解決方法
職場によるんだろうけど、数式で出来ることをわざわざマクロでやる意味がわからん。 オレvba使えるぜって主張したいのか
使えない自慢はもう結構
基本的にVBA使えるようになりたての人たちが質問に答えて優越感に浸るスレなので より難しく、より複雑に無意味な回答をするのは当然です
回答どころか本人が自己解決してるじゃん
つーか、原爆もってるのに剣で戦えとか無理
カッコ良すぎて爆笑した その名言()使わせてもらうわ
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2013 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 セルに複数の条件付書式が設定されている状況で その中から1つだけ他のセルに条件付書式だけをコピーしたいのですが どうすれば良いでしょうか?
OSがXPで、Excel2003です あるフォルダにNotepadのテキストファイル3つ作って、ファイル名を a1,a2,a3 とします エクセル上の 1 a1 ABC 2 a2 DEF 3 a2 HIJ みたいな記述をテキストに自動で転写する方法をお願いします 「a1」に「ABC」、「a2」に「DEF」、「a3」に「HIJ」・・・という感じです VBAはど素人ですが、マクロの使い方の載った解説書はあります これ見ながら貼りつけて動かすのはなんとかなるかも(^ ^;
3 a2 HIJ は 3 a3 HIJ の間違いですすんまそん
>>504 転写って具体的にどういう動き?
テキストファイルに上書き?追記?
507 :
名無しさん@そうだ選挙にいこう :2014/06/05(木) 20:55:26.40
>>503 データ→リンクの解除から解除するのは簡単だけど、元データはどこからとっているのだろうね。興味深い
>>504 Sub a()
Dim i As Long, LngLoop As Long
Dim StrFN As String
For k = 1 To 3
StrFN = ActiveWorkbook.Path & "\" & Cells(k, 1).Value & ".txt"
Worksheets("Sheet1").Activate
LngLoop = Range("a65536").End(xlUp).Row
IntFlNo = FreeFile
Open StrFN For Output As #IntFlNo
Write #IntFlNo, Cells(k, 2)
Close #IntFlNo
Next
End Sub
こんなんでええか
>>507 ありがとうございます。教えてもらったところの作業をマクロの記録でとってみたところ、
ActiveWorkbook.BreakLink Name:= _
"\\Jpx-fs\kabu\01_株総\信用共用\チェックシート\HP信用貸借区分関係\信用貸借集計(統合対応).xls", Type:= _
xlExcelLinks
となったんで、それをVBAのモジュールに追加してみたら出なくなりました。
ユーザーには訳わからん所在地みたいですが w
つーか、原爆もってるのに剣で戦えとか無理ッスわw
510 :
名無しさん@そうだ選挙にいこう :2014/06/05(木) 21:36:14.83
>>508 その発想はなかった、ありがとう。
そのディレクトリは社内LANだな。それも東証の、あまり公にしないほうがいいところだろう。
気が向いたら東証に通報してやると良い。
お主は伸びるだろう。がんばれよ。
>>508 言うなればおまえは原爆を手に入れたようなもの。
つまり、ここで答えてるやつらは a列の合計値求めるのにsum(a:a)で済むところ for i = 1 to activesheet.usedrange.rows.count total = total + activesheet.cells(i,1).value next とかしちゃうのか
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 A君 12年○月○日 50 A君 13年○月○日 55 B君 12年○月○日 46 B君 13年○月○日 29 C君 12年○月○日 62 C君 13年○月○日 70 それぞれの人の増減率を表示させることはできるのでしょうか? 2列目の日付はバラバラです。 お願いします。
514 :
名無しさん@そうだ選挙にいこう :2014/06/05(木) 23:24:16.61
>>512 鶏を殺すのに原爆を使うか?
という反論はニュー速でなら必要だなぁ、と思っていたんだ・・・こんんあとこで言わせないで欲しかった。
>>513 できると思うけど増減率ってのがなんだか微妙な数値。あまり聞き慣れないけど、どういう計算式?
その月日と結果として表示させたい増減率、2つか三つぐらい例として出して欲しい
▼━質問テンプレ (必ず使ってね) ━━━ 【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 少し 【4 VBAでの回答の可否】 可 売り上げデータがあるのですが、 それぞれの商品と一緒に購入されている商品は何か?のデータを出すにはどうしたらいいのでしょうか? ○月○日,Aさん,牛乳,紅茶, ?月?日,Bさん,牛乳,コーヒー, △月△日,Cさん,牛乳,コーヒー,パン, みたく日にちごとの売上データがあって 単品でよく購入される商品は割り出せるんですが、 一緒に購入されるパターンのデータは どうやって割り出せばいいのかわからんです。
518 :
名無しさん@そうだ選挙にいこう :2014/06/06(金) 00:29:29.94
実際のデータを見ないと分からん 代替4品目以内でフィルタ欠けてなんだかんだってかんじだと思う
519 :
516 :2014/06/06(金) 01:00:38.22
例えばこういうデータがあったとして 日付 顧客CD 購入商品 金額 2014/4/1 A 牛乳 198 2014/4/1 A 紅茶 980 2014/4/1 B 砂糖 480 2014/4/2 A コーヒー 1260 2014/4/2 A クリーム 600 2014/4/2 B 牛乳 250 2014/4/2 B 紅茶 485 2014/4/2 C クリーム 300 2014/4/3 C コーヒー 1500 2014/4/3 A 砂糖 480 2014/4/3 A コーヒー 1260 2014/4/3 B クリーム 600 2014/4/3 B 牛乳 250 2014/4/4 C 紅茶 485 2014/4/5 B クリーム 300
ピボットだと↓これはできるけど、これは単に購入の個数であって 同時に買われたかどうかはわからん。 データの個数 / 金額 列ラベル 行ラベル クリーム コーヒー 牛乳 紅茶 砂糖 総計 A 1 2 1 1 1 6 B 2 2 1 1 6 C 1 1 1 3 総計 4 3 3 3 2 15
>>514 要は12年と13年を比べて、10パーセント増加してる人を抽出したいんです。
できるでしょうか。人数はかなり多いです。
>>520 顧客の次に日付も入れれば
とりあえずわかる
自動でやるには
@商品名選択
Aその顧客・日付を検索
Bその顧客・日付から商品をリストアップし選択商品以外をリストに追加
CAから繰り返し
めんどくさい誰かやれ
>>521 一旦ピボットを使って
12年度と13年度の列に別れた表を作れ
その表をコピペして新規テーブル作って
最後列に計算式(=13年/12年)の列作れ
ピボットのフィールド式を使えば年度を比較した増減とか出せる すげーめんどくさいけどな
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 ドロップダウンリストについてなんですが、 大きな範囲を全部同じドロップダウンにして一纏めにして選んでもらうのと、 indirect関数を使ったドロップダウンリストを大量に使ってやたらと重くなるのでは どちらがユーザーインターフェイスとしてマシでしょうか? 【りんご】 青森産 静岡産 【みかん】 愛媛産 愛知産 和歌山産 【バナナ】 マレーシア産 国産 の180分類2500商品版で、 全商品を毎回ドロップダウンで出すのが前者で、数が多いだけで動作は軽く、 Aセルにみかんと入力したら、Bセルでは愛媛・愛知・和歌山だけが選べるようになっているが 1入力につき2秒待ちという酷い状態なのが後者です
526 :
名無しさん@そうだ選挙にいこう :2014/06/06(金) 15:50:27.90
527 :
525 :2014/06/06(金) 15:55:30.01
>>522 ごめん、全然わからない
それピボットの話?
『一緒に』買ってるかどうかを出したいんで
単なる購入件数を出したい訳じゃないんだ
牛乳とコーヒーを一緒に買う割合は何%か?を出したいん。
>>527 indirect使うから重いんじゃないの?
530 :
名無しさん@そうだ選挙にいこう :2014/06/06(金) 16:55:13.38
>>527 多分入力する箇所が多いんだろうけど、決まった所や未入力のところはできるだけ値にしておく
indirectを多様するとちょー重くなる
531 :
525 :2014/06/06(金) 17:16:31.09
Bセルに入力規則→indirect(A1)で、 Aセルがみかんなら愛媛・愛知・和歌山と出て(愛媛・愛知・和歌山のセルにみかんと名前をつけてある) Aセルがりんごなら青森・静岡と出るようにしてます(青森・静岡のセルにりんごと名前をつけてある) indirectするしないに関わらずAセルは分類入力セルです 1ページA1〜A25までで20ページ合計500個あります indirectするなら、Bに500のindirect(A)が並びます
532 :
525 :2014/06/06(金) 18:07:42.34
皆さんにお伺いしたいのは indirectを使って重くなるか、2500項目のドロップダウンで面倒か この2択の場合、どちらのほうがマシかという事です もし、indirectよりも大幅に軽く、現状並みかそれなりに便利な方法があれば そちらの方を教えていただけると非常に助かります
>>528 516=528 かな?
VBA使って
(1) 1度に複数種類の商品購入データだけ抽出後、
(2) 各購入データから2種類の商品の組み合わせを作成
(3) 組み合わせ毎の件数を出す
みたいな処理かなあ。
(2)の処理は、例えば1度の購入で3種の商品購入だったら3個の組み合わせができます。
(商品α、β、γの購入だと αβ、αγ、βγ)
商品に優先度を設定することで同じ商品の組み合わせなのに逆(例:βα)が生じないようにするのが肝。
>>533 なるほど!ありがとうございます。
VBAかー。ぐぐりながらがんばります。
行き詰まったらまた来ます!
【1 OSの種類 】 Windows xp/7 【2 Excelのバージョン】 Excel 2003/2007 【3 VBAが使えるか 】 いいえ 【4 VBAでの回答の可否】 否 Windows xp/Excel 2003 で作ったファイルを Windows 7/Excel 2007 で読み込むと 列幅がずれて ##### 表示になる列があります。* また2003と2007交互に編集を繰り返すと、「標準の幅」以外の列は変わってしまいます。 列幅を設定通りに固定する方法はないですか?行高さは変わりません。 なおディスプレイの画素数はxp/2003が1600x1200、7/2007が1920x1080です。 *なるべく多くのセルを見たいので、最低限の列幅にしている。
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 2007 【3 VBAが使えるか .】 使えません 【4 VBAでの回答の可否】 可。理解するまで勉強します 前提として、フォルダにそれぞれA〜Zの名が付いたExcelファイルがあります。 で、Excelで作られた予定表があり、そこにその日必要なデータとそのデータの必要印刷部数が載ってます。 ファイル名 必要部数 A 10枚 D 5枚 E 10枚 K 10枚 こんな感じです。 この予定表の必要データと必要部数を読み取り、必要分印刷して出してくれるマクロ?が欲しいです。 漠然としたイメージで申し訳ないですが可能でしょうか? 足りない情報があるなら書き足します。
>>536 VBAを使わないとできない
VBA否なので無理
540 :
537 :2014/06/06(金) 22:37:33.08
>>539 VBAでの回答はお願いできますか?
もしくはやり方を教えて貰えると助かります。
>>540 順番に開いて印刷するだけ
Aを10部印刷するVBAはたったこれだけ
Workbooks.Open "A.xls"
Worksheets(1).PrintOut Copies:=10
542 :
名無しさん@そうだ選挙にいこう :2014/06/06(金) 22:47:48.25
【1 OSの種類 .】 Windows8 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 excelシートをそのままメモ帳へ貼付けたいのですが、一行が長すぎると次の作業で不具合を起こすため、一行の長さを短くしなければなりません。 というのが、Excelシートをそのままメモ帳へはるとセル間は勝手にタブキーで置き換えられてしまうので、一行がやたら長くなってしまうのです。 tabキーを半角に置き換えていくのも良いのですが、メモ帳へ貼付けるのはマクロで行いたいので、それは避けたいです。 そこで有効数字の桁数を小数点以下4桁にして貼付けたいのですが、Excelで桁数をリボンにあるボタンで調整しても、表示が変わるだけで、貼付けたときには元の丸める前の数字を張ってしまいます。 そのため一行の長さがオーバーしてしまい、困っています。どうすれば貼付ける際にも有効数字を目的のもののままはれるのでしょうか。 もしできるのならばExcelシートからメモ帳へ貼付ける際に勝手にセル間をタブキーで置き換えてしまうことの対策をあらかじめExcel側で対処できないものでしょうか? (Excelファイルをテキスト形式で保存するというのは使用上の都合で無しで御願いします。あくまでExcelからメモ帳へ貼付けるのはマクロで行いたいのです。
>>542 方法は2つ、データを加工して貼り付けたい状態のデータを作業列に作っておいて、そこからコピペ
もう一つはCopyメソッドなどを使わずに、自前でクリップボードオブジェクトを操作
簡単なのは前者、見た目がスマートなのは後者、かな
544 :
名無しさん@そうだ選挙にいこう :2014/06/06(金) 23:02:03.51
>>543 データを加工して貼り付けたい状態のデータを作業列に作っておいて、そこからコピペ
というのはどういったことでしょうか。マクロでは以下のような流れでやっていますがかのうでしょうか
1条件値を入力→それに合わせてシートが計算してメモ帳へ貼付けるためのシートへ結果が出力される→メモ帳へ貼付け
各シートは計算式で関係づけられているのですが、できそうですか?
クリップボードオブジェクトを操作というのはマクロで対応出来そうなのでしょうか。
今のところcopyとopenとprintステートメントで処理しています。
545 :
537 :2014/06/06(金) 23:11:48.89
>>541 ごめんなさい凄い言葉足らずでした
エクセルのA1位置に C と書かれていた場合
A2に 15 と書かれていた場合
C.xlsのデータを15枚印刷したい ということです。
A1.A2に書いてある内容は毎日変動するので、変動する内容に対応するマクロを作りたいのです。
印刷部数に関しては
PrintOut Copies:=Range("A2").Value こんな感じでしょうか(これが合ってるかも正直分かりませんが…)
A1部分はどうすればいいのかさっぱり分かりません。
>>544 たとえばFormat関数を使えば、小数点以下の桁数を自由に変えることができる
複数のセルに分かれたデータをコピーするとタブ区切りになるから、
スペースなりコンマなり、自分の好きな記号で連結して1つの長い文字列にしてしまって、全部1つのセルにまとめる
など
>>545 こんな感じ
Workbooks.Open Range("A1").Value & ".xls"
Worksheets(1).PrintOut Copies:=Range("A2").Value
548 :
537 :2014/06/06(金) 23:20:35.63
>>547 おおありがとうございます!
言語は全然理解できてないですが必ず理解します。
本当にありがとうございました。
550 :
名無しさん@そうだ選挙にいこう :2014/06/07(土) 00:42:11.08
詳しい方教えてください 【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 複数の小数点以下が発生する数字を ROUNDDOWN、INT関数で切り捨てて数字を出しているのですが それらをトータルしようとすると電卓ではじきだした数字とずれてしまう現象があります 特定のセルの数字の小数点以下を完全に切り捨てるにはどうすればいいのでしょうか?
551 :
名無しさん@そうだ選挙にいこう :2014/06/07(土) 01:05:05.71
>>550 長いので「小数誤差」「エクセル 小数誤差」辺りでぐぐってくれ
確実な方法は常に整数で計算すること
552 :
名無しさん@そうだ選挙にいこう :2014/06/07(土) 01:17:21.08
>>551 ありがとうございます
当方は数学も関数も詳しくないのですが
ROUNDDOWN的な小数点以下を完全に切り捨てる関数は存在しないのでしょうか
表的に割りきりれない数字が発生して、それらをトータルしたいのですが
電卓で計算したものと違ってしまい、毎回毎回微調整に苦労しています
A1
B1
C1
A1+B1+C1=
のような場合、A1に入る計算結果を完全な整数にしたいのです
553 :
名無しさん@そうだ選挙にいこう :2014/06/07(土) 01:28:29.77
>>546 open,copy,printステートメントをする前にformatを挟むということでしょうか?]formatはvbaのものであって、
Excelで自分で表を作っているときに使えそうにないので、vba上でそういった処理をはさむということでしょうか?
>>553 作業シートに自由に数式を書いてもいいのならTEXT関数が同等の機能を持ってる
>>552 INT関数で小数部は消える、ことになっている
ただし負数を扱う時には注意が必要
それで誤差が出るというのなら、もうちょっと具体的にどんな数字がいくつになったか書いて
誤差の出やすい数字というと、9.999999999999とか10.000000000001みたいな、整数との差が極めて小さい時だけど
【1 OSの種類 .】 Windows8.1 【2 Excelのバージョン 】 Excel2013 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 excelで1ファイルに月ごとに「1月度」「2月度」〜〜と名前を付けシートを12枚作って月ごとの数値管理をしてるのですが 今月の数値と比較したいので隣に常に前月の指定したセルの数値を持ってきたいのですがなんとも上手くいきません 良いやり方はないでしょうか? 合わせて1月は前年度の別ファイル「〜〜年〜〜」(年度の数字が違うだけで後はファイル名同じ、シートの名前も構成も同じ)の 12月度の数字を持ってきたいのですが
557 :
556 :2014/06/07(土) 09:38:56.03
追記 年度と書きましたが、4〜翌3月での年度ではなく その数値管理は1〜12月で年度管理をしています
>>556 たとえば2月のシートには
=1月度!A1
みたいな式を書けば1月のシートのデータがそのまま表示されるけど、何がうまくいかないの?
>>558 それだと全シートにそれしないとダメですよね?
シートの月数のセルに2(月)、と入れると前月の1月のを引っ張ってきてくれるようなのを1枚作れば
あとはそれ原本にしてコピーで12枚なりいくつでもシート作れると思ったんですが
INDIRECTでシート指定すりゃいいんじゃね
>>559 ようするに、「うまく動作しない」じゃなくて「数式を入れるのがめんどくさい」ってこと?
一つ前の月のシート名を生成する数式を考えてみたけど、バカみたいに長くなるな =MID(CELL("filename"),FIND("]",CELL("filename"))+1,FIND("月度",CELL("filename"))-FIND("]",CELL("filename"))-1)-1&"月度" シートのコピーと数式の修正はVBAでまとめてやった方がたぶん早い
>>561 その通りです
うまくいかないってのは自分で数式入れてみてもうまく動作しないという事です
手間解消の為に数式等を使うのにシートが増えると手間がふえるんで他にいいやり方がないものかと質問した次第です
>>560 ありがとうございます
INDIRECTで上の事がうまくいかないのでどうしたものかと
>>562 わざわざありがとうございます
やはりVBAですか
VBAは私自身が理解できてないので難しいですが調べながらやってみようと思います
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 簡単なものなら 説明がうまくなく申し訳ないのですが h2606.xlsxには4列30行の表があり、 VLOOKUP("hoge","パス??[h260601.xlsx]sheet1!$A$E,2,FALSE") という式を列番号のみ変えて1行に4つ、それが30行あるとします 外部ファイルはh260601からh260630まで作る予定ですが、 これらのファイルは当日作るので現時点ではまだ出来ていません 私がこのh2606という、まとめのような表を作るときは、まず一行目をコピーして残りの29行貼り付け、 一行ごとに置換機能を使って日付のところを書き換えます ※h260601→h260602のような事を29回 しかし、ファイルはまだ存在していないため、前述したように一行に4セルある場合、 毎行4回もファイルを選択するウィンドウが出てきて大変です これをどうにか楽にやりたいのですが、いい方法は無いでしょうか
566 :
名無しさん@そうだ選挙にいこう :2014/06/07(土) 15:11:57.16
出来るExcel2013から始めたんです この次にやるオススメ本ってありますか?
>>565 説明が上手く出来ないときは、ブックをうpしよう
もちろん、個人情報とか機密データとかは、適当なサンプルデータに書き換えてもOKなので
>>566 君の理解力と、君の現在の知識に合ってるものがオススメ
それがどれなのかは、君自身では無い俺等には判断不可能
とりあえず、「できる」が気に入ってるなら、その発展型の「できる大辞典」も悪くないと思うけどね
できる大辞典のExcel2013はまだ出てないようだけど、2010版でも十分使えるし
できる大辞典ExcelVBAの方にいって、VBA覚えるのも一つの手だろう
少し短くできた =SUBSTITUTE(MID(CELL("filename"),FIND("]",CELL("filename"))+1,2),"月","") フォルダ固定ならもっと短くできるけど、月の取得だけでもユーザー定義関数を使った方がスッキリするだろうな Function 前シート() 前シート = Val(Application.Caller.Parent.Name) - 1 & "月度" End Function
>>565 ファイルが存在しなくて困るってだけなら、空の新規ブックを名前を付けて保存しとけばいいじゃん
570 :
名無しさん@そうだ選挙にいこう :2014/06/07(土) 19:20:47.82
>>565 先にファイルを作っておいたら?
連番 ファイル作成
でぐぐればファイルを作るソフトは出てくるよ
1 Windows7 2 Excel2013 3 VBAもマクロも関数も使えません 4 それしか方法なければ学ぶつもりなので、可 商品リスト作っていますが列が横に延びすぎるので、別のワークシートに画像付の複数行にしたリストを作りたいと思います(1行12列のものを=など使って3行4列などに) ですが、基本となる複数行の形を作っても数百アイテム分を=で手打ち入力するのはさすがにしんどいです コピーしてもうまくいきません なにか良い手はありませんか? 本屋で何冊かExcel本見ても見つけられませんでした
572 :
名無しさん@そうだ選挙にいこう :2014/06/07(土) 23:28:00.52
1. Windows 7 2. Excel 2010 3,4. Yes 入力用シートと出力用シートを分けた見積書を使っています。 普段は出力用シートをPDFにして取引先に送付するんですが、まれに エクセルのファイルのまま送付する必要があります。 この見積書は他のブック(価格表)への参照等外部へ非公開のものを含んでおり、 このままでは送付できないため、新規作成したブックへコピーして送付しています。 コピーされたブックは非公開のものを除外する目的は逹しているものの、計算式等を全く含まない ため、ちょっとした編集も面倒になってしまいます。 シート内のみで完結する参照や計算式のみを残してシートのコピーを作成する方法はないでしょうか? よろしくお願いします。
よろしくお願いします。 OS: Win7ult Excel: 2010 VBA: はい VBAでユーザー定義関数を作成しましたが、これを複数の型を使った出力をしたいと思っています。 しかし、うまくいきませんので、やり方を教えていただきたいと思います。 出力は縦横2×2で、1列目を文字列(string)、2列めを数値(double)で出力したいです。 ユーザー定義関数ではダメなのでしょうか。 実行すると次のエラーが発生します。 コンパイルエラー パブリックオブジェクトモジュールで定義されたユーザー定義型に限り、変数を割り当てることができ、 実行時バインディングの関数に渡すことが出来ます。 作ったけどダメだった関数を次レスに示します。
575 :
574 :2014/06/08(日) 01:10:59.07
Type kata label As String data As Double End Type Function test() Dim result(1, 1) As kata result(0, 0).label = "結果1" result(1, 0).label = "結果2" result(0, 1).data = 5 result(1, 1).data = 10 test = result End Function 以上です。よろしくお願いします。
>>575 ユーザー定義関数からはセルの書き換えは禁止されてる
関数を4つ作るかマクロとして動かすしかない
日曜ですが、みなさんのお知恵をお借りしたく、よろしくお願いします。 【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 下例のように、あるセルの値をセルの行番号として引用したいのですが、うまく行きません。 例)A1セルの値が213だとする。このA1セルの値B1セルにおいてD列の213を呼び出したい。 要はB1セルを[=”D”+A1] = [=D213] としたいのですが、ググっても良い手がありません。 強引にセル内を書き換えるべく、マクロでSendKyesの”{F2}”やら”+{Home}”、”^C”、”^V”を使ってもうまく行かない状況です。 VBAじゃないとできないだろうな・・・というのが今の見立てです。
こういうこと? =INDEX(D:D,A1) =INDIRECT("D"&A1) =LOOKUP(A1,ROW(A:A),D:D)
>>573 それ、目的に対する手段がおかしいのでは
580 :
574 :2014/06/08(日) 08:56:39.99
>>576 ありがとうございます。
マクロ使う方向で考えてみます。
>>573 マクロの記録で、外部参照を持ってるセル範囲だけ値の貼り付けすればいいんじゃ無い?
577です。 578、581さんご回答ありがとうございます。 B1のセルですが、行番号を引用した後にフィルハンドルを行下に引っ張って、B2を=D214、B3を=D215…する必要があります。 A1を行番号の変数として扱いたいということになりましょうか。 このためB1は=D213となるようにする必要があります。 (別の関数の形を取れないと思います) なかなかお伝えしづらくて申し訳ないです。
>>584 B1に=OFFSET(D$1,A$1+ROW()-2,0)と入れて、下にフィルでもコピペでもお好きなように
587 :
a :2014/06/08(日) 14:43:13.44
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 お願いします sheet1はシフト表です 1行目のB列からに日にち31日までが入っています。A列の2行目から名前が入っています。 sheet2のA1には日付が入っていますA2からは担当が入っています やりたいことはsheet2のA1の日付とA2以下の担当をキーワードにsheetから名前を拾ってsheet2のB2以下に表示したいです。 sheet1 1 2 3 4 5 田中 A B C D E 佐藤 B C D E A 鈴木 C D E A B 伊藤 D E A B C 山田 E A B C D sheet2 26年6月4日 A 鈴木← B 伊藤← C 山田← D 田中← E 佐藤← のように矢印の部分を表示できないでしょうか?どうかこの出来損ないに知恵をお貸しください
>>587 Sheet2!B2
=INDEX(Sheet1!A$2:A$6,MATCH(A2,OFFSET(Sheet1!A$2,,DAY(A$1),5),0))
または
=INDEX(Sheet1!A$2:A$6,MATCH(A2,INDEX(Sheet1!B$2:AZ$6,,DAY(A$1)),0))
>>567 ,569-570
ありがとうございます
やはり最初にファイル作るのが一番簡単そうですね
590 :
536 :2014/06/08(日) 18:53:00.18
>>538 サンクス
でも何でこんな現象が起こるのでしょうか?
2003での列幅10が2007だと9.89とか、2007では少しずつ狭くなります。
仕様と言われればそこまでですが...
591 :
名無しさん@そうだ選挙にいこう :2014/06/08(日) 18:56:34.43
>>590 仕様です。諦めて
2007から内部的に大幅に変わったのよ
592 :
名無しさん@そうだ選挙にいこう :2014/06/08(日) 22:59:20.39
>>588 出来ました!
ありがとうごさいました!!
>>585 有難うございます!
"&--&"で挟めばセル参照になるんですね、大変勉強になりました、アザッス!!
594 :
名無しさん@そうだ選挙にいこう :2014/06/09(月) 03:40:44.53
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2013 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 異なる2つのセルの値を参照して その2つのセルの値が同じである場合に その他の特定のセルの文字色を変化させたいと思っています。 (例:B1とA11のセルの値が同じである場合にB11の文字色を赤にしたい) 今のところ、条件付書式の「数式を使用して、書式設定するセルを決定」のルールで 「=B1=A11」を満たす場合に文字色を赤に設定する方法にしているのですが これを異なる参照先(C1とA12を参照してC12の文字色を変化とか)で 多数設定するにはどのようにすれば良いでしょうか? オートフィルオプションを使用すると適用先が範囲指定されてしまい不都合で、 1つずつコピーするしかアイデアがありません。
>>595 B1、A11→B11
C1、A12→C12
というルールなら、条件式を =B$1=$A11 にすれば行けそうな気がするんだけど
ちょっとサンプルが少なすぎるかな
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2013 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 正負どちらも含む数値が入力されている列(または行)から 0に近い順にセルを指定するにはどうすれば良いですか?
599 :
名無しさん@そうだ選挙にいこう :2014/06/09(月) 16:35:17.65
>>598 セルを指定、というのがよく分からんが…
abs()で絶対値が取れる、つまり負の数も正の数になる
後は順位が欲しければrank()など
600 :
名無しさん@そうだ選挙にいこう :2014/06/10(火) 01:07:37.94
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ (ネットで見つけたものをコピーして貼り付けて利用したりはしています) 【4 VBAでの回答の可否】 可-簡単なものでしたら 他のシートの参照についてですけれども 名前の列と曜日の行の表※1を他のシートに作ってあり、 メインのシートで日付を入れると曜日が出るようになっていて その隣に名前を入力したとき※1の名前と曜日の交点のセルを引用するいい方法はないでしょうか?
>>600 MATCHとINDEXは別のシートにまたがっても普通に使えるよ
602 :
名無しさん@そうだ選挙にいこう :2014/06/10(火) 08:37:06.65
>>600 vlookup?
慣れたら
>>600 のindex、matchを組み合わせて使うのがオススメ
【1 OSの種類 .】 Windows vista 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 こんにちは 質問お願いします A列・日付とB列・出荷量、C列・コードが入力されています。 A列 B列 C列 D列 E列 4/1 1 123 4/1 4/1 10 132 4/2 4/1 9 126 4/3 4/2 15 111 4/4 4/3 7 121 4/5 4/3 5 111 4/4 5 125 4/5 1 147 4/5 6 147 4/5 2 472 4/5 8 121 実際はA列の日付は日曜日以外は1ヶ月分入力されています。 一日分の行数は日によってバラバラです。 D列に日付が入力してあり、E列にD列の日付と同日、かつ最大出荷量のコードを 表示させたいのですがどうすれば良いでしょうか?
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2007SP3 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 IF文の否の場合以下を値として出すようにしていたのですが、どうしても#VALUE!となってしまいます。 入力という名のシートの 範囲A9:H23 年の列4 D9:D23 月の列6 F9:F23 日の列8 H9:H23 から数字を拾って平成○年○月○日と表示しようとしていました。 最初に作成した文です。 =IF(OR(ISBLANK(VLOOKUP($G$8,入力!$A$9:$H$23,4,FALSE)),ISBLANK(VLOOKUP($G$8,入力!$A$9:$H$23,6,FALSE)),ISBLANK(VLOOKUP($G$8,入力!$A$9:$H$23,8,FALSE))), "平成 年 月 日", "平成"&VLOOKUP($G$8,入力!$A$9:$H$23,4,FALSE)&"年"&VLOOKUP($G$8,入力!$A$9:$H$23,6,FALSE)&"月"&VLOOKUP($G$8,入力!$A$9:$H$23,8,FALSE)&"日") どこからおかしいのか調べるために文章を削っていったのですが &の2つ目以降を入れると#VALUE!が出るようです。 =VLOOKUP($G$8,入力!$A$9:$H$23,4,FALSE)&VLOOKUP($G$8,入力!$A$9:$H$23,6,FALSE)&VLOOKUP($G$8,入力!$A$9:$H$23,8,FALSE) どのように修正すれば良いでしょうか?
>>604 初心者が無理に式をまとめようとするな
入れ子で長い式を書かずに、作業セル使って式を分解しろ
=関数A(関数B(関数C(A1)))
では、エラーが出てもどの関数部分に問題があるのか解らないが
=関数C(A1)
=関数B(A2)
=関数A(A3)
とすれば、どこでエラーが出てるか、どこを直すべきか一目瞭然
>>604 条件が不成立の場合は「否」じゃなくて「偽」という
VLOOKUPでFALSEを指定した時、一致する物がなかったらエラーになる
つまり一致する物があってもなくてもISBLANKの結果は常に偽で、G8に何が入っていようとこのIFは常に偽になる
エラーの時も偽になるんだから、エラー値に対して&演算子は使えないから、この数式はエラーになる
つまり根本的にロジックがおかしい
>>605 この程度のミスが一目で見抜けないような初心者が無理にレスしようとするな
>>604 その式は、一覧表のA列にG8と一致する物が無い時にエラーになる
そうでなければ正常に結果が出てる
ISERRORでエラーの判定を追加すればいいと思うよ
>>603 1行目は項目名、2行目以降がデータとして
E2:=IF(D2="","",MAX(OFFSET(B$1,MATCH(D2,A:A,0)-1,,COUNTIF(A:A,D2))))
ピボットテーブルで求めるなら
行ラベル:「日付」
Z値:「出荷量」 (値フィールドの集計方法:最大値)
610 :
609 :2014/06/10(火) 20:38:55.22
>>603 求めるのは「コード」だったので訂正。
1行目が項目名、データ入力範囲が2〜100行以内であると仮定して、
E2:=IF(D2="","",LOOKUP(1,0/((A$2:A$100=D2)*(B$2:B$100=MAX((A$2:A$100=D2)*B$2:B$100))),C$2:C$100))
・ピボットテーブル
行ラベル:「日付」「コード」
Σ値:「出荷量」 (値フィールドの集計:最大値)
「コード」>値フィルタ>トップテンフィルタ>"最大値/出荷量"の上位1位
Excel2010でリボンの桁区切りをクリックすると小数点以下が2桁くらい表示されるようになるんだけど、前からこんな仕様だったっけ? 小数点以下の表示なしで桁区切りだけしてくれるように変更できない?
>>611 自分のPC(Win7pro 64bit Excel2010 バージョン14.0.7116.5000 32bit)だと
標準書式だろうが、数値で小数点以下の桁数を指定していようが
小数なしの表示になりますよ。
613 :
528 :2014/06/11(水) 07:56:23.74
VBAでがんばったけど データ数多くてオーバーフローしちゃったよ\(^o^)/ 1048576以上使いたいときはもうアクセス使うしかないのかな?
いや、いくらでも他の方法はあるけど、アクセス使うのが一番簡単だと思う
615 :
名無しさん@そうだ選挙にいこう :2014/06/11(水) 09:15:52.00
>>613 とりあえず名前か一行目に
>>516 ,
>>519 ,...
と全部のレス番付けた方がいい
しかしあれだな、商品の数にもよるが100万行超えるような処理は途方もなさすぎる
もうちょっと何かしらの方法で商品を切り捨てたほうがいい、というか切り捨てないと永久に終わらんと思う
windows8.1 excel2010 同じシート内で たとえば、B列全部をA列へ コピペ、ベースとしようとすると 動作を停止しましたとか出て excelが再起動する。 だから、作業できない。 重たいみたい。
>>617 列全体のコピペ・カトペはしょっちゅうやってるけど、それで止まったことはないなあ
よっぽどたくさん数式とか入ってるのか
>>618 行にしたら、15000列ぐらい。。。
サイトつくりのために、キーワードを書きだしたら
そうなってしまった。
たぶん、メモリが限界を超えているのかな?
ハードディスクの空きは十分あるけど。
行にしたら、15000列ぐらい。。。 ↓ 行にしたら、15000行ぐらい。。。
行が3000くらいでも落ちるな...
622 :
617 :2014/06/11(水) 15:56:28.77
いま、いろいろ調べてみているけど そうも、そのファイルだけが破損しているような気がする。。。
623 :
617 :2014/06/11(水) 15:57:38.73
別のファイルでは、行が多くても、エラーは起こらないのに。。。 やはり、そのファイルだけが破損しているのか?
624 :
名無しさん@そうだ選挙にいこう :2014/06/11(水) 19:27:07.97
>>624 作り直した。うまくいったぽい?たぶん。
>>614-615 自己解決!
>>533 に教えてもらったやり方を
2次元で集計しながら作ったら100万行なんていらんかったよ!
でもまぁ今後もっと多くのデータを扱う可能性もあるから
がんばってアクセスも勉強してみる!
ありがとうな!!
検索してみたのですが、まだわからないので教えてください。 EXCEL2003でセルの文字列でuser_pref("mail.identity.id10.useremail"という文字列から数字のみを抽出して数字に変換する方法を教えてください。
>>628 情報ありがとです。確かに10と出るのですが数字の部分は2桁〜3桁がランダムである状態で
A1には10と出ているのですが、式ではなく10という数字を抽出したいのです。方法ありますでしょうか?
抽出ってなに? =SUBSTITUTE(SUBSTITUTE(A1,"user_pref(""mail.identity.id",""),".useremail""","")
>>629 セルに「数字の部分を取り出す数式」じゃなくて「数字そのもの」が入ってほしいならVBA使わないと無理だけど、なんでそんなことしたいのさ
別に数式でも困ることはあんまりないと思うんだけど
とりあえず「取り出す数式」の方で回答
=IFERROR(MID(A1,28,3)*1,IFERROR(MID(A1,28,2)*1,MID(A1,28,1)*1))
>>631-632 情報ありがとです。
=MID(A1,MATCH(0,INDEX(ISERR(-MID(A1&0,COLUMN(1:1),1))+0,0),),COUNT(INDEX(-MID(A1,COLUMN(1:1),1),0)))
今自分でもずっと調べてて、これを入れたら式は何とか出来ました。結果も出たのですが、そのままやっていくつかあるものを並び替えたら、うまくいかなかったため数字を出力して
やったらうまくいくのではないかと思いまして・・・
634 :
633 :2014/06/12(木) 13:43:23.46
並び替えた時に 1 2 10 100 3 5 とあった場合 1 10 100 2 3 5 となんてしまうのです・・・?セルは全て書式も数値にしてるのですが、今やっても並び替えがうまく出来ませんでした。
>>635 ありがとです。全体をintとはセルを数値にするのですか?or +0 をやってセルを数値にしたのですが
やはりうまく並び変わりません。
>>634 の状態です。
637 :
名無しさん@そうだ選挙にいこう :2014/06/12(木) 14:25:06.16
質問です。 【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 Excelに他の文書ファイルからコピー&ペーストすると、規定値では「元の書式を保持」になります。 そこで、規定値を「貼り付け先の書式に合わせる」にすることはできるのでしょうか? コピペする度にオプションから「貼り付け先の書式に合わせる」を選択するのはとても面倒です。 よろしくお願いします。
638 :
636 :2014/06/12(木) 14:51:36.49
全体にint()を被せて今やったのですが、やはり同じで
>>634 のような形で並び変わります。先ほど、テキストファイルに落としてやった所、うまく出来ました。
テキストに落としてみた所、スペースが入っていた関係なのでしょうか?まだよく分かっていません・・・?スペース削除できれば何とかできるのでしょうか?
お騒がせしました。ありがとです。
641 :
636 :2014/06/12(木) 16:20:19.97
>>639 はい。試しましたが、数式で認識できないテキストが含まれていますとでてできませんでした。
一応
>>633 で数字は出力する式は出来たのですが、
>>634 の状態です。
>>640 これも試したのですが、
>>634 の状態です。そして
>>640 を被せたものに=SUBSTITUTE(SUBSTITUTEint(trim(式)" ","")," ","")で
全てのスペースを削除してもおなじで、テキストファイルに移してから再度エクセルにもどしてからしか出来ませんでした。未だに原因は分かってません・・・
皆さんいろいろ情報ありがとでした。
642 :
名無しさん@そうだ選挙にいこう :2014/06/12(木) 18:59:10.21
>641 ふりがなが振られているとか phonetic()で確認してみて
>>641 俺が原因を調べてやるから、その設定ファイルみたいなのが入ったExcelのブックをアップロードしてくれ
646 :
611 :2014/06/13(金) 13:44:35.38
>>612 そうです、それが本来あるべき姿なのです。
だからこそ私は知りたい、解決方法を。
647 :
名無しさん@そうだ選挙にいこう :2014/06/13(金) 14:12:55.38
ユーザー定義にでもなってるんじゃない
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 無理 【4 VBAでの回答の可否】 否 ある列の値が、大きい方からいくつか(上位5-6個ぐらい)であるような行を、 抜き出して、その値でソートされた別の表を作るやり方。 教えて。
スレチだったらすみません。 お客さんに提出する=印刷する=体裁を整える必要のあるExcel資料なんですが、やはり1列のセル幅を一定にし、必要に応じてセルを結合するのが一般的ですかね? 結合すると編集しにくいし関数もおかしくなるのでセル幅の調整で対応出来たらいいなと思うんですが…
650 :
名無しさん@そうだ選挙にいこう :2014/06/13(金) 22:47:27.30
>>648 一位の列をrank()で抜き出してindex()match()でデータを引っ張る
>>649 なんでもいいと思う
俺はセルの結合は基本、使わない。一時的にしか使わない資料ならバンバン使うけど
見難いって言われてから変えればいいんじゃない
>>649 データ用のシートと観覧用のシートを別にすればいいんじゃね?
見栄え良く仕上げるのにexcelを使うなんて...
653 :
名無しさん@そうだ選挙にいこう :2014/06/14(土) 08:54:54.42
>>652 君は何を使うのかな?恥ずかしがらずに答えてみよう!
>>649 です
セルの結合、やっぱり使いたくないし、使わずに済む方法ありますよね
今の職場の人達がみんな体裁整えるためにセル結合する派でやりにくくて…
それが一般的なのかなと思い質問させてもらいました
波風立てなくないし、他の人に合わせるしかなさそうですけど…
ありがとうございました
>>653 652じゃないが、お客さんに使って貰うものだとAccessでフォーム作ることが多いな
印刷に拘る場合は、印刷結果をHTMLで吐き出して、それを内部的に読み込んで印刷する場合もある
あとはExcel使う場合でも、入力=ユーザーフォーム、データ=非表示のワークシート、結果=ワークシート
ってすれば、結果シートではセルの結合を多用しても弊害が出ないし、お手軽だ
>>655 ありがとうございます
個人的にはAccessもユーザフォームを使用する方法も目から鱗ですが、職場の人達に受け入れられるとは思え難く…
何分OSはXP、Officeは2003、PCよりも紙と電卓の方が偉いという価値観の人達なのでw
>>655 印刷するって、PCで見るのダルいから会議用に紙に出力するって意味じゃね?
なんか印刷所で印刷して製本とか、そんな高貴なもんでは無い予感
>>656 ウチも「盗まれて困るデータ無いから!」の一言で、全XPの残留が決まったよ…
そういう問題じゃないんだけどね
踏み台とか色々あるしさ
ヒント:印刷に拘る場合は
印刷するのは、お客さんに提出するためです 業界の慣習として、成果物を提出する時はExcelやCADなどの形式ではなく、それらを一旦PDFなどのドキュメント形式にしてから提出します なので見た目の美しさが何より重要みたいです なのでセル結合しない方がいいんじゃ?と言ったところ「お前の為の資料じゃなくてお客さんのための資料なんだぞ頭おかしいのか」罵倒されましたw 作業者の負担を減らして質を上げるの大事だと思うんですけどねー、お客さんのためにも 今ググって初めて知ったんですけど、この問題ってExcel方眼紙って呼ばれてるんですね 今までこんな形式見たこと無かったので知りませんでした
>>659 昔大学で使ってたファイルはまさに方眼紙のように「A,B,C」の方も詰めて正方形になったものを使うのがデフォだった
で、やたら結合されまくったセルが目立った
Excel方眼紙の予測検索が「死ね」「撲滅」 こんなんメリットよりデメリットの方がデカイと思うんだけどなぁ
方眼紙としてだけ使うならいいんじゃねーの? そこにexcel本来の機能を使おうとすると激しく激しく使いずらいってだけで。 個人的には、体裁を気にする資料にexcel使うとか有りえないけど。 画面に見えてるママ印刷できない、拡大・縮小で見え方が変わる、オートシェイプの位置がずれる… 印刷前提ならwordのがマシ
ワードに差込印刷より、エクセルだけで完結させる方が楽。 罫線はエクセルの勝ち。 100パーセントで固定して、Windowsの画面表示倍率も合わせておけば、印刷のとき端末が違っても問題ない。 図を入れるセルもサイズを大きくしなければ、ズレも大したことない。
>>663 それ全部wordのほうが綺麗にできるし。
もいかしてwordだと図のサイズ固定ができないと思い込んでる?w
それぞれ用途にあったアプリケーションを使えばいいってだけ。
>>664 実はワードはあまり使いたくない派。
一太郎に慣れすぎて、かなり不自由なワープロソフトだと思ってる。
仕事上、仕方なく使うだけ。
罫線表のフレキシブルさは、ワードよりエクセルでしょ?
使いたくないじゃなくて 使いこなせない、だろ
667 :
名無しさん@そうだ選挙にいこう :2014/06/14(土) 19:13:30.70
何回か転職したけど、どこもワードはほとんど使っていない。 ただ、使う企業は極端に使う。専用システムのある大企業はエクセルすらほとんど使わない。
>>666 確かに、使いこなせない。
でも、例えばタックシールにしても、
エクセルの方がセル高や幅の微調整が出来るから、慣れれば自在に合わせられる。
項目が多いのを扱うときは、
基礎表(入力用)、演算、出力(印刷)
の3つに分けて、
基礎表の一連番号からvlookupで演算表から読み出し。
連続印刷は、マクロ。
あと、基礎表(入力用)の入力開始セル選択をマクロで自動化
がパターン化してる。
ユーザーフォームは使わず、
横一覧の表に入力の方が、データの整合性も一目で分かるから好きだな。
その点が>655 と違うね。
669 :
名無しさん@そうだ選挙にいこう :2014/06/14(土) 19:47:37.67
>>668 完全に同意
エクセルは印刷とプレビューのズレがなくなれば最強なのにな
>>668 Excel は帳票の上と下で違うフォーマットの表があったりするとすごく面倒だからなぁ
>>670 そう?
書式にしても
データにしても、
一意の読み出しのためのコードを作って、
上下で別の括りの演算表領域を作ってやれば良い。
書式は、かなりの部分は条件付き書式で対応可。
>>668 ?wordはセル高や幅の微調整ができない
○wordでのセル高や幅の微調整の仕方を知らない
言葉は正しく使おうな。
>>671 こう言うやつが面倒だって話
┌────┐
│ │
└────┘
┌─────┐
│ │
└─────┘
>>673 何で出来ないって思っちゃうのかすごく不思議
表のプロパティとか見たことないの?
>>672 >wordはセル高や幅の微調整ができない
どこに書いてある?
レス番教えて。
>>673 あんな印刷に特化したソフトでなぜできないと思い込むんだ?
むしろそっちのほうが不思議
罫線の種類もエクセルより豊富
>>675 >>668 の3行目に
>エクセルの方がセル高や幅の微調整が出来るから、
って書いてあるよー
wordもexcelも両方使いこなせるにこしたことないね。 職場ではたいがい入ってるし。 accessは小さい会社だとないからね。
>>677 >>668 にはエクセルの方が細かく調整出来るということで、
wordで出来ることを否定してないよね。
>>676 ワードでの、微調整のやり方、教えてくださいm(__)m
>>674 そのセルに値を入れるの、
A列にROW() 1行目にcolumn()
入れとけば、簡単に出来るよ?
682 :
名無しさん@そうだ選挙にいこう :2014/06/14(土) 22:43:55.97
まぁwordでもインデント、差し込み印刷ぐらい知っておけば大体どうにかなる あと最終手段のテキストボックスが最強。これさえ知ってれば何とでもできるわ 知らないと余計なとこで時間とられてストレス食う
683 :
名無しさん@そうだ選挙にいこう :2014/06/14(土) 22:44:24.28
ストレス食うってなんだ まぁいいや
>>680 表のプロパティって書いてあるでしょ、あれ見てわからないの?
>>680 wordスレもあるし。
excelにこだわらず両方使いこなせる方が色々捗るよ。
>>679 そうか?
まるで朝鮮人のような噛み付き方だなw
>>681 値を入れる話なんてしてないし
> そのセルに値を入れるの、
> A列にROW() 1行目にcolumn()
> 入れとけば、簡単に出来るよ?
意味不明だし
この手のずれた表はセル結合しないとダメでしょ。
┏━━━━┓
┃ │ ┃
┗━━━━┛
│ │ │
│ ┏━━━━━┓
│ ┃ │ ┃
│ ┗━━━━━┛
>>687 結合するしないは、セルに入れるのが数値か文字か、表示形式にもよる。
逆に、そんな表をワードで作る方が骨が折れそう
>>688 > 結合するしないは、セルに入れるのが数値か文字か、表示形式にもよる。
意味わからん。
セルいっぱいまで表示しようとしたら結合するか選択範囲で中央表示するしかないでしょ。
で、問題は上の表をちょっと大きくしようとしたらせっかく調整した下の表まででかくなっちゃうんだよな。
> 逆に、そんな表をワードで作る方が骨が折れそう
ワードは各々の表が独立してるから
>>689 >638の内容は
文字列なら、折り返さなければ右側のセルにはみ出して表示出来る。
数値ならセルをはみ出せない。
1セル内で縮小表示で済ませることも出来る。
とか、当たり前に想像出来ないか?
>>690 > 文字列なら、折り返さなければ右側のセルにはみ出して表示出来る。
これはいいとして、それ以外は
> セルいっぱいまで表示しようとしたら
って言う条件読めないアホですってこと? (w
そもそも、
>>674 の問題はそこじゃないし。
>*691 勝手に条件を後付けして、なに言ってやがる
>674 >687 どこに「セルいっぱい」と書いてあるか?
>>689 で言い出しただけじゃねーか。
それで他人をアホ呼ばわりとは、最低な奴だな。
問題提起したいなら、最初から明確に書いとけよ。
クレーマーかお前は。
そのやり取り、どーーーでもいいわ
>>692 >
>>689 で言い出しただけじゃねーか。
なら、
>>690 で書けよ...
そもそも問題提起はそっちじゃないことぐらいわかりそうなもんなんだが...
不毛なやりとりに参加するつもりは無いが、 もともとは体裁が大事な表の話題だろ。 縮小して1セル表示はフォントの大きさかわるし、 左にはみだしたら、事前に想定した結果が得られない。 本気でやるなら文字数制限するとか、マクロでなんとかする必要がある。 それでもプロポーショナルフォントなんか使ってると、どういうコード書けばいいか見当もつかん。
>>663 どうでもいいけどExcelってcm単位で指定しても印刷するとサイズ変わるんだよね…
俺の印刷の仕方がおかしいのかな??
何度も印刷して、Excel側の単位は無視して出力サイズにあわせて作らないとダメなところから、印刷すること前提ではないアプリケーションなんだなぁとは思ってた。
>>696 > それでもプロポーショナルフォントなんか使ってると、どういうコード書けばいいか見当もつかん。
VBA だから Win32API の DrawText とかでやることはできるけど、そこまでするなら Cristal Reports を入れるとか、そこてのものを作った方が楽
>>697 確かに、図形でもcm、mm単位で指定出来るのに、印刷したら微妙にサイズが変わるね。
既存の紙媒体の様式に合わせて数字や文字列を印刷するときは、何回か印刷と位置合わせをしないといけない。
複雑な様式だと、スキャナーで取り込んで、
100%サイズでエクセルに貼り付けて、
図形で四角を描いて、そのあとでセルを四角に合わせて、式入れて、で位置合わせ・・と、かなり手間はかかる。
でも計算を伴うもので、何回も使う様式なら、1回合わせとけば後は手書きより楽だし格段に効率が上がるからね。
>>697 結局、きれいな印刷を行うには
エクセルで文書を作成し、三四郎で整えて印刷、
提出先によっては更にPDFにすることになる。
まぁ罫線に拘るのは日本人くらいか。
>>700 >まぁ罫線に拘るのは日本人くらいか。
そうか?
702 :
名無しさん@そうだ選挙にいこう :2014/06/15(日) 18:56:48.66
>>701 ガイジンから見ると日本人は異様に罫線大好き民族らしい
ネットでの知識なんでアレだけど、まぁ確かに多いっちゃ多いような気もする
703 :
名無しさん@そうだ選挙にいこう :2014/06/15(日) 19:03:23.75
>>697 最初から三四郎で作る方が速い。
エクセルは見栄えが悪い。
おおざっぱに出来るか、ぐちゃぐちゃになる。
相談所じゃなくて雑談所になってますね
質問したい奴は流れをぶった切って質問すればいい 質問がないときに雑談してて何が悪い! ExcelアイコンがなぜEじゃなくXなのかについて、もっと考えたほうがいいぞ?
706 :
名無しさん@そうだ選挙にいこう :2014/06/15(日) 19:52:08.82
>>705 質問しようと思ったがぐぐったら分かった
>>703 三四郎は、一太郎8くらいの頃だったか、使ってて気に入ってたんだけど、マクロの動作が遅くて使うのをやめた。
確かにかゆいところに手が届く感じだったなー
>>705 うちのエクセルのアイコンは真っ白だけどな
アイコンの修復方法をネットで探したけど、どれを試しても効果なかったし
印刷プレビューで確認したらOKなのに 印刷したら、変なとこで改行されてセルの外にはみ出て印刷されてない・・・ 一番肝心な数値なのに・・・ あと既定で設定しているプリンタドライバが違うと印刷がずれるのも何とかならんの?
711 :
名無しさん@そうだ選挙にいこう :2014/06/15(日) 20:54:46.75
>>710 プリンタドライバはエクセルに限らず、印刷のズレに直結する
プリンタドライバってのはプリンタにデータを送るプログラムだからな
pdfが評価されているのはプリンタドライバに左右されにくいから、というのも合わせて覚えておくと良い
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 否 if関数やvlook関数を使わずに (別のセルにデーターベースを作成せずに) A1セルが0のときは"○○" A1セルが1のときは"??" A1セルが…のときは"△△" のようにできる関数はありませんか? if関数の場合は、数が増えると場合分けが増えすぎて見た目ややこしいこと (修正の際にミスしやすい) vlook関数は他のところにデータベースを作らなければいけないので コピーするときに一緒にデーターベースもコピーしなければいけなくて ミスを誘発しやすいこと choose関数は1からの連番しかダメなこと から 使うのを避けたいのです
713 :
名無しさん@そうだ選挙にいこう :2014/06/15(日) 22:45:26.14
714 :
名無しさん@そうだ選挙にいこう :2014/06/15(日) 22:45:54.51
あ、ごめん最後まで読んでなかった
715 :
名無しさん@そうだ選挙にいこう :2014/06/15(日) 23:01:03.66
>>712 と思ったけどやっぱりchoose
choose(a1+1,...)
のようにすれば0開始でも対応できる
ifでネストが増えすぎるのは未熟、もしくは作業列を使うべき。
vlookupなら単純に絶対参照にすれば良いだけの話
>>712 他セルを参照しないって条件ならそのセルで完結しないといけない。
素直にifかchoose使っとけ、な?
>>710 Excelで印刷が思ったとおりに行かないのは、なんともならん
経験を積んで無理パターンを覚えて回避してくしかない
719 :
名無しさん@そうだ選挙にいこう :2014/06/16(月) 00:04:20.95
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 否 エクセルの関数内で配列を使う方法を教えて下さい =MATCH(1,{1;5},0) みたいな漢字だったと思います。配列定数ではありません。
>>715 chooseは連番しかダメなのがダメです。
122→葛飾区
123→江戸川区
201→八王子市
のようなデータだと、無いのが分かっているのに
124から200まで空白データが必要になってしまいます。
ifでネストが増えすぎるのは未熟というのは、その通りだと思うので
使いたくありません。
vlookupしかないのですね…
複雑になるから使いたくないのですが…
ありがとうございました
>>720 単純なCHOOSEがだめな理由も最初からちゃんと書けよ
ちなみにCHOOSEにはこんな使い方もあるんだぜ
=CHOOSE(FIND(A1," 122,123,201")/4,"葛飾区","江戸川区","八王子市")
ただしCHOOSEの制限で変換できるデータは254個まで
もっと大量に変換したい場合は、FINDとMIDを使う方法がある
数式の長さの制限が約8000文字だから、対応できる項目数は4文字×980個ぐらいまで、たぶん
=TRIM(MID("葛飾区 江戸川区八王子市",FIND(A1,"122,123,201"),4))
ただし、こんな長い式をいくつも入れたらブックが重くなるので覚悟するように
素直にVLOOKUPかマクロを使った方がいいと思うけどなあ
722 :
721 :2014/06/16(月) 04:05:08.53
おっと、122の前にはスペースが3個入ってたんだけど、2ちゃんの仕様で数式がおかしくなった 捨てる文字は別に何でもいいので =CHOOSE(FIND(A1,"***122,123,201")/4,"葛飾区","江戸川区","八王子市") とでもしておくか あとは必要に応じてエラー対策や数字の桁揃え処理を追加すればええ
>>721 それが欲しかった!
find
すごいです
ありがとうございました
初心者って、作業セルやデータベース作るのを嫌って 無駄に長い数式だけで完結させる方法が好きな奴が多いよね
>>720 vlookupって、初めて使った時はすごいめんどそうだって思ったけど、使ってるとかなり便利だと思うよ。
配列数式とかもっと使えばいいのに。
>>725 VLOOKUPは重いから、INDEX(MATCH())のほうがいい
シートのデータ数が増えた時、重過ぎて後々泣く事になる
俺はそれで泣いたクチだ
>>723 FINDは処理が遅いからSEARCHにしとけ
>>726 こういう情報ってあまり出回らないけど何処で仕入れてくるの?
確かにVlookupまみれのファイルを開くと、データ1コ差し替えると3分くらい再計算しやがるな
やっぱAverageifとかも重たいの?
729 :
名無しさん@そうだ選挙にいこう :2014/06/16(月) 18:10:20.52
このスレに常駐してると死ぬほど知識が増えるよ Averageifは範囲次第だと思う
今はEXCELから入った人が多いからVLOOKUPかもしれないけど、 データ数より項目が多い横長のテーブルならともかく、 たいていはデータ数の方が多いから ただのLOOKUPの方が式が簡単だと思うけどね。 MULTIPLANから使っているとLOOKUPにしちゃうな。
昇順に並んでないといけないので使いにくい
INDEX(MATCH())はメンテナンス性が糞だと思ったので重くてもいいからVLOOKUP使う
一致する値がないと最大値を返してくるからおっかなくてつかえないというのもある
VLOOKUPならエラー返してくれるから安心
vlookupで入力の度に待つのが嫌なら自動計算切ればいいのに
>>730 スピードアップのヒントとかさ…
そもそもEXCEL2010なんて激重なカスソスト作ったM$が悪いとしか言えないわな
LOOとかAOOとかのCalcならどんなに大量のVLOOKUP使っても重くならないのにな
>>736 VBA使えない場合は、自動計算の設定ってExcel全体に影響しちゃうから弊害が大きくないか?
VBA使えば、EnableCalculationとイベントやボタンでの再計算で弊害無く無駄な再計算を無くせるけど
739 :
名無しさん@そうだ選挙にいこう :2014/06/17(火) 08:35:46.07
>>736 それしてる人みたことあるわ
10以上シート作って一つのシートだけ再計算(shift+f9)
普段の操作がしづらい。入力を間違えてるのかと思う。
その人曰く「慣れてるから平気」だそうで…
慣れてる人には無問題 むしろなれると楽よ
普通に数式リボンにあるじゃん。リボン邪魔派?
数式を使うシートとデータを入れるシートを別にして 数式を使うシートの自動計算を無効にする そして、データを入れるシートのWorksheet_Changeイベントでフラグを立て Worksheet_Deactivateイベントでフラグが立ってれば計算を実行してフラグを伏せる
>>742 クイックアクセスツールバーに置くと、今の状態が一目でわかるから。
リボンは否定しないけど、あまり使いたくない派です
745 :
名無しさん@そうだ選挙にいこう :2014/06/18(水) 16:15:30.50
Excelで置換とかどうした良いですか?
746 :
名無しさん@そうだ選挙にいこう :2014/06/18(水) 16:29:18.07
747 :
名無しさん@そうだ選挙にいこう :2014/06/18(水) 16:54:09.98
749 :
745 :2014/06/18(水) 19:46:57.82
なに嫁を痴漢する? いつもしてるわ
エクセル号での痴漢は簡単、いやいや置換w
リボン邪魔だね。あんなに広く占められては、画面が狭くなってしまう。 パソコン替えて画面が1600x1200から1920x1080になって益々感じるようになった。 旧バージョン時代もツールバーは出してなかったから、折り畳んで使っているよ。 使用頻度多い操作はキーボードでの手順を覚えているし。
752 :
名無しさん@そうだ選挙にいこう :2014/06/18(水) 21:33:25.51
なんでそんな変な合わせ方するんだよ 同じ向きで並べりゃいいじゃん それに今は1台で4000x2000という液晶もあるんだし
754 :
名無しさん@そうだ選挙にいこう :2014/06/18(水) 22:45:02.55
755 :
名無しさん@そうだ選挙にいこう :2014/06/18(水) 23:03:45.23
>>753 割と気に入っててな。年季的な問題もあるが、そもそも不便を感じてない。消費電力もまぁまぁだ。I-ODATAのほうはそろそろヤバイがな。
そしてコスパの問題もあるだろ。このiiyama(XB2374HDS)もI-O DATAも20k以内で購入したはずだ。
その4kx2kっていくらぐらいなんだ?
757 :
名無しさん@そうだ選挙にいこう :2014/06/19(木) 00:33:05.48
>>756 う〜ん、もうちょい、ってそれはいいか
4kx2k、ぐらいあればリボンぐらい余裕で気にならないんじゃないか。買えばいいんじゃないか
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 NO 下のようなデータがあるとして、 A B C 1|6/1 | 6/2 | 6/3 | 2|鈴木|伊藤|田中| 3| A|鈴木|吉田| 4| 2| A| C| 5|田中| 1| 1| 6| B| B|鈴木| 7| 1| 2| A| 8|吉田|田中| 1| 上から日付→人物→商品(A〜C)→売上(数値)を表しています。 売上が0だった商品は項目ごと消えています。 このデータから、関数だけ使って、各日付の鈴木の売上を商品ごとにまとめたいです。 「鈴木」の項目が無い日もあります。 lookupやoffset関数がうまく使えなくて難儀しています。 一発で目標となる表を作れなくても構いません。 (編集しやすいデータに1度移し変えるというやり方で可。) お力添え願います。
>>758 無理
データの並べ方を変えるかVBA可にするか選べ
そもそも、なんでそんな幼稚でバカみたいなデータの作り方してるんだか > 編集しやすいデータに1度移し変えるというやり方で可 なら、そこまで自分でやっておけよ
>759,760 758じゃないですが、どのような形式のテーブルにしたら集計しやすくなるのか教えてください
普通に正規化すれば良いだけじゃね?
次にお前は正規化って何ですかと質問する!
765 :
764 :2014/06/19(木) 22:40:12.80
>>758 のサンプルデータを正規化するとこうなる
A | B | C | D
6月1日 | 鈴木 | A | 2
6月1日 | 田中 | B | 1
6月1日 | 吉田 | |
6月2日 | 伊藤 | |
6月2日 | 鈴木 | A | 1
6月2日 | 鈴木 | B | 2
6月2日 | 田中 | |
6月3日 | 田中 | |
6月3日 | 吉田 | C | 1
6月3日 | 鈴木 | A | 1
A列=日付、B列=名前、C列=品名、D列=個数
このように列ごとに役割が決まっているのが「正規化された表」
なんて親切な人なんだw
うちの職場でも
>>758 みたいな表を作る奴ばっかり。
769 :
761 :2014/06/19(木) 23:15:21.50
教えていただいた方々 ありがとうございます。 自分も含めて、後で集計することを考えないで表を作るやつが多い。 大変参考になりました。
770 :
758 :2014/06/20(金) 02:23:39.00
たくさんのレスありがとうございます。 どうやら自分にはexcel以前に、正規化の考えができていなかったようなので、 1度その考えでデータを整理する方法を探ってみます。 ありがとうございました。
【1 OSの種類 .】 Windows8.1 【2 Excelのバージョン 】 Excel2013 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 Excel2000(標準?)と同じカラーパレットを使いたいのですが ページレイアウト→配色 で選べるものの中にはないようで 2007-2010というのがあるが少し違うようで
横長のモニタが主流だと思うのだが、なんでリボンが上についてるのか不思議でしょうがない。 左右に配置すればもっとスッキリすると思うのだがというか、スクロール量が少なくて済むのだが。 みんなけっこう、横長にデータを配置する感じ??
データが縦長か横長かは、配置の問題ではなく必然で決まる 扱いやすさを無視した独自形式ではなく、ちょっと前に出た正規化を前提に考えればね そして、横のデータ(フィールド)は極力スクロール無しで見れるようにすべきで そのためなら、縦のデータ(レコード)は、件数次第でスクロールが必要になるのもやむなし その上でスクロール量を減らすには、並べ替え、フィルタ、検索、ジャンプ、アウトラインなどの機能を駆使すべき
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 番号を自動で割り振るマクロを組もうとしています。 ページとしては「顧客情報入力シート」と「顧客情報シート」があり、 「入力シート」で性別や氏名などを入力し、「登録」ボタンを押すと「顧客情報シート」に蓄積されるようにマクロを組みました。 その際、自動的に番号を割り振れないか、と考えています。 例えば「登録年・性別・番号」として、「2014年登録、男、1人目」だとしたら「20141001」みたいに(男なら1,女なら2) 「番号発行ボタン」を「入力シート」に設置できればと思っています。 その際、パターンごとに3通りの挙動をして欲しいです。 ・登録年度、性別が新しい場合は通番を1から発行する(例えば2014年登録の男性1人目の場合なら20141001) ・登録年度、性別が同じ場合は順に数字を発行する(上記の場合の2人目なら20141002) ・氏名と生年月日が一緒なら「既に登録されていますが、重複していませんか」とエラーを吐く。 よろしくお願いいたします。
775 :
名無しさん@そうだ選挙にいこう :2014/06/20(金) 18:41:55.85
>>774 とりあえず作ってみてわからないところは聞きに来ればいいんじゃないか
自動採番する番号のルールがわからない 例えば初回訪問日とか契約日とか また地域・職種などキーがたくさんありそうなので、 印刷などを考慮すればアイウエオ順とかの連番にするコードで対応できないかと
777 :
名無しさん@そうだ選挙にいこう :2014/06/20(金) 20:12:17.60
>>774 各シートの構成も不明なので 取り合えずヒントのみを
(もちろん これ以外にも やり方は ある)
既登録かどうかは
顧客情報シートの名前列を Find検索してヒットしたら
その行の 生年月日 を比較していけばいいんじゃね
(先に 生年月日で Findしてもいいけど)
※ただ上手く作らんと "山本太郎"と"山本 太郎" は別人判定しかねない
新規発行する時の顧客番号は
顧客情報シートの 顧客番号 列を Findで逆方向検索
(検索条件 What:="20141*", 逆方向検索:SearchDirection:=xlPrevious)
とかしてやれば 結果が
・Nothing なら その年度・性別は新規( 20141001 とできる)
・該当すれば その顧客番号を +1してやれぱいい
当然
顧客情報シートの 年度&性別 でみた時に
顧客番号列は 昇順 になっている事が必要
(正確には 年度&性別でみた時に最終登録番号が一番下である必要がある)
>>774 番号発行ごとにシート検索とか面倒なので、
俺なら年度末と性別をキーにして、今時点の通し番号をcustompropertyに入れとく
氏名、誕生日の一致は、非表示列に式で"氏名yyyymmdd"を持っとく
custompropertyの健全性?を確保できるならそれでいいんじゃないか そうでもないなら愚直に番号検索したほうがいい エクセルで管理する程度の会員数なら一瞬で検索できるだろうし
781 :
777 :2014/06/20(金) 22:02:57.44
>>779 それを
非表示の"顧客番号採番管理シート"を作ってもいいかとは後で思った(^^
それが普通かも?
そこまで手をかけるくらいなら最初からDB使えよって話になるんじゃね
784 :
名無しさん@そうだ選挙にいこう :2014/06/21(土) 00:53:50.14
職場でセルの色塗りで 赤や青はいいけど こういうときは水色やピンクと指定したときに 微妙に違う色の水色やピンクをみんなバラバラで選んでるので困っています。 いい解決方法はありますか? とりあえず過去にバラバラに塗った色を東夷うする方法、 こんごみんなが統一した色を使う方法、 2つの方法を教えてください。
785 :
名無しさん@そうだ選挙にいこう :2014/06/21(土) 00:54:20.90
x 東夷うする o 統一する
条件付き書式じゃあかんのか
>>784 色を統一するには工夫が必要
たとえば、カラーパレットの画面をキャプチャーして印刷して番号を書きこんでおく
それをみんなに配って、「何番で塗って」と指定する
すでに塗ったやつを修正するのはかなり難しい
ある程度はVBAで可能だけど最終的には手作業で仕上げるしかない
>>784 ・別シートや空いてるスペースにカラーパレット作り、手動かVBAで書式のみコピー
・VBAでWorksheet_Change使って強制的に塗り替える
色に意味を 持たせた悲劇だわな 特にみんなで共通使用するものだったりしたら 各人 色調の感性が違うから この問題に おちいりやすい
790 :
771 :2014/06/21(土) 04:25:20.26
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel 2010 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 エクセル(ワードでもそうだと思いますが)でオートシェイプを利用した 簡単なキャラクターって作ることはできませんでしょうか? センス的なものもありますが...自分ではできませんでした。 勉強小僧・・・をシンプルにしたものがあればと思っています。 (解説書でここはポイントみたいなキャラクターにしたい) 御教授の程、よろしくお願いいたします。
>>791 わざわざオートシェイプで作らんでも
著作権フリーなキャラクター画像を拾ってきて .背景色を透明にしてExcelへ取りこめば?
ぐぐれば一杯転がってると思うぞ
自分も とあるExcelファイルでそうしてる
あとパワーポイントが入ってれば標準のクリップアートから使えそうなの探してくるか
デザイナーに発注するってのもありだと思うぞ 大きなデザイン会社に発注したら高く付くけど フリーでやってる個人に依頼すれば、1つ数百円くらいから作ってくれる場合もある
796 :
名無しさん@そうだ選挙にいこう :2014/06/21(土) 19:28:16.67
>>791 因みに背景を透過するフリーソフトならGIMPがお奨め
(スレ違いですが)
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 エクセルで一括で複数読み込んだ画像を □□ □□ □□ □□ □□ とか □□□ □□□ □□□ みたいに 画像同士は重ならず、複数列に渡り等間隔で整列 画像サイズは全部同じ 手動で一つずつ並べる以外の方法ありますか
あります
証拠は?
803 :
名無しさん@そうだ選挙にいこう :2014/06/22(日) 00:27:34.37
>>799 カメラ機能とか駆使すれば何とかなりそうだけど、
素直に画像ソフトなりなんなり使ったほうがよい
>>799 それをやった上で、画像の端にオートシェイプで@,A,B,…と番号を入れるという
マクロを作ったこと有るけど、VBA使わないとなると完全に自動は無理
ただ、手動で行う上で、それを楽にする方法ならあるな
もしかしたらもうやってるかもだけど、「グリッドに合わせる」を有効にした上で
セルのサイズを画像サイズ+余白サイズの大きさに変更しておくと
画像はセルのグリッド単位でしか動かなくなるから、位置合わせは非常に楽になるし
画像同士の間隔も一定になる
全部手動でやるならワードやパワポのが楽 そっちで並べといてからエクセルに移せばええ どうしてもエクセルだけでやりたいなら、セルの縦横を画像の間隔と同じにしといて「枠線に合わせる」できっちり並ぶ 並べたあとで、必要に応じてセルの間隔を戻しとく
>>808 グリッドってなに?
等間隔の整列はできないけど、オブジェクト間の隙間を同じに調整してくれるから、オブジェクトのサイズが同じなら結果として等間隔に整列できるよ。
2列に配置するか、3列に配置するかとかはどうやって設定するの?
そういうのを自動化させるのにコンピュータが最適なのに なんで手動でやろうとするんだ
>>789 完成どころか色弱で特定の色の違いがわからない人も結構いるから、
色で判別は駄目だよ。
>>813 自動でできるのに、質問者が条件で不可にしてる
【1 OSの種類 .】 Windows8.1 【2 Excelのバージョン 】 Excel2013 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 異常終了し次に開くと左側にバージョン管理が表示され 一つ一つ選んで保存していますが 全て最新版(一番最近のver)を使用したい場合 まとめてそのように処理させることはできますか?
無理
6.3のような小数点以下1ケタの数値を0.08の倍数にまるめたいとき、CEILING関数を使用すると6.32となってむしろ詳細な値となってしまいます。 この場合6.4となるのが理想なのですが、上手い関数の使い方はないでしょうか。
テンプレ使っていませんでしたので再度。申し訳ないです。 【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 否 6.3のような小数点以下1ケタの数値を0.08の倍数にまるめたいとき、CEILING関数を使用すると6.32となってむしろ詳細な値となってしまいます。 この場合6.4となるのが理想なのですが、上手い関数の使い方はないでしょうか。
いやだって「0.08の倍数にまるめたい」なら、そういう値になるのは必然だろ? それじゃダメだってなら、そもそも君がやりたいことは「0.08の倍数にまるめたい」とは全く別物ってことになるので それなら本当は何がやりたいのかを書こうよ
>>819 小数点第2位を切り上げるってことなら・・・
A1に6.3、B1に0.08が入っているものとして、C1に
=ROUNDDOWN(CEILING(A1,B1)+(CEILING(A1,B1)>A1)*0.1,1)
って入れたら希望に沿った値が出ます。
D1には =CEILING(A1,B1) って入れて、6.3の部分を4.2〜6.3まで
0.1きざみで試したけどいいみたい。
もっとスマートな方法、あるかな?
>>819 値が0.08の倍数であって小数点以下1ケタの数値にしたいなら
0.08の倍数である 0.4の倍数でまるめるしかないんじゃね
0.4 0.8 1.2 1.6・・・・・・6.0 6.4 6.8 7.2・・・・・・
6.0 → 6.0
6.1 → 6.4
6.2 → 6.4
6.3 → 6.4
6.4 → 6.4
6.5 → 6.8
6.6 → 6.8
6.7 → 6.8
6.8 → 6.8
6.9 → 7.2
7.0 → 7.2
823 :
821 :2014/06/23(月) 20:11:11.80
アホや・・・Rounddownを書きながら、Roundupに気付かないとは・・・orz
824 :
名無しさん@そうだ選挙にいこう :2014/06/23(月) 21:16:15.69
>>819 0.08の倍数でまとめるんだったら
小数点以下一桁であらわされるほうがおかしいよね。
0.08の倍数の小数点以下2桁目を切り上げしたいとかじゃないの?
もしそうだとすると、
=CEILING(ISO.CEILING(A1,0.08),0.1)
みたいな感じでできるんだけど。
825 :
824 :2014/06/23(月) 21:19:10.01
あ〜〜。 ごめん、計算式うそうそ。
826 :
名無しさん@そうだ選挙にいこう :2014/06/24(火) 12:31:57.59
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 条件付き書式で別ワークシートの情報を参照して、セルの塗りつぶしをしています。 数式は以下の通りです。 =INDIRECT("Sheet2!"&CELL("ADDRESS",A1))="A" 画面上では色が反映されるのですが、プレビューや印刷では色が出ません。 原因や対処法が分からず困っております。 条件付き書式を設定しているセルには何も入力していません。 印刷設定の簡易印刷や白黒印刷のチェックは外れています。 セルの書式設定で塗りつぶしの設定をした場合は、プレビューや印刷にも反映されます。 どうぞよろしくお願いします。
VBAは使ったこと無いけどたぶんマクロじゃないとできないと思うのだけど、 ボタンを押すと新しいブックを作って、ボタンを押したシートの内容を全コピして書式と値を貼り付けれるようにできないかな? 数式のままコピるとなんかエラー吐くんだよね… Ctrl+Aでコピって新しいシートを作って貼り付ければいいだけなんだけど、それができない奴が多くて… ちなExcel2010
>>826 真っ新なブックに、その条件付き書式と、Seat2のA1に「A」だけ入れて
それでも再現される(印刷に反映されない)か確認してみな
とりあえずバージョン違うけど、2003ではプレビューにも印刷にも反映されることを確認した
それで君の環境で不都合が再現されるなら、それはここで聞くべきことではなく、MSに報告すべきバグ
再現されないなら、まだ出していない情報に原因が隠されてるから
自分でそれを見つけられないなら、ブックをUpした方が早いかもな
>>827 出来るよ
というか、普通にコピーすれば書式はコピーされるから、書式は改めて貼り付ける必要はないよ
普通にコピー → 値を貼り付け ってマクロをボタンに登録してやれば良いだけだ
ここまで教えればマクロの記録から自分で作るくらいのことは出来るかな?
それともコード書いた方がいいの?
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 1 AAAAA 2 BBBBB 3 CCCCC のように入力された1行づつのデータをそれぞれ30行にしたいのですが一発で実行する方法を教えてください。 もしなければ行1〜行3にそれぞれ29行の空白行の挿入方法でも構いません。
830 :
826 :2014/06/24(火) 17:57:00.32
>>828 回答ありがとうございます。
新規ブックでも再現されたのでバグと判断し、MSに報告することにします。
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 VBA内で計算して出てきた値を使ってVBAでグラフを作成することは可能でしょうか。 (セルにある値は使用しない) 可能であれば簡単なものでいいので、やり方(例文)を教えて下さい。
833 :
名無しさん@そうだ選挙にいこう :2014/06/24(火) 19:43:48.30
>>829 リロードしたら終わってた^o^;
折角なので投下
B1=INDIRECT("r"&INT((ROW()-1)/30)+1&"c1",0)
下にオートフィル
>>831 無理っぽい
グラフのデータは必ずrangeから引っ張ってくるから、rangeなしでは作成できない
そもそも、VBAでグラフ作る場合は、オートシェイプなどを使って グラフ自体を自前で組み上げる物だからな Excelに備わってる簡易グラフ作成機能は、VBA使わない人向けの間に合わせ
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 否 現在時刻によって、1〜9などのフラグを建てたいのです。 A1セルに =now() A2セルに、 =if(and(value(A1)>=value("0:00"),value(A1)<value("1:20")),1,if(and(value(A1)>=value("1:20"),… といったように。 A1セルに、普通に時刻1:10などを入力した場合はうまくいくのですが =now()だとうまくいきません。 どうしたら良いでしょうか? 即時性その他の事情により、VBAは無しでお願いします。
>>836 うまくいかないっすよ?
if文の一番最後を「それ以外なら0」にしてあり、0になっていまいます
よーわからんけど、とりあえずtimevalue使った方がいーんじゃねーの?
valueなら、ちゃんとhh:mm:ssで渡すとか
840 :
835 :2014/06/24(火) 22:41:25.22
timevalueだと#VALUE!エラーが…
timevalue(text(a1,"hh:mm:ss")>timevalue("00:00:00") とか、 a1-today()>value("00:00:00") とか。 a1に、now()-today()を入れとくとか。
842 :
835 :2014/06/24(火) 23:05:25.11
>>841 やだ…かっこいい…
now()-today()が最高にエレガントです
ありがとうございました
>>834 > そもそも、VBAでグラフ作る場合は、オートシェイプなどを使ってグラフ自体を自前で組み上げる物だからな
そんなことしてる暇人見たことないわ (w
それは、君や君の周り人が、それをやるのに膨大な時間が掛かってしまうようなレベルだからだろ?
846 :
名無しさん@そうだ選挙にいこう :2014/06/25(水) 04:50:57.10
>>845 俺も見たことないんだけど、
そのオートシェイプを使って組んだグラフとやらをうpして
実例を提示してくれないか?
>>831 セルの値を使用しない例ならこんな感じ。
参照先は実際のテーブルと同サイズ(項目+データ)であれば任意セルでOK。
Dim str1 As String, str2 As String
str1 = """あ"",{""前期"",""中期"",""後期""},{53,37,115},1"
str2 = """い"",{""前期"",""中期"",""後期""},{66,87,132},2"
ActiveSheet.Shapes.AddChart.Select
With ActiveChart
.SetSourceData Range("A1:C4"), xlColumns '仮の参照先(値不要)
.ChartType = xlLineMarkers
.SeriesCollection(1).Formula = "=SERIES(" & str1 & ")"
.SeriesCollection(2).Formula = "=SERIES(" & str2 & ")"
.ChartArea.Select
End With
848 :
名無しさん@そうだ選挙にいこう :2014/06/25(水) 09:13:28.51
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 少しは 【4 VBAでの回答の可否】 可 別シートのセル参照で値が変化した時にVBAが実行されるようにするにはどうすればいいでしょうか。 例えばSheet1のA1の中に『=LEFT(Sheet2!A1,4)』とあった場合にSheet1のA1の内容が変化するとVBAが実行するようにしたいです。 チェンジイベントだと直接の値の変化じゃないと認識しないので。
849 :
名無しさん@そうだ選挙にいこう :2014/06/25(水) 09:48:41.55
Calculateイベントの前後で値が変わったかどうか判定って考えたけど、もっとまともな方法がありそう
参照先のシートのイベント取るんじゃダメなん?
851 :
名無しさん@そうだ選挙にいこう :2014/06/25(水) 12:44:09.25
んー、では普通のチェンジイベントでいいので、対象のセルに値を入力した時に前回と同じ数字なら何もなし 値が前回と違うならVBA実行という風にするのはどうしたらいいですか? 対象のセル値はランダムで頻度に変えます。ただし、同じ数値も入力する場合もあるのでその時は何も起こらないようにしたいです
auto_openでブック開いたときの値取っといて、イベント時に比較するんじゃだめなん?
>>852 それだと一回しか有効にならないよね
例えばオープン時に対象セルが1だとして1を取得する。
1回目の変更はいいけど2回目からは比較が1のままだから駄目かな・・・
854 :
名無しさん@そうだ選挙にいこう :2014/06/25(水) 13:02:47.99
わかったああああああああああああああ 適当なセルに前回の数値を入れとけば良いんだ んで比較して実行マクロの最後に現在のセル値に書き換えて、同じようにそれを比較すれば、その適当なセル値は常に1個前の値を維持できる 自己解決してごめんなさい
>>854 ちょうど自分でも気づけた><
ありがとう&ごめんw
>>846 ググれ
というか、知的財産を安易に要求するな
いや、そんな大層な物でもないだろ。
君が
>>845 なのかどうかは知らんが、偉そうにいってる割に根拠は示してないからそれを指摘したまでのことだよ
ググって出るならそのキーワードを教えてくれ、それができたら根拠の提示と認めようじゃないか。
いっておくがグラフ(チャートオブジェクト)上にオートシェイプを入れこむだけなら馬鹿でもできるが、
それはグラフを書いてるんじゃなくて単なるお絵かきだからな。
859 :
名無しさん@そうだ選挙にいこう :2014/06/25(水) 19:13:01.19
VLOOKUPは便利ですが ・日付が42354 ・値が#N/A ・値が0 になったりするのが不便です。 これらを防ぐ一番簡単でシンプルな方法はどのようなことですか? あと、VLOOKUPでフォントや文字色や背景色や罫線などまでひっぱってくるにはどうすればよいですか?
860 :
名無しさん@そうだ選挙にいこう :2014/06/25(水) 19:13:48.40
背景や罫線まで引っ張るならVBA使うしかない
861 :
859 :2014/06/25(水) 19:24:13.29
これは上級者向けの質問です。 VBAの力を頼らずに実現したいのです。
862 :
名無しさん@そうだ選挙にいこう :2014/06/25(水) 19:41:58.50
ない
上級者向け(笑) すごいなー、上級者さんはvba使わずに背景や罫線を弄れるんだ、すごいなー
864 :
名無しさん@そうだ選挙にいこう :2014/06/25(水) 20:09:08.19
他言語でExcelを操作しろって意味だろう()
>>859 =if(iserror(vlookup(〜〜〜)),"",vlookup(〜〜〜))
日付はセルの書式設定>表示形式で予め直しておけ
>>863 Excel2007以上の条件付き書式なら
VBAなしで文字色や背景色変えたり、罫線出したり消したり出来るよ
あっ…マジレスしちゃいけない釣り質問だったのか…?
866 :
865 :2014/06/25(水) 21:16:10.47
おっと、表記ミス 空白セルの0回避も入れるなら =if(iserror(vlookup(〜〜〜)),"",if(vlookup(〜〜〜)="","",vlookup(〜〜〜))) だな
>>866 そこは、=If...
おっと、上級者じゃないから、やめとこ
すまん
>>859 日付は
=TEXT(Vlookup(),"0!/00!/00")
な感じでやれば日付っぽく表示されるんじゃね?
日付も値も一緒くたにオートフィルでやるってのなら無理な話だと思うが…
値に関しては
=IFerror(vlookup(),"")
で防げるよ
0になるのが不便の意味がわからんが、前提として0が出ちゃダメってこと?
あとでAverageで使うとか?
上級者すぎwww
真の上級者はVlookUPの参照先を目視してコピペ
871 :
831 :2014/06/25(水) 22:00:03.85
>>847 遅くなりましたが、ありがとうございます。
まだ深く検証しておりませんが、目的のものが作れそうです。
いや、まず日付は書式設定で良いじゃないか
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 否 NOW関数を、リアルタイムで自動更新させたいです。 で、ぐぐったら、次の回答がありました ------------------------------- NOW関数はそのままで、ファイル自体をいじる方法があります。 1:ツールバー「データ」→「外部データの取り込み」で、そのファイル自体を取り込む 取り込み範囲はNOW関数が入っているセルで 2:「外部データ範囲のプロパティ」で「定期的に更新する」にチェック 更新間隔は1分で --------------------------------- これの1番の意味がさっぱりわかりません 外部データの取り込みで、ファイル自体を取り込むというのはどういうことでしょうか。 その他のデータソース→ExcelFiles*→自分のファイルを指定 とやっても、、見つかりませんエラーが出ます。
874 :
名無しさん@そうだ選挙にいこう :2014/06/26(木) 06:00:14.02
おまえらVBAとかどうやって身につけた?独学? 独学なら本とか買った方が良いの?
>>874 構文規則は基本BASICだし、それ以外はヘルプに載ってるし
本が必要になることはないような
877 :
名無しさん@そうだ選挙にいこう :2014/06/26(木) 08:47:18.26
>>874 独学。
グラフを作りたければ「vba グラフ」辺りでぐぐればいくらでも例が出てくるし、
それの積み重ねだよ。
あと違う言語を触ると色々捗ると思う
vb.netかC#.net辺りが楽でおすすめ。
878 :
名無しさん@そうだ選挙にいこう :2014/06/26(木) 08:49:24.04
ヘルプでわかるのがすごいな 結局はプログラムの基礎が必要ってことか
879 :
名無しさん@そうだ選挙にいこう :2014/06/26(木) 08:51:12.30
>>877 ほー
とりあえずググってわからなくてもいいから触っていく感じなのね。ありがと
マクロの自動記録もいいぜ、無駄なコードも入るけどあれのおかげで楽が出来た
881 :
名無しさん@そうだ選挙にいこう :2014/06/26(木) 09:05:37.96
>>878 俺もヘルプは殆ど見なかったな。
最近はマシになったようだけど、昔のはちょっと酷かった。
>>880 忘れてた、それだ。vbaはそれがあるからなんとかなるよな。
ただたまーにバグっててそのまま使えない場合がある。
882 :
名無しさん@そうだ選挙にいこう :2014/06/26(木) 09:12:55.80
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【4 VBAでの回答の可否】 否 指定した範囲内の最大数値を表示する方法はありますか? 例えばA1〜A10にランダムで数値が入っているとします。その中で1〜30までの範囲で最も大きい数値を参照したい。 例としては「2,10,43,14,6,121,28、21、99、1」この中なら「28」を返す。そんな感じです 関数でできますか?
883 :
名無しさん@そうだ選挙にいこう :2014/06/26(木) 09:39:39.59
>>882 ちなみに数字以外にも文字がある場合もあるので、それも考慮してもらえると助かります
>>882-883 関数で出来ますよ
=MAX(IF(A1:A10<=30,A1:A10,0))
=SMALL(A1:A10,COUNTIF(A1:A10,"<=30"))
前者は30以下ならそのままの値、30超なら0を返した上で、その中での最大値を返す
配列数式なのでCtrl+Shift+Enterで確定
後者は、30以下の数値の個数を数えて、小さい方からその個数番目の数値を返す
30以下が7つあるなら、小さい方から7番目は、30以下の中での最大値
>>882 ,883
配列入力
{=MAX(IF(A1:A10>=1,IF(A1:A10<=30,A1:A10,"")))}
E1に30と入力して
=LARGE(A1:A10,RANK(E1,(E1,A1:A10)))
886 :
名無しさん@そうだ選挙にいこう :2014/06/26(木) 10:04:33.59
>>884 おおー、配列数式使わないでも出来たんですね。素晴らしい
ありがとうございました
>>878 ヘルプって上から目線で書いてあるからなんかわかりにくいよな
俺はひたすらググって自分の用途に似てる事例を探す
コピる、うまいこと応用する
を繰り返すと、この方法でやればできるんじゃね?とひらめくようになったりならなかったり
上から目線ってw プログラムのリファレンスって基本的にああいうものだよ 仕様だけ不足無く書いてあれば十分 懇切丁寧な感じで書かれてたって、ウザいだけ コードのコピペ改変しか出来ない人からしたら、 いろんな使用例の具体的なコードが欲しいのかも知れないけど、 普通に1からコード書ける人には、仕様だけ簡潔に書いてあった方が 分かり易くて有意義だ
MSDNライブラリなんかは日本語のページだとわかりづらいから英語のページの方がいい 英語わからなくても、ね
マイコンBASICマガジンで文法を3割ぐらい覚えて、最初のうちはわからない部分はコピペと試行錯誤 あとは使いながらだんだん覚えてった
使いどころ以前に、設計からして糞すぎるw 名前欄に書かれていることが見れない メール欄に書かれていることが見れない 改行が正しく反映されない 文が長くても短くてもポップアップが自動で消えるまでの時間は同じでまともに読めない 文が特に長い場合は後半が省略されるが、省略部分を読む手段が無い スクロールするとタイトルバーやリボンの部分が画面から消えて、「Excel風」ですらなくなる 数十秒使ってみただけでこれだけ不都合があるw というか、Excel風ではなくExcelそのものを使って2ch読めばいいじゃん 以前は書き込みまで出来るExcelブックの2chブラウザ「=2ch」ってのがあったけど これは仕様変更で今は書き込みできないけど、読むだけなら多分出来るし 読むだけなら1から作ってもそう大変では無いよ XmlHttpとかでSubject.txtやdatを読んで、文字列操作して表示すれば良いだけだから
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 コピーや切り取りすると条件付き書式が繁殖して困ってます。 なのでマクロで一度削除して新しく設定しなおそうと思ってます。 例えばSheet1のA列全体の中で "○"に等しければRGB(255,255,0) というふうにするのはどうすればいいですか?
事故解決しました Sub 条件付き書式() Dim fc As FormatCondition Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("Sheet1") ws.Cells.FormatConditions.Delete Set fc = ws.Range("A:A").FormatConditions.Add(xlCellValue, xlEqual, "=""○""") fc.Font.Color = RGB(255, 255, 0) End Sub "=""○"""の意味がわからに
>>894 >"=""○"""の意味がわからに
" (ダブルクォーテーション)で文字や数字、記号などを挟むと
それらは文字列として認識されるんだけど、
ダブルクォーテーション自体も記号のひとつであって、
それをどうやって文字列として認識させるかというと、
ダブルクォーテーションで囲まれた中では「"を2つ続けて表記する」というルールになっている
だから
"=""○""" は、つまり
="○" をダブルクォーテーションで挟んだものという意味になる。
896 :
名無しさん@そうだ選挙にいこう :2014/06/26(木) 19:18:58.30
>>891 個人的には非常に評価する
このスレを読むには全く適さないだろうけど、いい発想だ
使わないけどね
897 :
名無しさん@そうだ選挙にいこう :2014/06/26(木) 21:25:26.20
>>891 作った目的が笑える
俺は職場でも堂々と開くけどな
ニュー速みたいなスレをちょくちょくチェックするのにはいいかもしれん
どうせプロキシで弾かれるから見れない
899 :
名無しさん@そうだ選挙にいこう :2014/06/27(金) 12:25:52.83
【1 OSの種類 .】 Windows7,8.1 【2 Excelのバージョン 】 Excel2010及び2013 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 webの表の数値を会社の表エクセルに取り込むのに、 webページに表示された表をコピーしてexcelのシートに単なる「貼り付け」 そして数値部分(単一セル)のみをコピー→会社で作成した表の指定部分の結合したセルに貼り付け(貼り付けオプションアイコンで一番左しかできないのでそれで貼り付け) とやってみたんですが、 これをマクロで記録して貼り付けまでは一気にできたのですが、 その貼り付けた値ではその会社の表に入れられた計算式(足して平均出すだけの式なんですが)で参照しないようで0のままです 貼り付けた数値を上から手打ちで打ち込むと計算式に反映されます。 貼り付けがうまくいってないと思うんですが、良いやり方はないでしょうか? VBAでも何でも構いません。よろしくお願いします
>>899 単に数値ではなく文字列扱いになってるから、計算に反映されないだけじゃないの?
VBA使える奴が、こんな初歩的なことを解って無いとも思えないが
=ISNUMBER(セル)
でFALSEが返るなら、それは数字文字列ではあっても数値じゃない
もし、その辺のことを把握している上で、それでも原因も対処法も解らないってなら
その目的のWebページのURLを書くか、それを貼り付けたExcelブックをうpしよう
yahoo知恵袋みたいな質問サイトでExcelやVBAの質問に適してるサイトはどこ? オススメあったらおしえてくり。やっぱりokwaveかな?
>>901 mougじゃね?
適してるどころか、それ専用に特化してるから
モーグは自宅鯖で運営してんのか?サイト落ちすぎなんだけど ゆうべも落ちてて今朝までアクセスできなかったし Excelで検索かけると上位に出てくるから、ついクリックしてエラーでガッカリというのをよく体験する
904 :
名無しさん@そうだ選挙にいこう :2014/06/27(金) 19:06:44.41
>>899 その値の場所をA1として
Sub Macro1()
Range("a1").NumberFormatLocal = "0_ "
Range("a1").Value = Range("a1").Value * 1
End Sub
って感じで数字を数値にして貼り付ければok
Range("a1").Value = Range("a1").Value * 1
これだけでも数値として認識されるようだけど、書式設定も変えておいたほうが色々安全だった輪
>>899 ・単一セルをコピーしたあとの貼り付けを値のみ貼り付けにする
・表そのものを貼り付けた後に書式設定を変える
・最初から表そのものを通常の貼り付けじゃなくてテキストで貼り付ける
この辺で改善できるんじゃ?
>>903 既に答えがあるものならGoogleでcacheで開けばいいべ…
もーぐって回答のレスポン早い?
908 :
名無しさん@そうだ選挙にいこう :2014/06/27(金) 23:39:18.03
遅い ヤフー知恵遅れの方がマシ ただ、的はずれな答えが返ってきてうざいならモーグが良い けど個人T系にはココで十分
ここが一番ランク下ってことか
さすがにアホー知恵遅れよりはマシだろうw
>>826 印刷の設定で背景色を印刷するにチェックしてないだけでは?
りろってなかった… でも答え出てないっぽいからいいか。
>>876 ヘルプに載っていないAPIも多数存在するよ。
これは解説本を買うしかない。
まぁ、書籍で学ぶのは、「独学」の範疇に入ると思うけど。
ようは「師匠」から教わらないことが「独学」でしょ?
Officeを2007から2010にしたら いきなり印刷プレビューが激遅に・・・ 5秒くらいかかるのはザラで 余白調整も毎回同じぐらいかかる プリンタドライバを最新にしても全く変わらず。 何か他に対策無いですか? ちなみに2007では問題なかったです。
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 ある時刻が来たら、ある行を1回コピーする というマクロを作ります。 A1セルにNow() A2セルに、A1が11:00〜11:10になったら"1" A6セルに、1回こっきりというフラグを建ておく Private Sub Worksheet_Calculate() If Cells(2, 1) = 1 and cells(1, 6)<>9 Then range(ある行).copy range(別の行) cells(1,6) = 9 End If End Sub エクセルが暴走してしまいました。 @VBAを止める方法は無いですか? 再度ファイルを起動して、デバッグ画面が出て、終了しても消去しても暴走します。 A暴走するのはなぜでしょう? どうすればいいでしょうか。
916 :
915 :
2014/06/28(土) 12:25:15.65 補足 おそらく、cells(1,6) = 9を記入した時点でnow()データが更新され 自動プログラムが発動されてしまっているのではないかと 「ある時間が来たら1回だけコピー」というのをさせるためにはどうしたらいいでしょうか now()の発動条件を、11:00::00のときだけ、とすると、空振りしてしまう可能性があります