▼━質問時の注意・決まり事━━━━━━━━━━━━━━━━━━━━ ・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 乙です
ただ、前スレが立ったときにも指摘したのだけど
>>2 のテンプレ最終行に誤字が……
>・B 書籍や解説サイトの紹介以来はスレ以外。ここは技術的な質問のみで。
正しくは
・B 書籍や解説サイトの紹介『依頼』はスレ『違い』。ここは技術的な質問のみで。
4 :
名無しさん@そうだ選挙にいこう :2014/02/08(土) 21:15:31.72
お願いします。 【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 簡単なものをコピペで作るくらいなら 【4 VBAでの回答の可否】 可 クエリでWEBページから取得したデータを、別のシートに参照して並べ替えて表を作成しています。 その表を元に、自動的にグラフを作成したいのですが、表が実際の数字ではなく数式(=A1など) なので、数字を元にしたグラフが作れません。 何かいい方法はありませんか?
>別のシートに参照して ではなく値だけコピーしたらどうでしょう
>>4 こういうのって本当に参照は数値として認識しないんでしたっけ?
isnumberでチェックしたものでもダメ?
7 :
名無しさん@そうだ選挙にいこう :2014/02/09(日) 23:30:34.42
>>5 年寄りに見せる為のデータで、自動で表示したいってのがキモでして・・・
>>6 isnumberでチェックですが、よくわからないので調べてやってみます。
8 :
4=7 :2014/02/09(日) 23:54:41.15
isnumberでチェックしたところ、FALSEでした。 @クエリで取得してきている数値が、単位や記号付きの数値なのでダメ。 (”2ストライク”や”安打数:2” のようなものです。) A表を作成する歳、単位や未取得の項目を見えないようにLEFT関数やiserrorなどで数字だけ見えるようにしていたのでダメ ってことだと思います。根本的なところの理解が足りてなくて済みません。 質問を改めさせていただきます。 クエリで取得してきた単位付きの数字データを、グラフで扱えるような形にするにはどうすれば宜しいでしょうか?
数字だけ見えてるならそれをVALUE()で囲めばいいだけじゃないの
関数使わないでも数値化できる +0とか*1とか
>>8 実際の表をみないと分からん
数値扱いされていないなら
>>9-10 でいける
もしくはclean()や、カンマが混じってるならsubstituteを使う
>>8 たぶん数字の部分を取り出す数式が間違ってる
元データや数式を公開することができないなら自力でがんばるしかない
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 A1セルに入力した値が, 1〜5のとき, B1のセルに5を表示 A1セルに入力した値が, 6〜10のとき, B1のセルに10を表示 A1セルに入力した値が, 11〜15のとき, B1のセルに15を表示 A1セルに入力した値が, 16〜20のとき, B1のセルに20を表示 するシートを作成したいのですが, IF文を羅列する以外に簡単に実装する方法はありますか? よろしくお願いします.
=(QUOTIENT(A1-1,5)+1)*5
=roundup(A1/5,0)*5
=CHOOSE(A1,5,5,5,5,5,10,10,10,10,10,15,15,15,15,15,20,20,20,20,20)
専用の関数があるのにわざわざ面倒な数式考えるとか =CEILING(A1,5)
19 :
4=7 :2014/02/10(月) 20:56:22.06
>>9-12 みなさんありがとうございます。
VALUE /clean() /substitute ともにダメでした。
元データの公開はできるのですが、マクロ入りなのでファイルではなく画像キャプでアップしました。
http://www.evernote.com/shard/s22/sh/9ca1de86-932e-43c5-bcd1-aa8bab9b3092/744145fc0976b94d70377292a7877d4a 項目名は変更してありますがデータの形式はこのままです。
時間の部分だけ、数字ではなくNOW関数で表示していますが、その他は見えてるままが実際の入力されている値です。
上記の画像の枠内の項目を1時間に1度クエリで自動的に取得し、それを上書きではなくて下方向に連続してコピペしています。
当然このまま貼り付けているのでは見にくいため、表を作っています。
見やすいようにアクセス数・問い合わせ件数・納期等々・・・の各項目で、連続して数値が並ぶように参照しています。
その際、( )内の文字や、『件』、『:』などの単位、や記号が邪魔なのでLEFT関数などで数字だけが見えるようにしています。
また、参照しているがまだクエリが数値を取得していないセルのエラーを表示させないため、IF(ISERROR)で空白を表示しないようにしています。
目的は、クエリが取得してきたデータを見やすいように自動で並べ替えた上、グラフで数値を使用できるようにすることです。
年配の人間が見るものなので、手作業が必要ないように、なるべく関数等で実現したいです。
説明がわかりずらければ申し訳ないです。お力をお貸し下さい。
>>19 分からん
値にしてコピーペースト、上げなおして
>>19 たぶん、取り出した数字の部分が文字列になってしまっている
グラフにするにはすべて「数値」の型式に変換してやる必要がある
「120件」から「120」を数値として取り出す数式
=LEFT(A1,LEN(A1)-1)*1
「6 日 (ヤマト発送)」から「6」を取り出す式
=LEFT(A1,FIND("日",A1)-1)*1
「: 86」を「86」にする式
=MID(A1,2,9)*1
人間は「数字」と「数値」を区別せずに見たり考えることができるけど、 コンピューターの中では厳密に区別されて処理されている ここが初心者にはわかりづらい Excelは勝手に数字を数値に変換してくれる場合もあるから、余計ややこしい
更にいうと区別されてない場合もあってホントなんとかしてって思う時がたまによくある
24 :
名無しさん@そうだ選挙にいこう :2014/02/10(月) 22:20:47.71
>>20-21 ありがとうございます。
>>21 の方法を簡単に試したところ、できそうなのでやってみます!
*1の有無で扱いが変わるのでしょうか?理屈がよくわからないのですが。
グラフまでできたらまたご報告します。
みなさん本当に有難うございます!
>>24 同じ「1」っていう数字でも、
Excelが文字列って認識してれば
「あ」「い」「う」・・・と同じ文字列なんだよ
そこに*1って入れてやることで、
あ、これって数値の方の「1」なんだねーって認識してくれる
これはExcelが持ってる機能
逆に「1」を文字列として扱い続けたい場合も有る訳だが
Excelが良かれと思ってかなんだか知らないけど
処理の何処かで勝手に数値としての「1」に変換しちゃってて
それを探すのに困ることもある
っていう、上のレスの繰り返しをしてる俺
26 :
4=7 :2014/02/11(火) 00:46:55.50
できました!!!!
>>25 理屈の解説わかりやすかったです。
今まで、数値とか文字列ってのはセルの表示形式だけの問題だと思ってました。
非常に勉強になりました。
みなさん、本当ありがとうございます!
ご教示ください。
【1 OSの種類 .】 Windows Vista
【2 Excelのバージョン 】 Excel2007
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否(VBAを使ってしか対応できない場合は可とします)
リンク先画像をご参照いただきたいのですが、B9〜K9に計算式を入れることで、下記の条件を成り立たせたいのですが、
ご教示いただけませんでしょうか。
・B1「元値」に対して、B2「期間」に入力された年数を基に、条件に当てはまる下のB5〜H6「掛け率」を自動チョイスして乗算することで、
毎月の金額が算出され、それに12をかけることで年額を算出する。
・B1「元値」が100万円未満か以上で、チョイスされる掛け率が変わる。(1年だと、100万円未満は8.7%、100万円以上は8.5%)
・B2「期間」に入力された期間以上の欄は「-」と表示される。(期間を4年とした際は、5年以降の金額欄は「-」となる設定)
・計算例(表示例)としてはリンク先画像の下部2例となります。(この2例は手打ちしております)
このような計算式を組成することは可能でしょうか?
宜しくお願い致します。
http://fast-uploader.com/file/6947610168955/
>>27 B9〜K9に入れる式(全セル同じ)
=IF(COLUMN()-1<=$B$2,$B$1*INDEX($B$5:$H$6,1+($B$1>=1000000),$B$2)*12,"")
ごめんよく読んでなかった 8年以上は掛け率が固定(7年と同じ)なの?
>>14-18 回答者の表計算ソフトを学んだ時期が分かるような答だなw
Int関数やRound関数はMultiplanや1-2-3の頃からあったけれど
Quotient関数やCeiling関数はExcel以降ではなかったか
(Multiplanの切り上げは -Int(-引数) だけだったか)
自分もMultiplanから入ったからIntやRoundでの構成を考えてしまう
>>17 のような手法を取るならLookupを考えるかな
お前の自己紹介とか誰も興味ないから
長文のくせに内容がない文章を休日に早起きして書くおっさん・・・ こんなとこ来なくていいから家族サービスでもしてあげてください
以降は雑談スレにでも行ってきて
34 :
27 :2014/02/11(火) 12:33:01.14
>>28-29 すいません、寝落ちしてしまいました。
即レスいただいており、本当に有難うございました!
おかげさまで解決しました。イメージ通りです。
7年以降はもともと設定していないので、最初から式を入れずに空欄にしておきます。
>>30 ここはいかに多くの関数を知っているかひけらかす場所でもあるんだよ
36 :
名無しさん@そうだ選挙にいこう :2014/02/12(水) 16:20:56.97
【1 OSの種類 .】 Windows7+8.1 【2 Excelのバージョン 】 Excel2010+2013 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 月ごとに取ってる集計データで月ごとにシート使用して12シートを1年の1bookにファイルして管理してます ファイル名を24年度aaaにして、シート名は1月、2月・・・・のようにファイル名は年度の数値が変わるだけですべて統一 シート名も全年度同じ4月〜3月です このような状態で新たに「前年同月比」の集計を出すことになり、それに伴って前年同月の数値を引っ張ってきたいんですが 26年2月のシートのA1セルに年の数値(26年なら26)、C1に月(2月なら2)と数値が入っている場合 前年同月の数値を自動でセルに入れるにはどのように記述したらいいでしょうか? =!(A1-1)年度aaa/シート名/場所 といった感じの数式がちょっと分からないです よろしくお願いします
>>36 は26年2月だけでなく
すべての年度の月で年と月の数値から前年同月の数値を自動でとれるようにしたいのです
ファイル名シート名の形式は統一させてますので記述の仕方だけだと思うのですがどうも上手くいきません
>>36 indirect()
=INDIRECT(A1&"年度aaa!r"&B1&"c"&C1,0)
B1は行数C1には列数が数値で入る
>>17 遅まきながらワロタよ
これくらいのネタ回答がたまーに混じるくらいが好きだな
質問者困惑するかもしれんけどにちゃんだし
ネタじゃないだろ。マジだろ。後から名回答が付いたからって言い訳すんなよ。アホか。(^▽^)
41 :
15 :2014/02/12(水) 22:09:04.90
>>40 まぁまぁ。バリエーションがあっていいじゃないか。
エラー値が返るとか、稚拙な周りくどい回答は問題外だけど、choose()の引数は29までで、それはクリアしてるし、問題はない。
ある程度マジレスを返す→ネタレス+技巧レスを返すこのスレの雰囲気は維持していきたいと思ってる
頼むよ
>>36 前年度のブックも開いていないと上手く動かないけど、こんなんでどう?
(式が長すぎるから改行してます。コピペ時に改行を消してください)
=INDIRECT("'["&MID(CELL("filename",A1),FIND("年度aaa.xlsx]",CELL("filename",A1))-4,4)-1&"年度aaa.xlsx]"
& MID(CELL("filename",A1),FIND(".xlsx]",CELL("filename",A1))+6,LEN(CELL("filename",A1))) & "'!r"
& ROW()-1 & "c" & COLUMN(),0)
仕様
各ブックのファイル名は [西暦4桁] + "年度aaa.xlsx"
例:"2012年度aaa.xlsx","2013年度aaa.xlsx",などで、
前年度のブックを参照する
(aaaの部分は適宜変更してください)
シート名は前年度ブックの同じ名前のシートを参照する
同じ名前のシートがあればそれで良い
シートの並び順は問わないし、関係ないシートがあってもかまわない
参照するセルは一個上のセル
つまり、ブック"2013年度aaa.xlsx"のシート"4月"のセル"A2"は
ブック"2012年度aaa.xlsx"のシート"4月"のセル"A1"を参照する
なお、1年前のブックを指定しているのは
MID(CELL("filename",A1),FIND("年度aaa.xlsx]",CELL("filename",A1))-4,4)-1
の一番最後の"-1"の部分なので、ここを変えれば2年前でも3年前でも参照可能
同様にセルの相対指定は
ROW()-1 & "c" & COLUMN()
の部分なので、ここを変えれば参照するセルの位置も調整可能
43 :
42 :2014/02/13(木) 00:47:30.36
ゴメン、西暦年じゃなくて元号だったのね。 CELL("filename",A1))-4,4) を CELL("filename",A1))-2,2) にすれば年を二桁で指定できるんで、必要に応じて変更してください あと、そこまで自動でなくてもいいなら(年と月をセル参照で指定するなら)もっと短くも出来ます。 =INDIRECT("'["&A1-1&"年度aaa.xlsx]" & C1 & "月'!r" & ROW()-1 & "c" & COLUMN(),0) こちらはセル"A1"に年度、セル"C1"に月(ともに数字のみ)が入ってて、 シート名は "1月","2月" のように[数字]+"月"の形式になっているものとします。
44 :
名無しさん@そうだ選挙にいこう :2014/02/13(木) 19:28:38.95
エクセル初心者です pc間でデータの移動後、移動先のセルに入力できなくなりました セルをダブルクリック後、半角入力ではウンともスンとも 全角入力では変換候補?が「Tabで選択」と表示され、実行してみてもセルは空白のままです 解決方法をご存知の方いらっしゃいましたらお知恵をおかしください よろしくお願いしますm(_ _)m
とりあえずPCの再起動 あとキーボードとマウスを抜き差し
46 :
名無しさん@そうだ選挙にいこう :2014/02/13(木) 19:41:12.98
了解です、やってみます ありがとうm(_ _)m
47 :
名無しさん@そうだ選挙にいこう :2014/02/13(木) 20:40:35.78
教えて頂いた方法で改善されず、自分のフラッシュでデータの再時移行を試してみたのですがこれもダメでした 44での疑問が、ご近所のご年配の方からの依頼でして、自分のpcからでなくお返事遅くなりました pcに疎く問題解決策がわからず頼らせて頂きました ありがとうございましたm(_ _)m
>>47 特定のファイルだけその症状が出るの?
他のExcelファイルは無事なんだったら、
根本原因の解決は諦めて、該当のsheetを全選択コピーして
新しいBookのシートに貼り付けるっていう逃げ道もあると思うけど
50 :
忍法帖【Lv=23,xxxPT】(1+0:8) :2014/02/14(金) 14:50:41.49
エクセル2007で棒グラフを作るとき 4月 12 5月 15 6月 08 というデータの場合、これを範囲選択してグラフを作成すると4月、5月、6月が横軸ラベルなりますが、 4 12 5 15 6 08 だと、4、5、6がラベルにならず2系列の棒グラフになってしまいます。 上の例のように左列をラベルにしてグラフを作成するにはどうしたらいいですか? あとで指定すればいいのはわかってるんですが、できれば最初に一発で作りたい。
>>51 前スレにあった「ふりがな情報」を消すためにcsvにすると文字列書式も消えるけど、これは使えそうかな?
住所録みたいな計算式のない文字データだけのだと、ふりがな除去でデータ量が半減したけど、全角文字列数字が半角数値に変わったな。
メモ帳にコピペして貼り付け戻しとかよくやってるけど
>>50 4、5、6の前にシングルクォートを入れるか、
あらかじめ表示形式を文字列にしとけばできた
入力後に文字列設定にした場合はダメで、
セルの左上角に緑の印が出るようにする必要があるみたい
エラーが頻発するので教えてください。 【1 OSの種類 .】 Windows Vista 【2 Excelのバージョン 】 Excel 2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 新規にBookを開いて、適当にグラフを作成(散布図)→グラフの移動をすると実行時エラー438が必ず出てしまいます。 ダイアログが出てくるだけでグラフは作成されるので問題ないのですが…。 よろしくお願いします。 また、Officeの修復を行っても同じでした。 別PCのWindows 8でも同様のダイアログが出てしまいます。
>>56 マイクロソフトのサポートへ連絡してください
>>55 ありがとうございます。入力前に文字列指定ですか。なんか妙な仕様ですね。
OpenOffice系だと先頭列を項目名にするチェックボックスがあり、
昔のエクセルも同じ動作だった気がしますけど、なんでこうなったんですかね。
59 :
名無しさん@そうだ選挙にいこう :2014/02/15(土) 14:03:43.88
VLOOKUPでひっぱってきても 日時は42315みたいな数字、 元が空白なら数値の0、 対象が見つからなければ#N/A と出やがります。 これ、日時はちゃんと日時の書式、空欄なら空欄、対象がなければ空白、みたいにするにはどうすればいいですか?
>>59 それはシリアル値と言ってな、説明めんどいからぐぐれ。
対処方法としては
・予めセルに書式設定
・text関数
になる
>日時はちゃんと日時の書式、空欄なら空欄、対象がなければ空白、みたいにするにはどうすればいいですか?
これはiferrorやifで分岐させるしかない
vbaならなんとでもなるが、これは厳しいだろう
【1 OSの種類 .】 Windowsxp 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 ほとんど使えない 【4 VBAでの回答の可否】 否 グラフの範囲をセルの値で可変にしたいです 現状 =SERIES(,Sheet2!$A$2:$A$100,Sheet2!$B$2:$B$100,1) で2か所の100の所をD3の値に変えたいと思い =SERIES(INDIRECT(",Sheet2!$A$2:$A$"&D3",Sheet2!$B$2:$B$"&D3",1")) としましたがエラーとなります
62 :
59 :2014/02/15(土) 14:17:53.99
>>62 めんどくさいから答えるの嫌
ワークシートのchangeだかselectionchangeだかでやる
まぁその方法も思いつかないのなら考えなくていい、とは言えル
64 :
59 :2014/02/15(土) 15:13:05.44
>>64 別スレの口癖だから。
Excel・vbaに付いて何か問題でも?
66 :
59 :2014/02/15(土) 16:19:15.43
>>66 もともと変換はテキトー。前回の変換がひらがなだっただけ。
>>63 は前回の変換がカタカナだっただけ
68 :
59 :2014/02/15(土) 16:43:15.34
>>67 いつもご丁寧なレスですね。
ではあなたの初体験の年齢はいくつですか?
>>68 13です。
単純な質問故、喧嘩をする理由・要素が特に見当たりません。
乱暴な言葉づかいによる会話は、長文になりやすいので進んでしようとは思いません。
ですがそろそろExcelとは関係のない話ですので、どこか別のスレ・掲示板等を指定していただけるとありがたいです。
よろしくお願いします。
70 :
名無しさん@そうだ選挙にいこう :2014/02/15(土) 23:50:09.15
クソつまんねーな相変わらず
71 :
59 :2014/02/16(日) 11:47:29.27
72 :
名無しさん@そうだ選挙にいこう :2014/02/16(日) 14:12:45.82
釣ってると思っている59が釣られている件
【1 OSの種類 .】 Windows7 sp1 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 エラーセルを無視するようにlinest関数を使うには? y,x1,x2のデータから、 y=f(x1,x2)=a*x1+b*x2+cを仮定して、 indexとlinestの関数を使って、上記a,b,cの値を求めようとしています。 例えば、index(linest([yの値のセル範囲,[x1の値のセル範囲],[x2の値のセル範囲]),1) 。 yの値のセルに#num!が含まれると、上記関数は#value!を返します。 yの値のセルに#num!が含まれても、そのセルを無視して計算してくれるようにするにはどうすれば良いでしょうか?
セルがエラーかどうか聞いて、エラーなら代替値で計算させればいいだろに
77 :
名無しさん@そうだ選挙にいこう :2014/02/16(日) 21:10:42.20
用紙にきっちり収まるように作られたExcelの表があるんだけど、 Wordにして差込印刷したい。 Excel、Word共に2010使用。 一部テキストボックスで作られてた2003?を2010でセルに罫線つけた。 形式選択してコピペしたら、新しく作った所だけ罫線の間隔が変に。 Excelの表を間隔などそのまま貼り付けて、差し込み印刷に使う方法ありませんか? よろしくお願いします。
>>77 データが変わらないなら、図として貼り付けでいいんじゃね?
79 :
名無しさん@そうだ選挙にいこう :2014/02/16(日) 21:56:28.60
>>79 表を印刷したいんだろ?
差し込み印刷って表の印刷にはあんま向かんけど。
それとも1レコード1ページなん?
何をどうするのかもうちょっと具体的に書いてくれないとわからんな。
Wordの差込印刷のようにオレのチンコを複数の女の子に挿入発射できる風俗はどこかにありませんか?
83 :
名無しさん@そうだ選挙にいこう :2014/02/16(日) 22:53:10.20
>>81 セルに罫線をかけて作り、そのセルが差し込みデータの位置になります
差込データは一枚にたくさんあり、セルは結合した所がたくさんあります
役所の申請用紙みたいな感じといえば伝わるかな?
>>83 普通にワードで表作ってそこに必要な項目を差し込むしかないよ
エクセルから貼り付けてそのまま使うとかいう方法はない
差し込み印刷ってのは、データをエクセルで管理し、
帳票印刷をワードでする、っていうものだから。
85 :
名無しさん@そうだ選挙にいこう :2014/02/16(日) 23:03:36.84
>>84 やっぱり一から作るしかないですか
罫線の間隔とか色々微調整が必要なので大変だ…
管理するデータはもちろん別にありますよ
検索すると同じ質問はあるけど、解決してないのは未だにできないって事なんですね
ありがとうございました
Excelのデータをそのまま印刷すればいいのでは・・・?
>>75 y=f(x1)ならリンク先の方法で上手くんでしょうね。
>範囲をまるごと参照して同エラー以外同じものを作るという手も
どうもそういう手しかない感じですね。
>>76 合計を求めるとかならゼロでも入れておけばいいんでしょうが、
多項式の近似式の係数を求めようとしているので、代替値を入れると
結果が変わってしまうので駄目なんです。
レスありがとうございました。
>>85 印刷物の、表以外の部分が
エクセルのヘッダ・フッタとか、タイトル行で代用できるんであれば
エクセルでそのまま印刷できるんじゃねの?
Excelで置換をやる場合、タブはどのように入力すればいいでしょうか たとえば「あ」を「タブコード」に変換したい場合です。 このような場合、エディターだと検索文字を「あ」 置換文字を「\t」でできますが、Excelだとどうすればいいですか よろしくお願いします。
>>89 調べたけど無いっぽい
タブを"c"に全て置換するマクロ
Sub a()
Dim b As String
b = Chr(9)
Cells.Replace What:=b, Replacement:="c", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
End Sub
>>88 文章だけのページと一緒に印刷したいのかもよ
>>91 それなら逆に、Excel側を主にしてそこにワード文書を貼り付ければいい
のほうが圧倒的に楽だよね まぁ、会社の事情というのもあるかもしれない。ガンバレー
置換はwordの方が高機能なのでそっちでやることがときどきある 半角>全角変換とか
>>89 罫線が保存できないとかブックではなくなるとかの問題があるけれど、
SYLK形式で保存し、データをテキストにしてエディタで置換とか?
しかし、そもそもExcelの一つのセルの中にTabを入れられるの?
char(9)、そしてコピペで値を保存で可能なとこまでは確認したよ
"で括ればエディタからのコピペも可 なお、使い道は不明
タブを置換てできるか? 俺は無理だった
>>101 =90
色々できそうで、意外とできない
参ったね
103 :
名無しさん@そうだ選挙にいこう :2014/02/17(月) 23:00:49.59
>>86 ,88
そのまま印刷とはどういう事でしょう?
役所の書類みたいに記入する所が枠で囲ってあり、
AさんからDさんまでのデータが別のExcelにあり、一行分が一枚に印刷する内容になってます
>>103 それなら行単位でまとめて持って来るんじゃなくてセル単位で1マスずつ参照するように作り直せ
エクセルは印刷の精度が低すぎるから、罫線は絶対にずれる
これ豆な
105 :
89 :2014/02/18(火) 06:49:37.78
「Ctrl+アルファベット」は制御コードの入力 30年以上前、パソコンが発明される前からあった方式 昔のキーボードにはEnterキーもTabキーもなくて、Ctrl+英字キーで操作していた その名残がWindowsでもあちこちに見られる ほとんどの組み合わせはショートカットに奪われてしまったけど、いくつかはゾンビのように残っている 改行はCtrl+J、タブはCtrl+Hだけど、ExcelではなぜかJだけが使えるようだ
>>106 C-hはバックスペースじゃなかったのか?
C-j→LF、C-m→CRとか
ああそうだった Ctrl-HがBackSpace、Ctrl+IがTabだ たぶんググれば一覧が出てくる
このスレはお年寄りが多いのでしゅ(^▽^)
年寄りじゃなくても、emacs使ってると今でもC-hとか普通に使うし
【1 OSの種類 .】 Windows7、XP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 日毎・月毎の売上をExcelで管理しています。 2014XX_店舗01、02….xlsに各店舗の売上を入力し、マスターで閲覧するようにしています 各xlsファイルには1日から31日までの売上データが入っています。 このセル内の参照先をマスター側で変数とし、月を切り替えるような仕様にしたいのです。 INDIRECT関数だと参照先も開いておかなければならないので 他の関数またはVBAで処理したいのですが良い方法はないでしょうか
そういうのはシートやファイルに分けないでいっこのシートに入れればいんだよ で、ピボットで集計する
>>104 きれいな表計算の印刷なら三四郎だな
エクセルはプレビューさえイイカゲン
1つのbookでsheet参照を考えてみては?
>>112-115 ありがとうございます。直接は関係なかったので後出しになりますが
元々1ファイルで管理してまして、Excelの仕様上共有する事で読み取り専用になる
→店舗毎にファイルを分けてクラウドで管理→競合がやたらと発生する
→1ファイルを閲覧用、他を入力用にする事で競合問題を解決したい
…という過程を経ておりまして。
セキュリティ的にまずいものは入れておらず、極力利便性を優先するため
串刺し計算するような形で集計する方向で行きたいなと。
最終的なデータはマスター上でピボット集計しようとは思っています。
とりあえず
>>112 のやり方でテストしてみようと思います。
118 :
名無しさん@そうだ選挙にいこう :2014/02/19(水) 18:46:17.71
【1 OSの種類 .】 Windows7 sp1 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 「snow.xls」に以下のようなリストがあります。 鈴木●郎 埼玉県秩父市●●● A型 佐藤●子 長野県軽井沢町●● AB型 田中●雄 山梨県甲府市●●● O型 山本●代 群馬県富岡市●●● B型 高橋●夫 群馬県富岡市●●● B型 ・・・・・ ・・・・・ これを次のようなフォーマットでA4の紙に印刷したいのですが、どのようにしたらよいでしょうか? --------------------------------- 鈴木●郎様 A型 埼玉県秩父市●●● このたびは大雪の影響で・・・(略 --------------------------------- 佐藤●子様 AB型 長野県軽井沢町●● このたびは大雪の影響で・・・(略 ---------------------------------
>>116 昔で言えばシェアクローズね
複数のクライアントからオープンする場合、たんびたんびopen-rewrite-closeする手法を使った
今はlanに対応したexcelじゃないのかな?
よろしくお願いいたします 【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 A1セルに ○○○○○○○○m○○ と入力されています A2セルにも ○○○○○○m○○○○ と入力されています A3以下も同じように入力されています ○の部分は漢字、ひらがな等で文字数はセルにより違います 全てのセルに○○○○mという距離が入力されているのですが この距離の数字部分だけを抽出する方法を教えてください 数字で4桁で何千何百メートルって感じで入力してあります 例)○○○○○○2500m ○○○○ こんな感じです どうぞよろしくお願いいたします
>>121 データ 区切り位置 固定長じゃない方 その他 m
>>122 素早く回答してもらったのにすいません
抽出した数字をだけをA1ならB1にA2ならB2に関数で入力できるようにしたいです
>>121 前の方の○○って部分に半角の"m"が含まれないという前提ならば
=MID(A1,FIND("m",A1)-4,4)*1
でいけると思う。(A列が処理対象の文字列)
>>123 123mの場合は?
また
○○○○○2500m ○○○○
とあるけどはんかくすぺーすがあるの?
数字4桁でって書いてあるじゃん
>>124 ありがとうございます
やってみます
>>125 数字は4桁です
半角スペースは入力ミスです
124さんのやり方でやってみます
ありがとうございました
128 :
名無しさん@そうだ選挙にいこう :2014/02/21(金) 11:16:53.35
【1 OSの種類 .】 Windows xp 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 テキストファイルに式が書かれているのですが、その式は 1+1 3×4 1÷2 の様に全角でしかも掛ける・割るが*・/で無いのです。 一応置換はSUBSTITUTEでできたのですが、その置換の結果の式で計算ができません。 どうやったら、計算式にして計算結果を得られるのでしょうか。 テキストエディタで置換して=を追加してたのですがエクセルだけで解決できないものかと。
>>128 A1:A3の範囲を〜
+0としてるのは「1/2」が日付になるため
Sub a()
Range("A1:A3").Select
Range("A3").Activate
For Each b In Selection
b.Value = Replace(b.Value, "×", "*")
b.Value = Replace(b.Value, "÷", "/") & "+0"
b.Formula = "=" & StrConv(b, 8)
Next
End Sub
130 :
名無しさん@そうだ選挙にいこう :2014/02/21(金) 12:50:30.86
>>129 どうもです。
このマクロですと、場所が決め打ちになるのが気になりました。
まぁ、個人使用なので、決め打ちでもいいのですが。
ユーザー関数化しようとしたのですが、なんかうまく行かず。(汗)
SUBSTITUTEで置換するところまで行ったので、それを活かせないかなと。
最初から、マクロ不可にしとけよって思うかもですが。
すみませんが、教えてください。m(__)m
あ、そうか… 変換して計算するセルに関数入れるなんてパラドックスじゃん。 いま、気づいた。 だめじゃん、俺。orz
indirect使えばマクロ無しでできそう。
>>130 Function a(b)
b = Replace(b, "×", "*")
b = Replace(b, "÷", "/") & "+0"
b = "=" & StrConv(b, 8)
result = Evaluate(b)
a = result
End Function
暇だから練習がてら作ってみた
にょうじゅんもじゅーるにいれて
>>132 それが、うまくいかないんだ…(´・ω・`)
>>133 どもです。
チョット別な用事が出来たので、手が空いたら試してみます。
有難う。
全角→半角の関数はある その前後に置換関数を入れ、 ="="&に繋げばvbaなしでok
>>128 その式の最後に*1加えれば計算する場合があるが
>>132 すまん
indirectはセル参照しか返さないみたい
マクロなら
>>133 のevaluate使うのがいいと思う
ワークシート関数だと、2項だけなら、
ascして、findで演算子探して、left/rightとかで両側切り出して、それぞれintして…
で、できなくもない。すげー力業だけど。
>>134 置換までいけてるんなら、後は別列で名前の定義を活用すればいいんじゃね?
139 :
名無しさん@そうだ選挙にいこう :2014/02/22(土) 07:07:15.14
つか、元々マクロ不可じゃないんだし
>>133 で良いじゃん
見ればわかるだろ
エクセル初心者ですが シートが20シートほどあるブックで下のシートタブをクリックせずにキー入力やコマンド入力でして指定シートを一発で開く方法はないのでしょうか 名前ボックスというところでシートも指定操作可能ですか? マウスクリックですと時間がかかるし押し間違いも多いので数値で1発指定できればいいという考えです。 VBAでやれば出来るのはわかりますが、社内でVBA使用禁止の場合もあるので、現状のインタフェーズ上で出来ればなおよいと思っています。
一発指定は無理 キー操作ならCtrl-PageUp/Downで左右に移動できる。ちなみにマウスの戻る進むに割り当ててるけどすげー捗る あと、シート移動するボタン(こんなやつ→《〈〉》)右クリックしたらシートの一覧出てこなかったっけ?
【1 OSの種類 .】 WindowsXp 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 グラフについて質問なんだけど データの範囲が4-5000以上のグラフを作ると軸のオプションが自動だと 始点が0から始まって潰れたグラフが出来るんだけど他の人もそうですか?
147 :
145 :2014/02/22(土) 23:44:15.63
>>146 対策として手動で軸のオプションの幅を変える以外にないでしょうか?
毎回の事なのでデータ個数が少ないときのように自動で設定してほしいのですが
同じグラフを毎回作るならマクロとかテンプレとか
149 :
145 :2014/02/23(日) 01:17:53.45
>>148 現状、グラフはマクロで作ってます
グラフの系列や種類は同じなので問題はないのですが
データの数値は毎回全然違うので軸の幅を固定値にするわけにはいかず
自動で設定したいのですが上記のように始点が0からになってしまいます
>>149 マクロなら工夫すれば数値の違いに対応できるだろ
151 :
145 :2014/02/23(日) 02:39:22.26
>>150 自分の方で対応するしかないみたいですね
データを増やしたらグラフの挙動が変わったので質問した次第です
ありがとうございました
153 :
145 :2014/02/23(日) 02:57:08.01
>128 textcalcを入れれば可能です。 netで検索書ければ出てきます
155 :
名無しさん@そうだ選挙にいこう :2014/02/23(日) 22:47:14.90
【1 OSの種類 .】 WindowsME 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 初心者です。エクセルで日数計算で○年○ヶ月○日という方法は分かったのですが、 例えば2年6か月を2.5年などと表示させる方法が分かりません。 ネットや本を見た範囲ではわからず、どなたか親切な方教えていただけませんか。
>>155 エクセル 日付 計算 年 小数点
でぐぐってみて
うーみ、、月数/12としたらどうでせう?w
>>156 それで検索したら方法が出てきました。ありがとうございます。
>>157 その方法で試してみました。あってはいるんですが自分の求めるものとは少し違いました。ありがとうございます。
159 :
名無しさん@そうだ選挙にいこう :2014/02/24(月) 10:08:40.66
【1 OSの種類 .】 Window 【2 Excelのバージョン 】 Excel2010,2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 散布図で、地図を下地に経度緯度データをリストからvlookupで取得して、プロットしたいのですが、 vlookupで取得したデータが重複した場合に緯度か経度に一定数を足したいのですが、如何したらいいですか 教えてください。お願いします
160 :
名無しさん@そうだ選挙にいこう :2014/02/24(月) 10:11:52.16
>>159 【1 OSの種類 .】 Window7 です。
ファイルがないとどんな状態かよくわからない。 今の情報だと >vlookupで取得したデータが重複した場合に緯度か経度に一定数を足したい vlookupで取得したデータが重複した場合に緯度か経度に一定数を足せばいい、としか営内
162 :
名無しさん@そうだ選挙にいこう :2014/02/24(月) 10:59:15.03
氏名 町名 緯度 経度 鈴木 ●▼町 □度 △度 左藤 ◎町 ★度 ☆度 山本 ●▼町 □+0.001度 △度 伊藤 ●▼町 □+0.002度 △度 ※緯度、経度は他の町名リストから検索表示、●▼町の位置がダブるので、ダブりを 回避したいのですが
>>162 それはダブるのが当然であって、
それによって不具合が生じると言うならば
そのデータの構造そのものが間違ってる
そもそも。町名と緯度経度は同じ意味合いの情報なんだから
(町名と緯度経度が1対1で対応している)
わざわざ緯度や経度の情報に余計なことをすべきではない
>>162 氏名 町名 緯度 経度 プラス 緯度プラス 経度プラス
鈴木 ●▼町 □ △ FALSE □ △
左藤 ◎町 ★ ☆ FALSE ★ ☆
山本 ●▼町 □ △ 0.004 □+0.004 △+0.004
伊藤 ●▼町 □ △ 0.005 □+0.005 △+0.005
E2=IF(AND(COUNTIF($C$1:C2,C2)>1,COUNTIF($C$1:C2,C2)>1),ROW()/1000)
F2=C2+E2
G2=D2+E2
緯度プラス 経度プラス を使う
緯度プラス 経度プラス が更に被る可能性もあるが、こんなもんどうしようもない。VBAしかない
165 :
名無しさん@そうだ選挙にいこう :2014/02/24(月) 11:42:29.27
VLOOKUPで、日付がシリアルになること、#N/Aや0になるのがイヤです。 これを防ぐにはどうしたらいい? VBA使うしかなさそうなら、そのコードを教えていただきたいのですが。
>>165 どうにもならない
日付はtext()を使う
エラーはifやiferror分岐させる
vbaで自作関数を作るのもいいけど、めんどくさいから自分で頑張れ
大体こんなかんじでラップする。
function vlookup2(a,b,c)
if 条件 then
result = Application.WorksheetFunction.vlookup(a,b,c)
else
result = Application.WorksheetFunction.vlookup(a,b,c)
end if
vlookup2 = result
end
167 :
165 :2014/02/24(月) 12:10:49.30
>>166 ちなみにそのvlookup2の返り値の型はなに?
もしStringなら、どうやって書式(日付)も移す?
168 :
◆upmIvMVKO6 :2014/02/24(月) 14:08:58.55
【1 OSの種類 .】 Windows XP,8,8.1 【2 Excelのバージョン 】 Excel2013,2010,2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 16桁の数字の表示形式で4桁ごとにスペースをいれるには? クレジットカード番号など16桁の数値の入力で、 書式設定から表示形式を文字列にして、入力をしています。 入力後、4桁ごとにスペースを空けて表示することは可能でしょうか。 例 012345678901234567 を 0123 4567 8901 2345(#### #### #### ####) ですと、数値に扱われますので、最後の1桁が「0」になってしまいます。 別列で文字として扱う分にはできたのですが、別列などを使わずに、A列だけを対象にして VBAだけで実現は可能でしょうか? 「A列に入力された16桁の数字は上記のように4桁ごとスペースを入れて表示する」というVBAの処理方法になります。
>>167 ウオッチ式ぐらいは使ってね
書式の取得と反映はテキトーに検索でもかければいいんじゃないか
もいラッパーで作れそうに無ければ1から作ったほうが早いかも
俺はめんどいから作らんしだれも作らないと思う
>>168 無理。
文字入力→数値なら頭の0を取る→vbaの Worksheet_Changeイベントと言う流れになっているので、
頭の0が消えないようにするには予め文字で書式設定をしておかなくてはならない
その上で以下
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Selection.NumberFormatLocal = "@"
Target.FormulaR1C1 = Mid(Target.Value, 1, 4) & _
" " & _
Mid(Target.Value, 5, 4) & _
" " & _
Mid(Target.Value, 9, 4) & _
" " & _
Mid(Target.Value, 13, 4)
Application.EnableEvents = True
End Sub
つづく
つづき もしくはinputboxでnyuuryokuするかのどっちか。これなら書式設定を設定しておかなくても問題ないが、inputboxを呼ぶ手間がかかる どっちでも好きな方を Sub Macro2() Selection.NumberFormatLocal = "@" a = InputBox("16keta") ActiveCell.Value = Mid(a, 1, 4) & _ " " & _ Mid(a, 5, 4) & _ " " & _ Mid(a, 9, 4) & _ " " & _ Mid(a, 13, 4) End Sub
>>169 の
Selection.NumberFormatLocal = "@"
これいらなかったわ。まぁ会っても問題ないしどうでもいいわ
>>169-171 早速ありがとうございます。無事できました^^
対象範囲(VBAの有効範囲)を特定の列(F列)だけというのは難しいでしょうか?
>>168 If (Target.Column <> 1) Then Exit Sub A列:1、F列なら6にする
条件を「16桁以内の数字を入力し、16桁に満たないものは頭にゼロを付して16桁とみなす」
と変えることができれば、169さんのマクロの途中に
Target.Value = Right("000000000000000" & Target.value, 16) を加えるだけでいいですよ。
あと、入力チェックに「小数点の数字は無視(加工しない)」も入れるならば、
If Not(Target.Value Like "################") Then Exit Sub
という条件式を加えるといいです。#はLike演算子の文字パターンで任意の1文字の数字(0-9)です。
16個連ねることで16桁の(小数点を含まない)数字のときだけ加工できます。
>>173 様 ありがとうございます。
すみません、どこに行に追加すれば良いのか^^;
>169-171様の構文を元に追加ので再構文をしていただけないでしょうか?
連投すみません、追加条件の全部入りでお願いします <(_ _)> If (Target.Column <> 1) Then Exit Sub A列:1、F列なら6にする Target.Value = Right("000000000000000" & Target.value, 16) If Not(Target.Value Like "################") Then Exit Sub
176 :
173 :2014/02/24(月) 19:49:07.82
>>175 169さんのプログラムに一部変更を加えました。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim wk As String
Application.EnableEvents = False
If (Target.Column <> 1) Then GoTo Exit_Sub ' A列:1、F列なら6にする
wk = Right("000000000000000" & Target.Value, 16) ' 16桁未満のとき頭にゼロを付けて文字列へ
If Not (wk Like "################") Then GoTo Exit_Sub '16桁全部数字か
Target.FormulaR1C1 = _
Mid(wk, 1, 4) & " " & Mid(wk, 5, 4) & " " & Mid(wk, 9, 4) & " " & Mid(wk, 13, 4)
Exit_Sub:
Application.EnableEvents = True
End Sub
プログラムは↑まで。以下解説。
F列への入力のときに実行したいのであれば、If (Target.Column <> 6) Then GoTo Exit_Sub とする。
最初に Application.EnableEvents = False を実行しているので、条件に合わない場合でも
Application.EnableEvents = True を実行する必要があるため、Exit_Sub: というラベルを追加
するとともに、Then Exit Sub を Then GoTo Exit_Sub に変更。
頭にゼロを付けたものをそのまま保持するために、文字列変数wkを新設。
>>154 あれれ…有るんだ。(;´Д`)
そーゆーの探して検索したんだけど、みつからなかったんだ。
明日、試してみる。
共でした。( ´Д`)ノ~バイバイ
178 :
167 :2014/02/24(月) 22:59:43.33
>>169 それは困るじゃないか。
あなただけが頼りなんですよ。
>>173 様 すみません御礼が遅くなりました。ありがとうございました。
大変勉強になりました。<(・∀・)>
XP終了に伴って、Win7マシンを買いました。 XPには2003、2007、2010をインスコしています。 このXPから2007と2010をアンインスコしてWin7マシンに インスコするには、どういう手順を踏めばいいですか?
【1 OSの種類 .】 Windows XP 【2 Excelのバージョン 】 Excel 2003 SP3 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 任意のセルの値を簡単に変更する方法を教えてください。 例えば商品Aの数を37から38、商品Zの数を3から1など少ない数値だけ増減する 作業が頻繁にあるときに、マウスから手を離さずにすばやく行える方法を探しています よろしくお願いします
>>183 まあ考えると、そういう超初心者的な操作を実現する為に
VBAしか無いっていうパラドックスなんだよな
簡単なんだけどね
>>183 表の形式がよくわからないのでなんともいえないけど、条件でフィルタリングして、
形式を選択して貼り付けで演算のところをごにょごにょすればいいんじゃない?
187 :
183 :2014/02/27(木) 09:57:47.08
みなさんいろいろありがとうございます。 教えていただいたリンクから探ってみます。
マクロ+ショートカットキー+マウスにボタン割り当てか? 大掛かりだのう
簡単でわかりやすいインターフェースは、作ってみると大抵大がかりで面倒な処理になる
190 :
181 :2014/02/27(木) 19:26:50.73
>>182 リンクだけ貼られると怖くてクリックできませんw
言葉で表現してください。
192 :
181 :2014/02/27(木) 20:06:19.31
>>191 アンインスコのやり方は知っています。
XPマシンからアンインスコし、Win7マシンに再インスコする手順が知りたいんです。
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 セルの書式設定の表示形式からユーザー定義を選ぶと、 数字の前や後ろに同セル内で単位をつけることができますが、 (例:10個の「個」、3本の「本」、110円の「円」など) これを「条件付き書式」の「条件を満たした後のスタイル」でも できないでしょうか? 自分でいろいろ試してみたところ、 フォントサイズや色や太字は「条件を満たした後」のスタイルに 反映できたんですが、表示形式のユーザー定義だけは 反映されないっぽいんです 操作が間違ってるのでしょうか? それともできない仕様なんでしょうか? とりあえず、20セルほど離れたセルにある条件(式、 さらに別のセルを見てAかBか決める)を満たしたら 手入力用セルに「10」と入力したら「10A」 満たさなかったら「10B」と表示したいのですが… ちなみに印刷前提の表で、印刷幅がぎりぎりで 「このセルの幅を減らしてAB表示用の列を挿入」ってのは ちょっと難しい状況です よろしくお願いします
1000より大きければ、だった
>>193 あー、ごめん思い出した
条件付き書式よりユーザー書式が優先されるんだった。vba使わないとどうにもならんよこれ
条件付き書式を使いたければユーザー書式を解除するしかない
198 :
名無しさん@そうだ選挙にいこう :2014/02/27(木) 21:46:25.61
シート1 A1 B列 C列 田中 初雄 5 松本 泰男 4 山田 孝雄 3 シート2 A1 B列 C列 松本 泰男 10 田中 初雄 9 山田 孝雄 4 シート2の松本泰男さんの値10がシートAの松本泰男さんのデータから比べて どれだけ増えたかを二つのシートを使って比較してD列に表示したいのですが 計算式をご教授ください もちろんデータは降順なので同じ列行にあるとは限らないです
田中 初雄 5 田中初雄 10 5 松本 泰男 4 松本泰男 山田 孝雄 3 山田孝雄 D列は結合 E1=INDEX(Sheet2!C1,MATCH(Sheet1!D1,D:D,0)) F1=E1-C1
200 :
193 :2014/02/28(金) 01:37:21.12
>>194-197 ありがとうございました
別の方法を探してみます
ぎりぎりのレイアウトをなんとかして無理矢理変更するとか
他のアプローチで似たような表示結果を実装するとか
がんばってみます
VBAは不勉強もあるのですが、それ以前に
Excel2010の人が、他人の作ったVBA使用シートを
メールやHTTP、FTP経由で渡されると
危険なファイルからの保護機能とやらで
編集不能にされるらしいので、クレームがついてるんですよ
皆様宜しくお願いいたします EXCEL 2010にてファイル保存の際CSVかテキスト形式しか選択できなくなりました 以前は2003形式とかいろいろ選べていたのですが・・・・ クラシックアドインを使用しています
>>201 ファイルの修復を試してみるとか、別のフォルダに保存してみるとか、新規ブックに内容をコピーしてみるとか
>>200 職場の規模(そのVBAを配布する人数)はどれくらい?
【1 OSの種類 .】 Windows XP
【2 Excelのバージョン 】 Excel 2003 SP3
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 可
参考にしたサイト:
http://okwave.jp/qa/q8367912.html 上記の質問サイトのマクロを参考にして複数行に相対参照のスピンボタンを置くことができたのですが、
対象のセルの値を直接数値入力で変更した場合に、スピンボタンの「現在値」の値が基準になってしまいます
例えば、スピンボタンを押して値を3にした後に直接入力で100に変更しても、
スピンボタンの上を押すと4になってしまいます。
直接入力した値をスピンボタンに反映しつつ、相対スピンボタンの機能を維持する方法を教えて下さい。
よろしくお願いします。
----引用
sub macro1()
with activesheet.shapes(application.caller)
.topleftcell.offset(0, 1) = .oleformat.object.value
end with
end sub
----引用終わり
>>204 めんどくさいので日本語で書きますけど
シートのセレクションチェンジ
スピンボタンの名前を決めておく
決めた名前のシェイプが有れば予め削除する
特定のセルを選択した時
スピンボタンを右側に追加
with
決めておいた名前を付ける
MAXとMINを設定
現在値に選択したセルの値
リンクセルを選択したセル
END with
じゃダメなの?
>>206 >>205 だけど、1分ぐらい考えたけどそれをコードに起こすのは無理だった。
せめてコードで答えてあげて欲しい。
スピンボタンをコピペで増殖は出来ないけど、 要求される挙動は満たしてると思う。 フォームコントロールじゃなくてアクティブXのほうのスピンボタンで チェンジイベントじゃなくスピンアップとスピンダウンを使ったコード。 スピンボタンを増やしたときはコードの名前とコード中の "SpinButton1"の所を"SpinButton2"とか対応する値に変更すれば動く Private Sub SpinButton1_spindown() With SpinButton1.TopLeftCell.Offset(0, 1) .Value = .Value - 1 End With End Sub Private Sub SpinButton1_spinup() With SpinButton1.TopLeftCell.Offset(0, 1) .Value = .Value + 1 End With End Sub
>>207 >>203 なんかきたなくなって恥ずかしいけど、
こういうのはどう?ってことです
思ったより長いからいろいろ省略で
あとは範囲とかいじってどうにかならん?
    x = ActiveCell.Row
    y = ActiveCell.Column
    j = ActiveCell.Value
    x1 = Range(Cells(1, 1), Cells(x, y)).Height
    y1 = Range(Cells(1, 1), Cells(x, y)).Width
    hei = x1 / x
    x2 = hei * (x - 1)
    For Each objShp In ActiveSheet.Shapes
        If objShp.Name = "Spiner1" Then
            ActiveSheet.Shapes.Range(Array("Spiner1")).Delete
        End If
    Next
    If x >= 3 And x <= 65536 And y = 2 Then
        With ActiveSheet.Spinners.Add(y1, x2, 13.5, 27)
            .Value = j
            .LinkedCell = Cells(x, y).Address
            .Name = "Spiner1"
        End With
    End If
あーほらめんどくさくなったー俺がもしもしだから悪いんだ
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 分岐後、再び合流があるような樹形図を作成したいのですが調べたところ、 ズマートアートでは作成できないとのことでした。 excelの他の機能でこのような樹形図は作成可能でしょうか。
213 :
193 :2014/03/02(日) 02:26:44.31
【1 OSの種類 .】 WindowsXP〜8
【2 Excelのバージョン 】 Excel○○←むしろバージョンを知りたい
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
193です
先日は
>>194-197 の皆さんにお答えいただき本当にありがとうございました
使用するExcelをExcel2010に変えて追加で操作したら、とても簡単に定義しなおせました
そこで追加質問なんですが、.xlsで上書き保存する際、
「旧いバージョンのEXCELではこの条件付き書式を使えません」とエラーが出ます
使えないのバージョンは一体「Excel何年」までで、
使えるのは「Excel何年」からなのでしょうか?
自分以外も使うシートで、旧い人は2003のままだったり、
最悪97とかの人も自分の作った.xlsシートを使ってるので、
「ユーザー定義を指定した条件付き書式」が
「この年のExcelまでは使えるぞ」って限界点を知りたいのですが…
よろしくお願いします
>>213 古い 95、97、2000、XP(2002)、2003
新しい 2007、2010、2013
>>213 条件付き書式 エクセル 仕様 旧バージョン
辺りでぐぐったら出てくるっぽい
リンク先は読んで兄
216 :
193 :2014/03/02(日) 02:57:02.00
>>214-215 ありがとうございました
いい検索ワードが本気で思いつかず、何度も見当はずれな検索ワードと検索結果になったので
思わず質問してしまいました
217 :
名無しさん@そうだ選挙にいこう :2014/03/02(日) 10:12:49.99
EXCEL2007の質問です。 マクロを実行しようとすると、 「セキュリティ設定でマクロが無効にされました〜」のメッセージが出ます。 勝手にマクロを無効にしないようにするには、どう設定したら良いのでしょうか? 「すべてのマクロを有効にする」はチェック済みです。
219 :
217 :2014/03/02(日) 11:26:16.32
220 :
名無しさん@そうだ選挙にいこう :2014/03/02(日) 12:45:49.12
>>221 素朴な疑問なんですけど、マイナス数値の表示方法のことを言っていますか?
>>221 書式設定は
プラスの値、マイナスの値、零、文字列
を設定できるよ。具体的にはセミコロンで区切る
文字の色は[赤]なんかでしてもできる
書式設定 マイナス 文字列 エクセル
辺りでググれば設定の仕方も出てくるだろう
>>222 >>223 ありがとうございます。
何とわかりにくい設定でしょうか書式なので色分けの意味がわからないと
マイナスの記号がついている項目は強制的にマイナス表示に変換しプラスは正数のみを扱う意味かと思ったりしました。
マイナス符号がつかなかったら困りますのでまた設定やり直しだ。。
>>224 ×わかりにくい設定
○あなたの理解力が低い
プログラムの仕様を柔軟に覚えるのもまた、頭の良さです。
非難する前にしっかり覚える癖をつけて下さい。
でなければ誰もが使いやすいと思えるプログラムを一から作りましょう。
すいません質問なんですが 一つのセル内に複数行を入力したいのですが セルをクリックした時にそれが全て表示されるようにしたいのです (ポップアップがありプルダウンの様に表示させたい) 普段は一行だけ見えていればいい状態です こんな感じにしたいです aaaaaaaaaaaaaaaaaaaaaa▼←これがクリックしていない状態 aaaaaaaaaaaaaaaaaaaaaa▼←これがクリックした時 bbbbbbbbbbbbbbbbbbbb cccccccccccccccccccccc dddddddddddddddddddd 入力規制ではないです いろいろ調べたのですが見つからなかったのでよろしくお願いします。
>>226 コメント
VBAを使えば実装できるけどちょーめんどくさい
・テキストボックス辺りをセル内容とリンクさせ、セルをクリックした時にvisibleをtrue/false切り替える感じ
>>227 VBAですか・・・
なんとかやりたいんだけどがんばるしかないかな
もしよろしければ教えてほしいのですが・・・
230 :
名無しさん@そうだ選挙にいこう :2014/03/03(月) 08:20:06.46
231 :
230 :2014/03/03(月) 09:57:37.24
>>226 書いてみた
実行したいシートのモジュールに以下のコードを貼り付けたら動くと思う。
Private Sub Worksheet_Change(ByVal Target As Range) 'ワークシートが書き換えられた時にこのマクロが実行される
With Target
If .Find(Chr(10)) Is Nothing Then 'もし"セルの内容"に改行の文字コード(chr(10))が含まれていなければ
.ClearComments 'コメントを削除
Exit Sub '処理終了
End If
'"セルの内容"に改行が含まれていたときだけこの先の処理を行う
If .Comment Is Nothing Then 'もしコメントが無ければ
.AddComment (.Value) '"セルの内容"をコメントとして新規に追加する
Else 'すでにコメントが存在していたら、
.Comment.Text .Value 'コメントを"セルの内容"に書き換える
End If
.Comment.Shape.TextFrame.AutoSize = True 'コメントサイズの自動調整を有効にする
.Comment.Visible = False 'コメントはマウスがセルの上に来たときだけ表示する
End With
End Sub
>>231 わざわざ書いていただけるなんて・・・
ありがとうございます
VBA自体の使い方分からないので少し調べてきます
また後で来ます
233 :
230 :2014/03/03(月) 11:32:01.14
>>232 今更ながらだけど、
>>231 のコードだと複数のセルを同時に書き換えるとエラーが出ることに気がついた
(たとえば複数のセルをコピペするとエラーが出る。)
With Target
の次の行に
If .Count > 1 Then Exit Sub'もしターゲット(書き換えられたセル)の個数が1以上なら処理を終了
てのを追加すると複数行を一度に操作しても大丈夫になった
234 :
230 :2014/03/03(月) 11:37:01.75
ごめん
細かいことだけど
>>233 は説明が間違ってた
判定条件は「1以上なら終了」じゃなくて「1より大きいなら終了」です
(コード自体は問題ないと思う)
235 :
230 :2014/03/03(月) 16:37:55.86
>>231 、
>>233 のコードにも
他のシートから「コメントの入っていない改行を持つセル」を
コピーした場合などにコメントが作成されないという不具合があった
これはつまり
>>233 でほどこした
「複数範囲のセルは処理をしない」というアルゴリズムによるものなので
複数範囲のセルが書き換えられた場合には
その中のセルを一個ずつ個別に処理をするという方法に変更しました
前回同様シートモジュールにコピペすれば動きます
あと、読みづらくなるのでコード中の解説は削除しました
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
For Each c In Target.Cells
With c
If .Find(Chr(10)) Is Nothing Then
.ClearComments
Exit Sub
End If
If .Comment Is Nothing Then
.AddComment .Value
Else
.Comment.Text .Value
End If
.Comment.Shape.TextFrame.AutoSize = True
.Comment.Visible = False
End With
Next c
End Sub
236 :
230 :2014/03/03(月) 18:29:03.44
あぁ、まだ間違ってた……orz Exit Subが残ってるけど、これじゃ正常に動かんね Private Sub Worksheet_Change(ByVal Target As Range) Dim c As Range For Each c In Target.Cells With c If .Find(Chr(10)) Is Nothing Then .ClearComments Else If .Comment Is Nothing Then .AddComment .Value Else .Comment.Text .Value End If .Comment.Shape.TextFrame.AutoSize = True .Comment.Visible = False End If End With Next c End Sub
なんか微笑ましいな がんばれw
238 :
230 :2014/03/04(火) 00:24:45.95
>>237 いや、さすがにもう大丈夫だと思う。
てか、俺が気付いてないだけかも知れんけど。
なんかおかしい所あったら誰か教えてください。
ここまでしていただいたのに使い方が分かりません・・ まずツールからVBE起動 次にプロジェクトからシート選択してSheat(コード)に上のやつ記入 sub/ユーザーフォームを実行であってますよね? ここからどうすれば良いのでしょう・・・ 自分なりに調べたのですがどうもできてるかわからないので すいませんおねがいします
>>239 それすら調べてもわからないようならもうあきらめたほうがいい
今後も同じように聞きまくることになる
241 :
230 :2014/03/04(火) 08:01:50.43
>>239 >次にプロジェクトからシート選択してSheat(コード)に上のやつ記入
>sub/ユーザーフォームを実行であってますよね?
コード貼ったら(記入したら)それで終わりだよ
あとはマクロが有効になってりゃ
ワークシートのチェンジイベントってのを検出してマクロが自動的に動作する
(セキュリティの設定についてはエクセルのバージョンによっても
違うんで自力で調べてくれ)
ところでさ、マクロが分かるかどうかとか
こちらの回答を理解できるかどうかとか以前に
そもそものところで質問テンプレ使ってないよね?
今更ながら言うけど
質問するときには自分が使ってるエクセルのバージョンぐらいは
最低限知らせるべきだよ
まぁテンプレどおりに書いてくれるのが一番だけど。
エクセルのバージョンによって使える機能が変わるから
こっちが一生懸命答えても役に立たない回答になる可能性もある。
特に2003以前と2007以降ではガラッと変わってるから違いを気にしないといけない。
かくいう俺は未だに2000使ってるから
最新の機能とか使えないしそういう質問には答えられない。
>>241 ごもっともで返す言葉もないです・・・
2011のver14.3.9を使っています
もう少しがんばってみます
243 :
名無しさん@そうだ選挙にいこう :2014/03/04(火) 09:16:10.94
めげずにやってるから ものになるんじゃないかと思うよ。 俺なんか途中で放り出す だからいつも中途半端
【1 OSの種類 .】 Windows7 home 32bit 【2 Excelのバージョン 】 Excel2013 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 満年齢を出したいのでdatedif関数を使用しています。 =datedif(a1,today(),"y") と、このように記入してA1セルに生年月日を入力すると、正常に計算されていますが、 他セルに生年月日を入れたくないので、他セルを経由せずに直接生年月日を記入し、 =dateif(s45.11.24,today(),"y") というような表記をすると結果がすべて114になってしまいます。 他のセルに生年月日を入力せずに1セルの中だけで満年齢を計算し表示させるにはどのようにすればよいでしょうか?
>>244 =DATEDIF(DATEVALUE("s45.11.24"),TODAY(),"y")
246 :
244 :2014/03/04(火) 16:39:49.28
>>245 なるほど!数値に直すのを忘れていました。
ありがとうございました。
datedifに時刻まで指定できればいいね。
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 少々 【4 VBAでの回答の可否】 可 A4セルを基点にデータを取り込んだとき、データ件数を得るには、 @ForまたはDoでA列のセルを順にカウントする AA列の最下行-3で算出する これら以外に、簡単に得る方法があれば教えてください。
COUNTA()
連続してデータが入ってるなら 最終行の番号-1でええやん
250は先頭行がタイトルの場合ね。 データのみなら最終行の番号でおk
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 ファイル名_201403_マスター.xls ファイル名_201403_A.xls ファイル名_201403_B.xls ファイル名_201403_C.xls のようなファイルがあります。これらのA〜Cブックの「入力」シートA1:BN40から マスターの「出力」シートに、上から順にデータを参照またはコピーしたいと思います。 ファイル名のアンダーバーに囲まれた日付部分が可変、その他は固定です。 可変のためINDIRECTを使いたいところですが、それだと各ファイルを開かないといけません。 VBAで開かずにコピーする方法を探したのですが、多くは同一フォルダのファイルを 全て読み込むものです。不要なファイルも同一フォルダにあるため 決めうちで読み込みたいのですが、どのように記述すれば希望の動作になるでしょうか?
全部読み込んでも、どうせループで1ファイルずつ処理するんだろうから そこで条件分岐して目的のファイル名だけ処理するよあにしたら?
Windows7,Excel2010です xlsの頃のファイルを引き継いだのですがいろいろと変えたいので2010で新規のブックにコピペしました するとフォント選択でMSなどが付かないただの「明朝」と表示されています フォント一覧に「明朝」というのはでてこないんですがこの場合どの明朝を使ってるのかわかりませんでしょうか?
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2000or2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 複数条件に対し、4つの答えのうちいずれかを出すような式を求めています。 式はA1セルに入れ、B1セルを参照して答えを出します。 条件は、 ・B列の参照セルが「上のセルの値と違う」 かつ 「下のセルの値と違う」場合に 隣のA列のセルに「2111」と表示 ・B列の参照セルが「上のセルの値と違う」 かつ 「下のセルの値と同じ」場合に 隣のA列のセルに「2110」と表示 ・B列の参照セルが「上のセルの値と同じ」 かつ 「下のセルの値と同じ」場合に 隣のA列のセルに「2100」と表示 ・B列の参照セルが「上のセルの値と同じ」 かつ 「下のセルの値と違う」場合に 隣のA列のセルに「2101」と表示 です。 補記すると、B列には日付が1セル以降ずっと入り、A列では、その日付は1行のみなのか、 複数行あってその初めなのか、中間なのか、終わりなのかを 1行ごとに判断させて表示させたいという内容です。 よろしくお願いします。
>>258 A1から始まる場合、A2の式をこうして
=IF(B2=B3,0,1)+IF(B1=B2,0,10)+2100
後は下にオートフィル
上または下の行のデータが無いので、
A1(先頭行)と最下行はこれでは出せないけど
そこはなんとかして
おおー、すごい。表示を数式と考えるとは思いもつきませんでした 別アプリにもっていくデータだったので、さっきから手打ちの判断ミスでエラーを出され続けていましたが、一気にただしいデータにできました 助かりました。ありがとうございます
261 :
名無しさん@そうだ選挙にいこう :2014/03/05(水) 14:06:25.02
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 現在 A1セルに書式なしで24(和暦。平成24年のこと。平成以外の元号はない) A2セルに書式なしで5(5月のこと。24年5月)と入力されています。 A3セルに平成26年3月1日時点での満年齢(これだと1)を出したいのですが、 (生まれた日付は元データにないので全部1日として考える) 生年月が書式なしで、しかも別のセルに入っている場合 どうしたらいいのかわからなくて困っています。 数千件、その形式で入力されていて途方に暮れています。助けてください。
>>261 =DATEDIF("H"&A1&"/"&B1&"/1","H26/3/1","y")
間違えた A3に =DATEDIF("H"&A1&"/"&A2&"/1","H26/3/1","y")
関数とマクロとピポットテーブル、どれから覚えれば仕事に役立ちますか。
仕事による ピボットはどうせすぐに覚えれるから最優先 覚えたら関数 マクロは使えない環境だったら意味が無いので後回し
267 :
253 :2014/03/05(水) 19:20:59.88
>>266 ありがとうございます。
スーパーとかで
・膨大な商品数
・その売り上げ
・売れた個数
・場合によっては店舗別で分析したい
これをバイトのレベルで作成・更新する、つまり1000行とか膨大なセルを
一気に処理したいカンジです。
関数はvlookupとか覚えました。
ピポットは取っつきやすいとのことなので、簡単なテーブルから作成してみます。
>>267 fileがstringになっているのでエラー
まずはファイルを開いて1セル移す、というところから初めてみては
>>268 トランザクション(売上データ)によってくる。
分析に必要なものがなければ商品マスタが欲しくなる。
取扱商品をエクセルにインポートできる環境でないとムリポかも。
>>267 がうpしてるファイルだけど、
xpモード上のエクセル2000で開こうとしたら
エラーが出てエクセルが終了しちゃって開けない
(マスター.xlsってヤツだけ、他は開ける)
272 :
名無しさん@そうだ選挙にいこう :2014/03/06(木) 15:47:13.29
質問です。 EXCEL2007のVBAでメール送信をしたいのですが、 どうすれば良いのでしょうか?
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 よろしくお願いします。 検索してもよくわからないので、教えてください。 sumproduct 関数の( )内なのですが、 sumproduct(配列1,配列2,配列3,...) という書式と sumproduct(配列1*配列2*配列3*...) という書式があるようなのですが、 どういう違いがあるのでしょうか? よろしくお願いします。
>>269 型の問題ってことでしょうか?Variantにしてもエラーが出るので
型の変更が必要か、本来格納すべきでない所に格納してるってことですか
一応開いて移して閉じては出来てますが、基本的に
アンチョコ見ながらレベルなのでエラーが出ると難しいですね
>>271 他のファイルとの違いはボタンの有無とファイル名取得関数
くらいかと思うのですが、何かしら問題あるのかもしれません
わざわざ開いてくれたのにすみません
277 :
272 :2014/03/06(木) 20:26:51.11
278 :
273 :2014/03/07(金) 00:17:56.84
>>274 ありがとうございます。幾通りもあって参考になりました。
【1 OSの種類 .】 WindowsXP Professional 【2 Excelのバージョン 】 Excel2004 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 原因がエクセルなのかウインドウズなのか判断できないのですが、こちらで質問させていただきます。 会社でエクセルを使用しています。 セルをコピーするために貼り付け先を選択して右クリックして「形式を選択して貼り付け」を選択すると 普通は「すべて・数式・値・・・・」など多くの選択肢が出るはずなのに 10回に1回程度の頻度で「図形・リンク先貼り付け」とかいう、使い物にならない2つの選択肢しか出ないことがあります。 その会社のファイルではオートシェイプや画像の挿入などは一切使用していません。 セルの書式は「数値」で固定されていて書式変更はできないようにしてあります。 自分程度のスキル程度では発生条件がまるでわかりません。 何か解決方法のヒントだけでもいただけないでしょうか。
図は使ってなくても出る文字じゃない? 表も図のリンク先貼り付けはできる。shift押しながらやってるとか
Excel2004ってwindowsで使えるのか
エミュレータでなんとか
それはまぁ、うん。使えることは使えてるんだけどね。
▼━質問テンプレ (必ず使ってね) ━━━ 【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 B1=A1-C1の時はB1にそのまま数値を表示、 B1≠A1-C1の時は数値じゃなくB1に「エラー」と表示させる数式をお願いします。
285 :
284 :2014/03/07(金) 19:50:30.93
失礼、間違えました B1=A1+D1-C1の時はB1にそのまま数値を表示、 B1≠A1+D1-C1の時は数値じゃなくB1に「エラー」と表示させる数式をお願いします。 でお願いします。
windows8 excel2013 VBA可です。 ロ形フレームのような平面フレームモデルの時刻歴変位(x,y変位です)をアニメーションとして作りたいのですが、Excelでできるのでしょうか。またら何か良いソフトはないですか? 静止画を大量に作って動画にしようと思っています。静止画はステップごとの節点変位図です。 節点変位の時刻歴が刻み時間ごとに一行ずつcsvファイルで出力され、その出力結果を節点変位図で表現するために編集 →マクロでやっています その結果をカレイダグラフへ貼り付けると変位図ができる という流れになります。 節点変位図は1ステップ(=1行)ごとに作り、 ステップ数は数万ほどです。 csvファイルを編集するのはExcelのマクロでできています。 しかしカレイダグラフに貼り付けて図を作成するのは手動になります。 数万ステップあるので数万回カレイダグラフに貼り付けるとなると無理です。 Excelでフレームモデルを描画し、その変位図まで出来れば良いのですが、やり方がわかりません。 グラフ化するところまでマクロでできるものなのでしょうか。またはそれに代わる数万円程度以下のソフトはないでしょうか。 数十万や数百万するソフト(midas civil)でアニメーション出力が可能なのですが手が出せません。
289 :
名無しさん@そうだ選挙にいこう :2014/03/08(土) 01:46:48.06
windows8 excel2013 VBA可です。 数式を使わずに検索で複数条件や正規表現を 使うようにすることはできますか? また検索の方向を下からにすることはできますか?
>>288 超力技な解決策。一度キリなら以下、無料。手間はかかるので何度もやるならやめたほうがいい
・まず、kmmacroを使う。これはPC操作の手作業をマクロで行うソフト。
左上の指定点を左クリック、alt+fで保存、連番を付け、enter、最初の左クリックに戻る・・・という事ができるソフト。
キーボードマクロとか言われる。
これで一晩作業させれば数万のグラフだか画像だかは容易に作成可能。
使いこなすのにちょっとコツはいるが、慣れればすごく便利。
・画像ビューワでスライドショー。マンガミーヤ当たりが軽くてオススメ。下のアマレココ等と組み合わせる。
・デスクトップを記録するソフト(アマレココ)等でそのデスクトップを記録。
>>289 可能。両方vbaが必須
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 今は2010を使っているのですが、古いバージョン(97とか)だと 空白セルを元に計算式を入れるとエラーになったはずなのですが どのExcelバージョンからエラーが出ずに0扱いしてくれる仕様になったのでしょうか? 例えばA1が空白の時に、B1に=A1+3とか入力するとエラーになった筈で エラー回避のためにわざわざ=if(isnumber(A1),A1+3,3)とした記憶があるのですが
>>291 そんな仕様はしらないけどあるとすれば2000より前だな
まぁなんでもいいんじゃね
>>288 >>290 確かに、Excel自体で実現するより、VBAなり、カーソルマクロ系なり使うなりして
やってる操作自体を自動化する方向で考えた方が早そうだね
>>290 クリックマクロは最後の最後の力技だと思っていますがそれしか残された手段がないのですかね…。
数万のグラフが一つのアニメーションになるのですが、そのアニメーションの数は理想は1000以上です。パソコンが自動でやってくれるなら時間がかかっても構いません。
一つのグラフを手動で作成する場合はテンプレートがあるので、前のデータを消して貼り直すだけでだいたい10秒です
同じ箇所を押し続けるマクロなら良いでしょうが、一回のループごとに少しずつクリック先をずらすようなこともできるものなのでしょうか。
295 :
名無しさん@そうだ選挙にいこう :2014/03/08(土) 13:32:38.81
>>294 WPFを使うと楽だと思う。
画面はWPFのXAMLを使うけど、その際にStoryBoardという
機能を使う。
WPF,Storyboardのキーワードで見るとサンプルが見つかると思う。
WPFはC#じゃなくPowerShellから使うようにするとすごく簡単に
表示までできる。
PowerShellとWPFしていれば5分作業なんだが・・・
要は、PowerShellを言語としてWPFを動かす。
StoryBoardはWPFの一機能。
296 :
名無しさん@そうだ選挙にいこう :2014/03/08(土) 13:43:35.44
静止画があるならSrotyBoardもいらないな。 WPF,静止画,アニメーションで検索すればサンプルあると思う。 これを動かす(WPF)を動かすのにC#やPowerShellを使う。 PowerShellはWin7以上はWindows必須ソフトなのでついてる (アクセサリーフォルダーの中)、XPはアップデートでインストール できる。 ここはExcelスレッドなんで、ここまでにしときます。
ありがとうございます。 Excelのデータからカレイダグラフで静止画を自動で作成するのにwpfというものをpowershellを利用して動かすという認識で良いですか? そしてその流れでアニメーションも作れるという事でしょうか
>>297 今迄の情報で、膨大なグラフの静止画の作成っていう工程と、
グラフの静止画をアニメーション風に連続で表示していくと解釈したけど合ってる?
もし合ってるなら、
グラフの静止画を作成する方法は幾通りも有ると思う
カーソルマクロなりpowershellなり。
それから作った静止画を連続で表示するだけなら、
VBAでも全然可能だし、
まあ結局後は好みかなーと思う
>>298 はい。その通りです。教えていただいたもので勉強してみます。シミュレーションしてその時々刻々変わる様子を表現したいんです。ド素人でかつ周りの人間も素人なので大量の静止画によるアニメーションなら出来るかなと思って質問をしました。
>>299 カレイダグラフへの操作の自動化APIも駆使したらVBAで出来ちゃうんだけどね
そこは専門のソフトを使えるならその方が楽だろうと思う
>>300 apiというのを駆使したらVBAで書けるのでしょうか。シミュレーションプログラムとセットでならシミュレーション結果を図に出来るソフトはありますが、そういった専門のソフトというのは数十万〜百万するので不可能なのです。
>>301 ごめん言い方が悪かった
csvからカレイダグラフへ貼り付け〜グラフの静止画像保存を数万回という作業
⇒VBAでも、PCのAPIを呼び出せば可能だけど、構文を今から勉強するのも大変そうだから
カーソルマクロのソフト等の、そういう自動化に特化した専門のソフトでやった方が簡単だと思う
静止画を連続で表示するだけなら、VBAでの実現は簡単
っていう話
htmlで保存するとテキストとルビが入り交じって異様に読みにくいので、 ルビを一括で削除してしまいたいけど、そういうことはできますか
多分出来る どのページ?
なんか即答してるけど、htmlで保存してそのソースを見たことあるの?
>>306 だから”多分”できるって言ってるじゃないか
何にしろ見なきゃわからんが
ワークシートをhtmlで保存したいって話じゃないの?
「ページ」とか言ってる時点で、たぶん
>>304 は勘違いしてる
310 :
名無しさん@そうだ選挙にいこう :2014/03/10(月) 15:23:22.57
質問です(Windows7,EXCEL2007,VBA) あるセルに、ホームページをコピー&貼り付け(値)したデータ(文字列)が入っているのですが、 この中に、見た目はスペースだけど、コードが0xC2A0の文字列が含まれています(位置不定)。 この0xC2A0の文字列を削除するには、どうすれば良いのでしょうか?
311 :
310 :2014/03/10(月) 15:24:30.27
↑補足 削除はVBAで行いたいです。
>>310 これでいける?
あんまり文字コードには自信なし
Sub Macro1()
Range("A1").Select
Cells.Replace What:=Chr(49824), Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub
313 :
名無しさん@そうだ選挙にいこう :2014/03/10(月) 17:25:39.78
Webの表をExcelに貼り付けたあと、変な書式もいっしょにコピペされてうざいです。
たとえばココ(
http://baseball.yahoo.co.jp/npbopen/standings/ )
勝敗表をExcelに貼り付けてください。
みなさんも必ず貼り付けてどうなるか確認してくださいよ!
みんなのテレビではどうなるかわかりませんが
自分のところではある行が太くなってるし、青で下線のハイパーリンクができてるし、左上の6セルは合体してるし、
列のタイトルはそれぞれ3セルも使ってるし(ここは1セルですますべき)、そのあと編集しずらいです。
他のサイトでは罫線もコピペされたり、「、(コンマ)」区切りの数値が文字列になってることもあるし、「230円」と「円」までくっついてると数値計算できないし、
その他いろいろここでは述べていないさまざまな苦労を経験します。
そこで質問です。
一般にWebから表をコピペしてExcelに貼り付けたあと
きちんとデータ解析しやすくするためのコツ群を教えてください。
>>313 Excelにコピペした直後は全体が選択されている状態なので、まずセルの結合を解除して
もう一度新規シートに値貼り付けすれば書式が全部消えて再利用しやすくなる
あとはケースバイケース
単位は手作業で削除するしかないけど、同じようなページを使うことが多いなら
一連の手順をマクロにしておくといい
chrって2バイト文字いけるの?
>>312 素直に16進で&HC2A0って書けばいいんだよ
318 :
名無しさん@そうだ選挙にいこう :2014/03/10(月) 18:13:31.36
>>313 2010で貼り付け時に、「貼り付け先の書式に合わせる」を
選ぶと、なんも問題なく張り付くよ。
以前は俺も
>>314 に近いことやってたけど。このリンク先のデータなら
一発でOkだった。
webからコピペしてきた文章に、たまに入ってるスペースモドキの文字はコード00A0じゃないかなあ まあ色々あるんだろうけど、圧倒的に00A0が多い気がする
たぶんここのウォッチャーなら大丈夫だとは思うけど WEBからOfficeに貼り付ける前にマクロのセキュリティーレベルを高くしておこう たまにマクロウィルスがページに埋め込まれていて マクロを許可されたソフトに貼り付けたら想像を絶する悪さをするからね
>>317 ごめん16進数の書き方仏に知らなかったよ。
>>319 すんごいまれだけどlfcrとかもあるぜ。結構ハマった
「試合数」がなんでか縦3セルになるなぁと思ったら「試<br>合<br>数」になってた。これはしかたないな
欲しいのは数字だけだろうし、見出しが3行になるのはどうでもいいんじゃね?
>>318 表組の中にリンクとか画像が埋め込まれてると面倒なんだよね
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 他人様のコードをコピペした経験のみです 【4 VBAでの回答の可否】 不可 10000,100,200,300,空白@,空白A,空白B この並びで、一番左の10000から100→200→300→100→200… のように順番に右の数のループで減算していって、一番左の数が≦0になった時に 100、200、300という数値が何回減算に使われたか(この例で計算すると10000-100*17+200*17+300*17=-200なので各17回) を空白@ABに出してくれるような関数の組み合わせはありませんでしょうか? 説明が分かり辛かったら申し訳ありません。
>>325 A1から横並びとして
E1セル「=ROUNDDOWN(A1/SUM(B1:D1),0)+IF(MOD(A1,SUM(B1:D1))<>0,1,0)」
F1セル「=ROUNDDOWN(A1/SUM(B1:D1),0)+IF(MOD(A1,SUM(B1:D1))-B1>=0,1,0)」
G1セル「=ROUNDDOWN(A1/SUM(B1:D1),0)+IF(MOD(A1,SUM(B1:D1))-SUM(B1:C1)>=0,1,0)」
327 :
325 :2014/03/10(月) 23:46:21.07
≫326 できました、ありがとうございます! ですが仕組みがさっぱり分からないので調べてみようと思います、 詰まったらまた質問させていただけるとありがたいです。
>>327 間違いがあったわ
「<>」と「=>」のところは「>」だけでいいね
329 :
325 :2014/03/11(火) 00:39:27.29
<>が何か不明でしたがそういうことでしたか、了解です。
330 :
310 :2014/03/11(火) 08:05:04.56
>>312 ,317
レスありがとうございます。
別の質問ですが
>>320 >マクロのセキュリティーレベルを高くしておこう
というのは、
具体的には何をすれば良いのでしょうか?
(WebページをEXCELシートに貼付けてVBAで処理する場合)
【1 OSの種類 .】 Windows XP 【2 Excelのバージョン 】 Excel2002 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 Sortメソッドについてなのですが Worksheets("Sheet1").Select Range("A1:F40").Sort 〜 だと機能するのですが Worksheets("Sheet1").Range("A1:F40").Sort 〜 だとエラーになります。 Sortメソッドはシートがセレクトされてないと使えないのでしょうか? 原因や理由などわかれば教えていただきたいです。
>>332 その通り
セレクトメソッドは微妙に制約があるので先にシートを選択する癖をつけると良い
こういうのもダメ
Sub a()
Sheets("sheet1").Activate
Sheets("sheet2").Cells(1, 1).Select
End Sub
>>333 ご回答ありがとうございます。
セルをアクティブにする事とシートをセレクトするのは別ということなんですね。
Sortメソッドを使用する時は先にシートをセレクトするようにします。
335 :
320 :2014/03/11(火) 20:07:36.64
2000みたいな古いOfficeはセキュリティーホールも多いから使わない方がベター
2010や2013だと、WEB上のシートを開く際、電子署名の有無に関わらず
まず保護モードがマクロウィルスを阻止してくれるから保護ビューで見る限りは安心
ただ、そこから編集したりいろいろするには結局許可が必要
>>320 を言ったわりにはサブPCでOffice2000を使ってたりする(笑
たとえアンセキュアな古いOfficeでも、WEB上のCSVやデータを
メモ帳(notepad.exe)やテキストエディタにいったんコピペして
WEBページに埋め込まれた悪意のあるスクリプトを暴き出してから
さらにそれを孫コピーすれば安心っていう裏技はあるものの
ダイレクトに書式設定や関数、マクロ、リンク、グラフなどを取り込めず不便でおすすめはできない
Excel2010からSharePointへ双方向同期(相互データ更新)のテーブルを発行したいのですが、良い方法はありますでしょうか?
【1 OSの種類 .】 Windows8.1 【2 Excelのバージョン 】 Excel2002、2007 【3 VBAが使えるか .】 いいえ(どうしてもVBAでないとできない場合は頑張って調べます) 【4 VBAでの回答の可否】 可 よろしくお願いします。 入力規則のリストで常に下向き三角▼が表示されるようにしたいです。 ぐぐると、そのままでは解決できないからコンボボックスの設置を勧められている ページを見つけ、コンボボックスを使用することにしました。 ですが、コンボボックスで行の指定が上手くできません。 コンボボックス1つ目を設置し、プロパティで LinkedCellをA2、ListFillRangeをA5:A20と指定したら望む通りの表示と動きをしました。 ですが、コンボボックス2つ目を設置し、プロパティで LinkedCellをB2、ListFillRangeをB4:Q4を指定するとすると、B4しか表示されません。 コンボボックス2つ目でB4からQ4が表示されるようにするにはどうすればいいのでしょうか。 ご教授お願い致します。
>>337 無理
データは必ず縦に並べる
別の場所に縦に並べておいて、(どこかの例に=B4、=C4、=D4みたいに縦に数式を入れといて)そこを参照する
339 :
337 :2014/03/12(水) 01:02:36.76
>>338 ご教授とヒントありがとうございます。解決いたしました。
【解決した方法】
1つ目のコンボボックスを
LinkedCellをA2、ListFillRangeをA5:A20と指定し、
2つ目のコンボボックスを
LinkedCellをB2、ListFillRangeをA5:A20と指定。
今回は、ListFillRangeで選択する内容が
1つ目と2つ目のコンボボックスでまったく同じだったので、この方法で解決しました。
大変助かりました。本当にありがとうございました。
コピーの貼り付け時に「コピーまたは移動先のセルの内容を置き換えますか?」と毎回出てくるのが煩わしいです。 出ないようにはできますか?
ピボットテーブルっていつからあったのでしょうか? ご年配の方が働いている会社のシートは集計機能ですませているところが多いように思えるんですが、 昔(windows95時代)は無かったのでしょうか?
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 ボタンを設置しようと思うのですが、 フォームコントロール ActiveXコントロール どちらを選べばいいのでしょうか?
345 :
330 :2014/03/12(水) 15:00:51.68
>>343 どっちでも好きな方を使えばいいと思うけど、ActiveXのが機能が豊富できめ細かい操作やデザインが可能
348 :
名無しさん@そうだ選挙にいこう :2014/03/12(水) 18:29:22.69
よろしくおねがいします。 【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 A1〜A20にランダムに1から6の数字が入っています。 B1にA1〜A20間に1が何個 B2に同く2がいくらあるかを表示したいのですが 関数がわかりません。ご教授お願い致します。
350 :
名無しさん@そうだ選挙にいこう :2014/03/12(水) 18:48:31.61
>>349 大変助かりました。ありがとうございました。
もしあなたが隣の席の人なら抱きついてチューしてますわ。
>>348 数値ならFREQUENCY関数の方がベター
B1:B6に=FREQUENCY(A1:A20,ROW())としてCtrl + Shift + Enterで配列数式にすればok
352だが関数以外ではピボットテーブルが普通
>>341 あったよ
ただアイテム数とかにかなり制限があった
エクセルで質問です。 前の先輩のパソコンを使用しておりましたら、縦のAのラインで、Aのところにマウスをもっていけば、例えば「豊臣」の文字を含むセルを一気に検索ができました。 しかし、新たにエクセルで表を作っていまして、そのシステムが使えません。 どのようにして、A群のセルから、同じ文字列を検索することができるのでしょうか? また、その文字列を含むセルが、何個あるかまでわかると嬉しいです。 どうぞよろしくお願いいたします。
>>358 マウスを持って行くって、矢印を合わせるだけでクリックとかせずに?
だとしたら普通では無理だと思うなあ
そんな機能、聞いたことないし
361 :
名無しさん@そうだ選挙にいこう :2014/03/13(木) 09:13:34.71
>>358 フィルターのことを言っているのかな?
といってもわからないのかな
レイアウト(枠線、項目ごとのセルの色とか)が同じデータが数十個あって、 見た目が悪いので全部直せと言われました。 どうすればいいでしょうか
>>362 左端のシートを選択、右端のシートをshift押しながら選択
これで全部選択できるのでこのまま編集すれば良い
数式を入力すると大変なことになるので気をつけて
>>363 すいません、言い方悪かったです。
「同じデータ」ではなく「同じブック」でした。
テンプレートみたいなブックを作って、
セル全部コピー → 書式だけペースト
で中の数値はそのままでいけそうでした。
おういえす
というかブックが30ファイルくらいあり、それを全部修正するとそれなりの手間がかかります。 セルの色変えるのってそんな大事ですかねw
セルの色を変えないと癌が進行するんです。放置すると死にます。 早くセルの色と癌を治してあげましょう!助けられるのは貴方だけです!
>>366 編集スキルを上げる良いチャンスだね
頑張れ
>>366 ブック30個程度なら手作業でもたいした手間とは思わんけど
メンドクサイならマクロでやればいいじゃん
【1 OSの種類 .】 Windows8.1 【2 Excelのバージョン 】 Excel2013 【3 VBAが使えるか .】 はいえ 【4 VBAでの回答の可否】 可 当番表を作っているのですが○のついているところの列のひとの名前を取得したい 1 2 3 4 5 name1 ○ ○ name2 ○ name3 ○ name4 ○ 結果 1 name1 2 name2 3 name3 4 name4 5 name1 よろしくお願いします。
371 :
370 :2014/03/14(金) 10:54:34.10
すみませんずれました。 1 2 3 4 5 name1 ○ ○ name2 ○ name3 ○ name4 ○ 1 name1 2 name2 3 name3 4 name4 5 name1
matchとindexでググれ
あ、検索範囲が変わるからindirectも追加でググれカス
excel2003-2010です vbaなしで、選択範囲内にある重複データを簡単にリストアップする方法はないでしょうか 範囲は複数列複数行複数箇所です
375 :
370 :2014/03/14(金) 13:33:45.82
>>372 ,373
どうもありがとうございました。
matchとindexとindirectあとisnaをくみあわせてできました。
みなさんMOSなどの資格はお持ちですか?
>>360 COUNTIFは総当たりを何度も繰り返す
FREQUENCYはデータ配列を並べ替えて1回舐めるだけ
>>377 MOS持ってると言ってる人でマトモに使いこなせてる人を見たことがないw
自分は独学で覚えたクチだが普通にマクロ使えるレベル。
あんなもの、インストラクター( がハクつける以外に何か意味あるの?と思ってるが。
>>380 派遣の事務職なんかは資格があるだけで採用率が上がる
男は持っててもしゃーない
資格なんてなんの役にもたたないとか言う奴は大抵その資格をとれない奴 (w はくつけたり、話のネタにしたり、色々使い道はある
>>374 重複してるものだけをリストアップか?
それとも1個のものも含めて種類全部をリストアップか?
種類全部ならピボットテーブルでできる
ピボットテーブルで複数のワークシート範囲から左に空白列、上に空白行(空白じゃなくてもよいが同じタイトルのもの)を含めたデータ範囲を追加して
フィールドから「行」「列」「値」のチェックをすべて外し、そのあと「値」にチェックを付ければOK
個数が必要ならさらに「値」を右下にドラッグすればよい
重複してるものだけをリストアップなら上記のピボットテーブルからフィルタオプションでデータが1個じゃないものを抽出すればよい
Excel2010でピボットテーブルの複数のワークシート範囲がわからなかったらググれ
>>383 ありがとうございます
教えてもらった方法でうまくいきそうです
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 「送料500円(10000円以上無料)」という計算を D1=IF(SUM(A1:C1)>=10000,SUM(A1:C1),SUM(A1:C1)+500) とすると、SUM関数を3回使うことになります。 D1=SUM(A1:C1) E1=IF(D1>=10000,D1,D1+500) とすると、SUM関数は1回で済みますがセルが増えます。 セルを増やさずに、SUM関数を1回で済ませられますか?
>>385 ikkaiha 無理じゃね
ユーザー定義関数でも作れば別だけど、ありゃ一応vbaの範疇か
で、ifの結果が真でも偽でも同じものはifの外に出しておくと少しはまとめれる
D1=SUM(A1:C1)+if(SUM(A1:C1)>=10000,0,500)
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2000 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 斜め罫線と、塗りつぶしを組み合わせて、三角形に塗りつぶしたいのですが どうしたらいいのでしょうか? 例えば、セルに斜め罫線を引いて→/ こっち側は白で→/←こっち側を黒く塗りつぶして 直角三角形にしたいのですが
>>387 無理だ、諦めてくれ
三角形の図形でも使うしか無い
>>388 ありがとうございました
適当にそれっぽく整形してごまかしてみます
デザイン力ではどうしてもPDFに適わないなぁ
PDFは計算ができない分、Excelが必要なんだけど
>>386 ありがとうございました。
セルを増やすことにして、同じものはifの外に出します。
D1=SUM(A1:C1)
E1=D1+IF(D1>=10000,0,500)
391 :
名無しさん@そうだ選挙にいこう :2014/03/16(日) 01:58:42.41
D1=((SUM(A1:C1)<10000)*500)+SUM(A1:C1) だときれいじゃないかな?
その式は俺なら前後逆に書く =SUM(A1:C1)+(SUM(A1:C1)<10000)*500
393 :
名無しさん@そうだ選挙にいこう :2014/03/16(日) 07:48:21.16
おお。
【1 OSの種類 .】 Windows 7 【2 Excelのバージョン 】 Excel 2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 グラフで数値の一部範囲のみを表示させる方法。 イメージとしては円-ドル相場を95〜105円の範囲だけ表示。
縦軸の範囲を設定するだけ
>>395 それだと0円が表示できないんですが…
中間の値を波線で省いて表示したい。
>>396 グラフの中間を省きたいってのはExcelのFAQ
答えは「無理」
グラフ専用のデータを用意したり、図形を重ねてそれっぽく誤魔化すしかない
質問よろしくお願い致します。 行G:Gが空欄である場合を除いてD5:D100に「定期」という文字がある場合F5:F100を計算する、 の式が組み立てられません D5:D100~はSUMIFで組み立てられるのだがG:Gが空欄の場合はカウントしない、を どこにどう組み込むのか。 行Gは入金の日付を入力してありここの入力がない時は値段セルに数値が入っていても 合計から抜く、という式を作りたいのです。 よろしくお願い致します。
>>398 読みにくい
Gは列だ
Gが空白でない
Dが定期
の場合Fを足し算だね
=SUMPRODUCT((D5:D10="定期")*(F5:F10)*(G5:G10<>""))
hanni matigaeta tekito- ni syuseisitene
>>394-397 三四郎とか別のソフトを使ったほうが良い
そしてその画像を貼り付けるとか
>>401 スレチになるけど、そのようなグラフを描けるソフトはどんなのが有りますか?
安くてExcelのデータが使えるもの。
それくらいベクター等で探せばいいだろ グラフ描画 とかでぐぐれや
>>332 それ、Sheet1 以外のモジュールに記述してて
ソートキーでワークシートを指定してないオチだろ?
で、F8中は Sheets1 を見ながらやってたと。
1週間前だったorz
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2000 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 今まで普通に使えていたのですが、おとといから急にファイルを保存する時テンポラリドキュメントに保存したので それを開いて新しい名前を付けて保存してくださいというメッセージがかなりの頻度できるようになりました。 このときは保存できず強制終了し元のファイルは無くなっています。 もともと動作保障はないのですがウィンドウス7のアップデートが原因ですか?どうしたらいいでしょう?
再インストール
さっそくの返事ありがとうございます。 今日再インストールしましたけど同じでした…orz ヘルプのアプリケーションの自動修復はまだやっていませんがどうでしょうか?
>>408 windows7 エクセル2000 保存できない
でぐぐってかたっぱしから試せ
無理なら諦めれ
410 :
408 :2014/03/19(水) 19:00:35.37
>>409 去年の8月にパソコン買い換えてから普通に使えていたのですが・・・
こうなったらエクセル2010をネットで1.5万くらいで買って使おうかとも思っています。
この場合2000で作ったファイルは2010で使えますか?自作のファイルでピッポトテーブル
を使っていますが2000のファイルは2010で読み込めても編集はできないんですかね?
2000のファイル上のデータをコピペで2010に移せますか?
そのまま使える
64ビット版のWindows7proで
WindowsUpdateをついさっきやってみたけど特に更新はなかった。
(自動更新してるんですでに最新の状態だったのだと思う)
うちではこの状態でExcel2000が何の問題もなく普通に使えてるよ
どうやら
>>406 さん固有の問題みたいだね
413 :
名無しさん@そうだ選挙にいこう :2014/03/20(木) 08:47:34.59
>>406 マクロで特別なことをやっていて、上位バージョンに移行できない
とかないかが入り、Excel2000使ってる意味ないよ。
>>413 Excel2000を使ってる意味 = 新しいのを買う金が無い
415 :
名無しさん@そうだ選挙にいこう :2014/03/20(木) 10:14:49.97
まあそういうことなんだろけど。 時間の浪費のほうがデカいよね。 その時間バイトして買ったほうがいいぞ〜。
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2013 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 ユーザーフォーム内の値をグローバル変数を使わずに受け取るにはどうすればいいでしょうか? ユーザーフォームの呼び出し元で UserForm.Show value1 = UserForm.CheckBox1.Value としてみましたがCheckBox1.Valueの初期値が代入されるだけで CheckBox1にチェックしたかどうかの結果は反映されませんでした。
417 :
名無しさん@そうだ選挙にいこう :2014/03/20(木) 11:44:12.93
>>416 そんなアホなことは起こりません。
CheckBox1にチェックしたかどうかの結果が代入されます。
まさか代入してるのがフォームの最初だけじゃないだろうな チェックしたあとで代入するんだぞ
419 :
416 :2014/03/20(木) 12:39:23.71
Unload UserFormとしていたのが原因でした 値を受け取りたい時はUserForm.Hideとしないと行けないのですね
>>419 標準モジュールに
Sub a()
With Userform1
.show
msgbox .Checkbox1 & vbcrlf & .checkbox2
End With
End Sub
って書いて、
ユーザーフォームにチェックボックス2個作って
それぞれのクリックイベントに
Unload Me
と
Me.Hide
を書いてみたけど、
どっちでも値は取得できたよ。
強いて違いをあげると
Hideのときは次にマクロを実行したときに前の値が残ってるけど
UnloadしたときはどっちもFalse(初期値)になってることぐらいだった
無料のexcel onlineでいいんじゃないの?
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2013 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 Dim Path As String Dim Shell As Object Dim Folder As Object Path = "C:\Users" Set Shell = CreateObject("Shell.Application") Set Folder = Shell.NameSpace(Path) このコードを実行するとFolderの値がNothingになってしまいますが 変数の宣言を Dim Folder とするときちんと動作します。このことから上記コードではFolderの変数の型の宣言が間違っているのだと分かりました。 型の宣言をしなければ動作するのでこのままでもいいのですが、Folderの変数の型をきちんと宣言しておきたいです Folderの変数の型は何にするのが適切なのでしょうか?
423 :
422 :2014/03/20(木) 15:42:36.88
すいません。間違えました訂正します Dim Path As String Dim Shell As Object Dim Folder As Object Path = "C:\Users" Set Shell = CreateObject("Shell.Application") Set Folder = Shell.NameSpace(Path) このコードを実行するとFolderの値がNothingになってしまいますが 変数の宣言を Dim Path とするときちんと動作します。このことから上記コードではPathの変数の型の宣言が間違っているのだと分かりました。 型の宣言をしなければ動作するのでこのままでもいいのですが、Pathの変数の型をきちんと宣言しておきたいです Pathの変数の型は何にするのが適切なのでしょうか?
そんな奇怪なことあるのか。見る限りはStringで問題ないけど。 フォルダーも参照設定してないならObject以外に指定しようがないし。 別のところでPathって名前でなんかやらかしてるとか? PathじゃなくてHageでやってみても同じ?
あと「Shell」も「Folder」もVB系の変数名としては危ない。 オブジェクト名と被ってるからおかしなことになりそう。
被ってるってのは頭の事じゃなくて名前ね。
427 :
422 :2014/03/20(木) 16:29:44.78
実際には全ての変数の前にImageSizeと付けてあります 例えば、ImageSizePathのようにです 長くて見づらかったのでこのように変更して書き込みました ですので名前が原因では無いと思います
430 :
422 :2014/03/20(木) 16:41:54.77
>>428 ありがとうございます
MSDNをきっちり読むようにします
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 以下の様なデータがあります 北海道 山田です(本来はもっと長い文章) 北海道 田中です 北海道 田中です 青森 田中です 青森 山田です これを 北海道 山田です 北海道 田中 北海道 です 青森 田中です 青森 山田です B2、B3は列結合をしてもしなくても構いません。 こういう表示をさせるための、オススメの方法はありますか? VBAで作ったらVBAが使えない環境があることが分かり、、グッタリしているところです。
>>431 何を言いたいのか良く分からなかった
人名らしき部分と「です」の部分を判別する際の基準とか
そういうところをもっと丁寧に説明するべきだと思う
433 :
432 :2014/03/20(木) 17:40:42.06
一応、こういう事かと推測したのは
A列の内容が同じで、かつB列の内容も等しい行に対して
何らかの処理によってB列の内容を分割して
条件を満たす範囲の行に割り振るような処理かと考えたんだけど
それで有ってる?
仮にあってるとしても
>>432 で言った点以外にも
例えば
北海道 田中です
が3個以上連続したらどうなるんだろうか?
とかも分からないけど。
>>432 すいません、A列とB列が同じなら、
続く限り一つにまとめたいということです。
CSVで吐き出して他のソフトで処理、というのでもいいです。
何か方法はありませんか?
北海道 山田です
北海道 田中です
北海道 田中です
北海道 田中です
青森 田中です
青森 山田です
北海道 山田です
北海道 田中
北海道 で
北海道 す
青森 田中です
青森 山田です
と言った感じです。
A列はまとめません。上司の命令なのでこれはどうにもなりません。
正解のVBA作ってあるならそのコード載せたほうが早いんじゃない? さっぱりルール分からん
よろしくお願いします。 【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 初歩的な質問すみません。 Book Aに300名ほどの名簿があります。 このAの名簿をBook B(1,500名ほど)と Book C(200名ほど)の名簿と照合し、重複した氏名を抽出したいのです。 また、名簿には住所や金額などが掲載されており、そのデータも反映されるよう抽出するにはどうしたらよいのでしょうか…こまってマス。
↑連投すみません 照合するのは氏名のみです。 Book BとBook Cはそれぞれ抽出します。
>>436 AとBの名簿を1枚のシートにコピペで合体させてピボットテーブルで件数を数える
件数が2以上になった名前は重複と判断できる
同様にAとCでも重複を調べる
最後にVLOOKUPで氏名以外の部分を取り出せばいい
439 :
432 :2014/03/20(木) 18:16:52.58
>>434 俺の推測は大雑把にみれば大体当たってたみたいだけど
B列の分割ルールが未だに分からない
北海道 田中です
が100個続いたらどうなるのよ
1000個続いたら?
10000個続いたら?
分割する区切りはどうやって判断してるの?
なんで「田中」は分けないのに「です」は分けるの?
要するに、B列の内容をどう振り分けるのか、
の規則性についてまだまだ全然説明不足だと思うよ。
>>436 フィルターの詳細設定でいけんじゃないの。
リスト範囲にAのセル範囲、条件範囲にBかCの氏名の列、抽出範囲に氏名やらなんやらのフィールド名書いたセル範囲で。
441 :
名無しさん@そうだ選挙にいこう :2014/03/20(木) 18:30:27.97
>>434 単に、連続した同じものは一行にするというだけのことね。
442 :
名無しさん@そうだ選挙にいこう :2014/03/20(木) 18:51:40.93
vlookupでいいじゃん
444 :
431 :2014/03/20(木) 19:26:50.02
皆さん有難うございます。細かいルールは、ありません。
二列の内、両方が同じならそれを「表示上」一行にまとめれば良いです。
もちろん数が多いので自動で、という条件はつきます。
あと、
北海道 田中です
北海道 田中です
青森 田中です
北海道 田中です
こうなった場合は
北海道 田中
北海道 です
青森 田中です
北海道 田中です
こうなります。別のもの間に挟まれた場合は、一緒にはしません。
>>439 例が悪くてスイマセン、分割では無いのです。
とにかく重複するB列を一つにまとめたいんです。
参考例です。(短いと何が何だかわかりにくいのでちょっと長くしました)
http://www.dotup.org/uploda/www.dotup.org4942704.png
445 :
431 :2014/03/20(木) 19:27:23.46
>>435 今作りました。実際に使ったものもほぼ同じです。
Sub a()
xstart = 0
For i = 1 To 10
If Cells(i, 1) <> Cells(i + 1, 1) Or Cells(i, 2) <> Cells(i + 1, 2) And xstart <> 0 Then
Range(Cells(xstart, 2), Cells(i, 2)).Select
With Selection
.MergeCells = True
End With
End If
If Cells(i, 1) <> Cells(i + 1, 1) Or Cells(i, 2) <> Cells(i + 1, 2) Then
xstart = i + 1
End If
Next
End Sub
vba使わずに元データであるb列を書き換えることがまず無理 「表示上」でいいなら条件付き書式で文字色を白にしたら?
>>445 VBA無しでセルの結合は、1つずつ選択と結合を繰り返すしかないので、あきらめてください
VBAの使える環境にデータを移して、作業してから元の場所に戻すとか
448 :
名無しさん@そうだ選挙にいこう :2014/03/21(金) 07:53:41.98
>>445 CSVに落してよければPowerShellでVBAより簡単にできるよ
csvでセルの結合?
450 :
名無しさん@そうだ選挙にいこう :2014/03/21(金) 18:08:13.43
451 :
名無しさん@そうだ選挙にいこう :2014/03/21(金) 22:35:55.03
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2000 【3 VBAが使えるか .】 わずかに 【4 VBAでの回答の可否】 可 ご教示下さい。 書式設定が"dd"の日付情報が入ったセルと、 書式設定が"00"に数値情報が入ったセルがあったとします。 例として 21・・・(実際には2014/03/21の日付情報) 22・・・(実際には2014/03/22の日付情報) 23・・・(23という数値) 上記のように、書式がミックスされ使い勝手の悪い状態から、 全て表示どおりの数値情報に上書きしたいのですが、 マクロでどのように記述すればよいでしょうか? よろしくお願いします。
452 :
名無しさん@そうだ選挙にいこう :2014/03/21(金) 22:54:40.83
>>451 上書きじゃなく別セルに作るとしてみた。
2013/03/21のセルをA1とすれば
A1: =IF(A1>40000,DAY(A1),A1)
という感じでいかがでしょう。
453 :
名無しさん@そうだ選挙にいこう :2014/03/21(金) 22:55:54.80
>>451 ごめん、マクロという指定でしたか、
シートでの指定を書いちゃいました
454 :
451 :2014/03/21(金) 22:59:19.19
>>452 ご回答頂ありがとうございます。
やはりマクロ処理での上書きは適さない内容ですかね?
結構煩雑な作りにつき、マクロで処理したいのが本音です。
ありがとうございました。
二桁で済む数値か否かで処理出来そうだな
>>451 >452でいけるなら
if selection>40000 then
daysuji = DAY(selection)
selection.NumberFormatLocal = "00"
selection = daysuji
end if
こんなんでいけるんじゃね?
>>451 マクロの記録開始
範囲を選択、コピー、値の貼り付け
マクロの記録停止
458 :
451 :2014/03/21(金) 23:24:26.50
もう既に解決してる話を蒸し返して申し訳ないけど 個人的に書いてみたくてこんなん書いた。 Sub a() Dim c As Range For Each c In ActiveSheet.UsedRange With c If .NumberFormatLocal = "dd" Then .Value = .Text .NumberFormatLocal = "00" End If End With Next c End Sub 最初はString型変数 "txt" も宣言して Sub a() Dim c As Range Dim txt As String For Each c In ActiveSheet.UsedRange With c If .NumberFormatLocal = "dd" Then txt = .Text .NumberFormatLocal = "00" .Value = txt End If End With Next c End Sub とかやったけど、どうせ日付の情報なら txt介さなくても結果変わらんと思ったんで省いた。
a b c d e f g h i j 1: 1 0 0 0 0 0 0 0 0 0 ←条件を満たす行の数値をすべて赤文字に変化 2: 0 0 0 0 0 0 0 0 0 0 条件付き書式でA列(特定の列)の数値が0以上の場合 1の行の文字すべてを赤くなるようにしたいのですが条件付き書式などで設定できますでしょうか? (Excel2003を使用) 基本機能でできない場合はVBAも可能。
461 :
460 :2014/03/22(土) 19:24:05.32
>>460 補足・・
力業で1セルづつ条件付き書式で指定すればできますが
数百行あるデータであるため一括指定もしくは表全体にまとめて指定する方法を探しています。宜しくお願い致します。
>>460 条件付き書式でできる、けど俺なら楽な方(VBA)でやる
>>460 マクロならたったこれだけ
Sub Macro1()
For r = 1 To 500
If Cells(r, 1) > 0 Then Rows(r).Font.Color = vbRed
Next
End Sub
>>460 a b c d e f g h i j
を範囲指定して、=$a1>0 で条件付書式を設定で済む話しでは?
465 :
名無しさん@そうだ選挙にいこう :2014/03/22(土) 22:21:50.29
条件付き書式も Excel2003まではよかったけど Excel2007になってからというものの余計なお世話機能がたくさんつきすぎて訳がわからなくなってしまった。
>>462 >>463 >>464 >範囲指定して、=$a1>0 で条件付書式を設定
なるほどこのように指定出来るのですね、そして複数行はやはりVBAでやるのが良さそうですね。
的確かつわかりやすい回答をどうもありがとうございました。助かりました。
467 :
名無しさん@そうだ選挙にいこう :2014/03/22(土) 23:34:15.29
こんばんは。 こんな状況、たまにでくわすと思うけど皆はどうやってんの? ・様々な人が使用する ・入力にルール性を持たない といった環境でエクセルデータが複数有った場合、 それぞれのファイルで人間が判断すれば、同じ内容であるものの、 ・全半角違い ・スペース有無 ・3とBとBの違い ・その他ぐちゃぐちゃ があって、比較等をしたくとも機能しない状況があるよね? いつもこんなデータはあきらめて向き合いもしないんだけど、 参考までに上手い手段もってりゃ教えて。
条件付き書式を数百行に設定するとブックが重くなりそうだからVBAのがいいと思う
469 :
名無しさん@そうだ選挙にいこう :2014/03/22(土) 23:37:57.72
>>468 やっぱそうか。
結局ゴリゴリ一つずつの条件を書いて、詰めてくしかないのね。
メンドイからどっかにそういったfunctionサンプルとかない?
>>467 そんな都合のいい方法あるわけないじゃん
1) 業務に支障が出そうなら夜中にこっそり置換してデータを直しておく
2) データが毎日どんどん増えるなら、あらゆるケースを想定した検索プログラムを作る
3) 単なる住所録とかなら放置、年に一度ぐらい気の向いた時にざっと重複チェック
うちの会社は全国に支店があって入力する人も何万人もいるんで本当にぐちゃぐちゃ
住所の番地部分なのにゼロとオーを間違えるとか当たり前
だから莫大な資金を投入して検索システムを作った
つまり2番の方法で対処してる
471 :
名無しさん@そうだ選挙にいこう :2014/03/22(土) 23:50:39.44
>>467 根本的には入力しすてむ用意することですね。
472 :
名無しさん@そうだ選挙にいこう :2014/03/22(土) 23:50:50.99
>>470 住所関連はまさにこのネタで賑わうよな。
住所じゃないけど例えばこんなレベルの差とかどう?
・ブックス情報:目は1分でよくなる!第1版今野清志在庫あり1,365円(税込)
・ブックス情報;目は1分でよくなる!第@版 今野清志-在庫有り1365円(税込み)
基情報崩れても、比較で合致を見たいだけなら
・スペース → 削除
・半角英数カナ → 全角
・:;-()+*[{}]<>&類 → 削除
・@T@類 → 1(存在する数字分全て)
こんなところかな。
・ありと有り
・税込と税込み
なんかは入力違いの数だけ条件ありそうだから諦める部分。
・oと0
の補正なんてリスク高いわ。
473 :
名無しさん@そうだ選挙にいこう :2014/03/22(土) 23:53:17.52
>>471 だなー。
ちなみに住所で思い出したけど、良くある住所2情報(番地以下マンションとか)で
文字数制限引っかかって登録できないフォームあったわ。
自分がフォーマット1から作るならいろいろストイックな条件強いてやるのに。
.netであいまい検索があったような気がするけど、無かったかなぁ
475 :
名無しさん@そうだ選挙にいこう :2014/03/23(日) 00:06:08.47
476 :
名無しさん@そうだ選挙にいこう :2014/03/23(日) 00:06:52.29
hit 1件一生懸命 hit 0件一所懸命 こんなのも余裕であいまい検索な。
477 :
名無しさん@そうだ選挙にいこう :2014/03/23(日) 00:14:48.31
>>474 それがいいでしょね、PowerShellで.netの正規表現つかうのが
一番簡単
>>475 レーベンシュタイン距離・・・かなぁ。昔やったと思ったんだが、違う言語だったかも知れん。スマン
>>472 カッコの種類も全角半角以外にも色々あるし「税込み」と「内税」は同じ意味だし「消費税含む」みたいな表現もあるだろうし
今みたいな時期なら(3月までの価格)みたいな但し書きが付くこともあるし
データベースのフォーマットは誰かが独断でルールを明文化しない限り統一されることはない、ってのが結論
半角マイナスで文字列検索したらひっかからなくて、原因を必死に調べたらユニコードのダッシュで脱力したわ そういうのが最近増えてて地味に困る 諸悪の根源はたいていiPhoneなんだけどな 記号とか入力しても、変換候補の最初にユニコード文字を出しやがる 半角スペースまでわざわざ2バイト文字を入れてくるんだぜ なんの嫌がらせだ
481 :
名無しさん@そうだ選挙にいこう :2014/03/23(日) 01:10:21.86
>>470 データが多い場合は、独自にやるのはあきらめたほうがいい
>>479 のような方法もあるていど有効だけど、あくまである程度
極端な例でいえば100万件(ネットなどではよくある)あったら、
98%ただしくても、2万件は人が目を通す必要がでてくる。
データが大きくなければ、googleやYahooの情報(APIつかって)や、
国土交通省、郵政のデータと突き合わせして、ある程度は綺麗に
できるが、自分でできるかな?
それでも、京都の住所とかは、辞書がないと歯が立たないので、
業者に出した方がいい。
482 :
481 :2014/03/23(日) 01:16:40.10
訂正
誤
>>479 のような方法もあるていど有効だけど、
正
>>478 のような方法もあるていど有効だけど
あくまで住所データに関しての話ね。
住所で一番困るのは、シフトJISコードに存在しない文字が現実にたくさん使われてること ユニコードでほとんどカバーできるようになったけど、そう簡単に既存システムの文字コードなんて変更できない
>>483 おそらくスレチです
テンプレ使って質問するか、よそで質問してください
質問ではあるまい ただの愚痴だ
486 :
名無しさん@そうだ選挙にいこう :2014/03/23(日) 12:58:13.24
とりあえず ・スペース → 削除 ・半角英数カナ → 全角 ・:;-()+*[{}]<>&類 → 削除 ・@T@類 → 1(存在する数字分全て) このあたりをおよそ100条件ゴリゴリ書いたけど、 Aファイルに1万個のデータと、Bファイルに一万個のデータを突合するため、 1件1件上記前処理して、カウントイフで全てに対して記述したらカクカクになったわ。 あいまいさはある程度処理できたけど、総当りチェックって大変なのな。
>>466 複数行なら、複数行選択して条件付き書式設定すればいいだけ
$a1の意味を考えれ
>>486 rangeをvariantな変数に突っ込めば多少マシになる予感
テキストの整形は色々な場面で必要になるけど、ReplaceとIfが何十行も続くんだよな 順番を変えるとダメになったり、整理しようとしたら意外とどれも必要だったり、 なんのために条件を追加したのかわからなくなったり コメントアウトしたIf文がどんどん溜まっていったり もちろんコメントはちゃんと書くんだけど、意外に未来の自分に伝わらない
490 :
名無しさん@そうだ選挙にいこう :2014/03/23(日) 17:27:01.43
>>488 詳しく。
カウントイフもブイルックも1件対多数にしないと重いわ。
多数対多数で総当りチェックの手本みたいなの希望な。
>>483 どっかの銀行が、
「SEが馬鹿だから、システム更新したら外字管理できないようになったので、
使える文字に客側で勝手に変更して登録し直してね♪」
ってなかったっけ?
TRONをつぶすからこういうことになるんだよ。
「形が似ているから同じ漢字でまとめちゃっていいよね?
どうせ俺ら使わないし♪」ってやつらに文化を壊されている。
>>489 Select case じゃだめなのか?
君がくれたもの
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2013 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 ご教授ください。 例えば、りんごとバナナのどちらが好きかというアンケートがあって、 りんごのみを回答した人数、バナナのみを回答した人数、両方好きと回答した人数を集計したいのですが、 どのように集計するのが早いでしょうか。 現状は、 鈴木 りんご 佐藤 バナナ 高橋 りんご 高橋 バナナ のようなデータが大量にある状態です。 エクセルで集合の集計を簡単に出す方法を調べても出てこなかったので 質問させていただきました。よろしくお願いします。
(1)りんごの数を集計 (2)バナナの数を集計 (3)名前の重複を消して人数を集計 (1)+(2)-(3)で両方好きの人数が出る→(4)とする (1)-(4)でりんごだけ好きの人数が出る
項目は何個ぐらいあるのか 2個なら楽勝ね
やるまでもなく、バナナのほうが人気あるだろ。
ピボットテーブルで
クイズ100人に聞きました
みかん好きの立場は…
502 :
名無しさん@そうだ選挙にいこう :2014/03/24(月) 00:07:21.68
>>498 俺リンゴはそこそこ好きだけど
バナナは大嫌い
>>496 >名前の重複を消して
大量のデータだと同姓同名も有るんじゃないの
>>494 まず
>どちらが好きか?
の設問ならば複数回答出来なくしておけよな
506 :
名無しさん@そうだ選挙にいこう :2014/03/24(月) 13:13:16.31
>>504 そういう意味ちゃないだろう
同姓だらけになっちゃうんじゃないか?
もしみんな、気に入って結婚しちゃったら
同じ苗字だらけで大変だぞ!
要は名前なんていう重複しやすいものを データを識別する材料にしたらダメだって事だろ IDなり何なりの一意な識別子を用意しとけって話
知らんがな…
そこでキラキラネームですよ
510 :
名無しさん@そうだ選挙にいこう :2014/03/24(月) 22:05:10.92
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】いいえ 【4 VBAでの回答の可否】 可 100問くらいある4択問題から50問(重複不可)をランダムで抜き出して答えさせるような方法はありますか? 採点も含めた方法ならベストです
縦に100個並べて indirect("a"&rand()*100,0) みたいな感じで
それだと重複するし、たとえばセルに解答を書き込むと、その瞬間に問題が入れ替わる VBAかなあ
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】いいえ 【4 VBAでの回答の可否】 否 J5が初期状態無記入で、シート利用者が記入 CM119=if(J5="","",1) CM120=if(J5="","",5) CM121=if(J5="","",10)・・・と参照するセルがあって、 AZ26=CM122 AZ28=CM120 AZ30=CM119 AZ32=CM124 という、セルがあるんですが 何故かAZ30だけ「矛盾した数式」エラーになります ただCM119をそのまま参照してるだけのAZ30がエラーになるのか、 何故同じことをしているAZ26、28、32がエラーにならないのか、 不思議で仕方ありません どうしてただ他セルを参照してるだけでエラーが出るのでしょうか? どうしていくつもある同じ数式でたった1つだけエラーが出るのでしょうか? 「エラーを無視」ではない根本的対処はないでしょうか?
>>514 それはExcel2010のおせっかい機能だから、エラー無視でいいんだよ
並んでる数式の法則を勝手に推測して、「122、120の次は118だろ?間違えてるよ」って言ってるだけ
>>515 ありがとうございます
さっそく「エラー無視」で対処します
・・・ところで、「エラー無視」って
他人が他のPCでこのシートを開いた時も
反映されるんでしたっけ?
一応、他の人が使うのが前提のシートなので
他人か本人かを判断する機能はありません
>>516 エラーを無視するかどうかの情報はブックごとに記憶されてるから
そのブックを他のPCで開いても同様に無視されてる
>>517 そういう持って回った言い方は分かりにくい
収支項目 A B C ----------------------- 3 前年度繰越金 326,115 4 会費 511,000 5 市活性化助成金 380,000 6 市補助金 45,000 7 公民館使用料 51,000 ※C列には生の数値ではなく =IF(M9="",0,SUMIF($J$9:$J$201,M9,$F$9:$F$201)) のような関数が入っています。 「収支項目シート」を検索して収支項目シートのC列の数値をN列にコピーしたいのですが、 VLOOKUPを使って下のようにやってもうまくいきません。 C列は生のデータでなければいけないのでしょうか。 L M N ----------------------- 3 前年度繰越金 = VLOOKUP(M3,収支項目!$B$3:$C$7,2) 4 会費 5 市活性化助成金 6 市補助金 7 公民館使用料
>>520 =VLOOKUP(M3,$B$3:$C$7,2,false)
か
=VLOOKUP(M3,$B$3:$C$7,2,0)
原因はvlookupでぐぐって引数の意味を調べて
522 :
520 :2014/03/25(火) 13:30:55.86
ありがとうございました。
>>520 俺ならB3:B7に「科目」、C3:C7に「金額」の『名前』をつけて
N3=INDEX(金額,MATCH(M3,科目,0),1)とするなぁ…。
つか、なんでBとMが完全一致してるのにわざわざ参照使うの?
B3とM3が変動しないなら、N3=C3のべた打ちでいいじゃん。
>>523 名前は負の遺産になるから、使わないようにしてるんだが、良いことあるの?
条件付き書式で、別シート参照するのにindirectじゃ重い時くらいしか使ったことない
>>523 > つか、なんでBとMが完全一致してるのにわざわざ参照使うの?
> B3とM3が変動しないなら、N3=C3のべた打ちでいいじゃん。
いや、確かにそうですね。Excel 使うの14年ぶりなんですよ。つまりExcel2000以来(笑)。
使ってるのはExcel2003ですが解説書はExcel2000のもの。他シートのセルの入力のような
簡単なことが意外と本には載ってないですね。ま、老いた頭を再インストールするつもりで
ボチボチ勉強していきます。
>>524 リストとindirect辺りの組み合わせで、確か名前を定義しないと参照できないってバグが一応あった気がする
それですら使ったことないけど
>>525 他人の付けた名前なんて使いにくいだけ、関数も読みにくくなるだけ
>>525 代々受け継がれてきたようなファイルで、シートをコピーしようとしたときに
既に名前が使われてる云々のエラー見たこと無い?
手動で消そうにも参照が間違ってたり、名前が不正だったり
ファイルを一から作り直してもそのファイルに誰かがシートコピーすると再発売
それそれ エラーで名前かえようとしたのか あ ああ あああ aaa asdf みたいのが数百個とか たまに名前の参照先のブック名シート名が残ってて面白かったりする
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2000 【3 VBAが使えるか .】いいえ 【4 VBAでの回答の可否】 可 選択したセルを順番に処理していく方法をぐぐってFor Eachで解決したのですが For Eachについて調べていたところほとんどのものはFor Nextでも処理できるという事が書いてありました。 上記のような選択したセルを順番に処理していくということもFor Nextでできるのでしょうか? できるのであればどのような書き方になりますか? 例 A1〜A4を選択した状態にしてC1にA1から順番にコピーしていく。(この場合C1は最後04になってよいです。) A B C 1 01 2 02 3 03 4 04
for i=1 to 4 cells(1,3)=cells(i,1) next i
>>534 ご回答ありがとうございます。
現在選択されているセル(つまりA1〜A2の時もあればA2〜A4の時もあり毎回違う)を順番に処理したいので1から4の固定だとこちらの意図と異なってしまうのですが
ご回答の応用で可能ということでしょうか?
>>535 「できる」と「意味がある」は別だな
選択範囲をFor Nextでやるには
For i = Selection.Row To Selection.Row + Selection.Rows.Count -1
(以下略)
みたいに、めんどくさい命令になる
処理する順番を下からに変えたいとか、別な事情がない限りは無意味
537 :
名無しさん@そうだ選挙にいこう :2014/03/27(木) 18:57:31.71
VBAのことでいまいちわからないのですが メソッドの機能を使うにはそのオブジェクトをActiveにしないといけないんですっけ? 妙なところでエラーがよく出てつまづいています
>>537 ものによる
が、君の場合はめんどくさがって標準モジュールに書いてないせいだと思う
エクセルVBAってなんでかforeach使いにくい気がする。 PHP、Cだと便利なんだけど、なんでだろう。 最初から何もかもが配列だからかなぁ
シートを跨ぐ場合は標準モジュールをお奨めしますが 単一の場合はシートモジュールのほうが、良いこともありまする
541 :
537 :2014/03/27(木) 19:50:55.61
>>541 標準モジュール 理由
でぐぐって上から順番に読んでいけばok
543 :
537 :2014/03/27(木) 20:43:01.78
会話にならない
【1 OSの種類 .】 Windowsどれでも 【2 Excelのバージョン 】 Excelどれでも 【3 VBAが使えるか .】 どちらでも 【4 VBAでの回答の可否】 どちらでも Excelは、数式を入れることによって『自動計算』してくれますが、 あまりに複雑すぎたり、引数と計算結果が多岐だったり、 感覚的だったり、アナログすぎるものは当然数式化できません。 こういった数式化できない部分に、注釈を入れたいのですが 『自動計算』の対語は何と書いたらいいんでしょうか? 自分でも、いくつか考えたのですが、どれもしっくり来ません ・このセルは『手計算』して下さい ・このセルは『暗算』して下さい ・このセルは『筆算』した結果を入力して下さい ・このセルは『自分で計算』して下さい 簡潔で、かつ、これだ!と言えるような単語をご教示ください
なんで唐突に日本語クイズ出してんの
>>547 ドレでもいいと思うけど
・このセルは『自分で計算』して下さい
がわかりやすいんじゃない
>>547 複雑すぎたり、引数と計算結果が多岐だったりするのは数式化できるだろ
式を考えるのが面倒だからってサボってんじゃねえよ
「自分で計算する」のだって、その方法がわかってんなら数式化できるし
なんか質問がめちゃくちゃだな
>>550 解が長過ぎてセルに入りきらないとか、解なしが出やすい計算とかあるだろ
なんでもサボりだって決め付けんのはちょっと早計だぞ
>>550 印刷する帳票なんかだと、引数入力ためのセルが3箇所しかないのに4個目の引数が必要で
4個目の引数入力欄をつけると表としての体裁が崩れるので付けれないから自分で計算しろ
・・・なんて事は結構あるよ
554 :
名無しさん@そうだ選挙にいこう :2014/03/28(金) 14:14:03.15
>>551-552 マクロでユーザー定義関数にしちゃうとか
印刷範囲外に非表示で作業セル作るとか
そのままでもやりようはあると思う
>>554 以下のデータから太っているかどうかを判別する式を作れ
エラー表示、ランダム、空白表示などは禁止で、全て正確に出すこと
身長・160、体重・56
身長・171、体重・65
身長・多分160cmくらい?、体重・55kg
身長・162cm、体重・ヒミツ
身長・154cm、体重(未記入)
つまり質問者が困ってるのってこういう類じゃねえの?
>>555 まず「太っている」の判定基準を考えろよ
たとえ人間が考えたって、体重ヒミツなら判断できないだろ
「ヒミツ」なんてふざけた解答が許される条件で、何が何でも肥満かどうか正確に判断しなきゃならない状況ってのが想像できん 単なる遊びなら、それこそランダムでも不都合ないわけだし
>>551 解がなければ「解なし」と表示する数式は作れる
本題に戻そう ようは手で入力する部分の注釈を入れたんだろ? こればっかりは好みの問題もあるからなぁ とりあえず俺はコメントの挿入で『直接入力』としてる それでも気に食わなかったらここよりも文学とか大学受験とかの板だろ
>>555 多分だの無回答は不明でいいだろ
困るか?その程度のものが。
入力規則の入力時メッセージ活用をお勧めした方が このスレらしさも保てるし、どんな入力が必要かユーザに示せるし 本来の目的も達成出来るので良いのでは? 俺なんかコメントを挿入する代わりに入力時メッセージの方を多用するよ 「何かコイツ使いこなしてる感」を出すのが好きだから
めっちゃファジーなアンケートの集計をエクセルでやってくれと頼まれた 筆記式で1000人分、とりあえず人海戦術で入力だけはしたらしいが、これをいったいどうしろと 今日の昼までは、ここのやりとりをなんとなく眺めてたけど、なんか一気に人事じゃなくなったわ こっちは単なる下請けだから、アンケートの方法には口出しできない ちょっと頭を抱えてるところ
Excelで集計するんなら四択とかにしてくんないとなあ
>>562 勝手にカテゴリ分けして対応するか、
その方向性を出して交渉するしかないね
>>562 「ファジー」って久しぶりに聞いたw
VBAでニューラルネットを実装して人工知能で学習させて、
アンケートを集計すればいいんじゃないかな。
現実的には、単語単位で切り出して、出現頻度でランク付けして、
上位の回答を抽出して、
「結果だけをエクセルに貼り付け」
て提出すればいいと思うよ。
集計のアルゴリズムは教えないで。
文句言ってきたら、
「集計の手順を明確にして指示をお願いします。」
っていえばいいんだよ。
そういうところは下請けの分担じゃないし、責任範囲じゃない。
566 :
名無しさん@そうだ選挙にいこう :2014/03/29(土) 10:23:28.52
>>562 今までやったことなくて、手の出し方がわからないなら
下手に受けないほうがいいよ。
相当力かかる。
どうしてもやらざるを得ない、結果は荒くても構わないなら。
集計する品詞決めちゃえ、名詞か動詞に決めちゃって
あとは、同じ意味を別な言い方してるものあるから、それをまとめて
件数を数え、それ以上はやらない。
形態素解析ソフトも使えば少しは楽になるが、覚えてる時間もなさそう
だし、無料の茶筅なんかは商売じゃろくに使い物にならない。
だからやるなら、前述までで止めておいた方がいい。
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】はい 【4 VBAでの回答の可否】 可 スペースの都合で横並びに書きましたが普通に縦並びに並ぶデーターが書かれた数百行ある表で 2の中間データを1の表から削除した表を作成したいのですが、 割り出し方もしくは削除方法を教えて下さい。。 1.元データ 1 2 3 4 5 2.中間データ 2 5 3.割り出したいデータ 1 3 4
>>567 補足〜〜各データーの先頭に通し番号が振られています。
>>567-568 表のレイアウトが良く分からないからコードじゃなくて概念だけ
シート上で消したいデータの通し番号を検索
該当の行を変数に格納(消す範囲の先頭)
消したいデータの次のデータの通し番号を検索
該当行の一行絵を変数に格納(消す範囲の最後)
消す範囲の最初から最後までを範囲指定して削除
570 :
569 :2014/03/29(土) 14:34:20.94
誤字があった × 該当行の一行絵を変数に格納(消す範囲の最後) ○ 該当行の一行上を変数に格納(消す範囲の最後)
>>569 ありがとうございます。
説明不足だったようですが
>>567 3のデータ(消したいデータの番号)自体を合理的に割り出す方法を探しています。。
573 :
569 :2014/03/29(土) 14:47:50.16
それはもっと詳しく内容が書いてないと回答できないですよ
>>567 の情報だけで的確な回答ができるのはエスパーだけです
574 :
569 :2014/03/29(土) 14:52:39.97
>>572 を読まずに
>>573 を書きましたが
>>572 の画像を見ても結局
何をどうしたいのかわかんなかったです。
あの表で言うとどれが削除したいデータに該当するのか、
それはどういう基準で決められているのか、
といったことが分からない限りどうにもならないです。
>>573 >>574 失礼致しました。。
>>569 より1つ答えが見えました通し番頭から中間データの番号を検索して消せば3が導き出されるわけですね、
VBAのループ処理でやっていくかんじでしょうか、何となく見えてきました。
こういうデータを割り出す関数は無いようですねぇ、
576 :
569 :2014/03/29(土) 15:13:27.39
>>575 >こういうデータを割り出す関数は無いようですねぇ、
いや、だからですね。
「こういうデータ」とは一体どういうデータなのかについて
何も具体的な説明が無いので答えようがないのだと言ってるじゃないですか。
例えば
>>572 の表から部門の列を検索して通信販売とネットショップを除外する
とかそういうことなら出来ますけど、
それがあなたの望んでいることなのかこちらには分からないですし。
とにかく判断基準をあなたが具体的に提示しない限り誰にも答えられないです。
>>573 >>574 >>567 2の中間データという説明の意味が違っていて誤解を招きました。すみません。
2は調査が終了した不用データとなります。
数百あるリストから調査が終了した項目がランダムに存在しましてそれを消し去った表を作成するのが最終目的です。
>>572 の画像に当てはめます2のショッピングモールと5の通信販売は調査が終了したためそれを削除したリストを作成使用としてます。
そしてとりあえずはシンプルに先頭番号を範囲指定すれば間引いてくれるような関数が無いか探しています。
>>576 コメントが入れ違いだったようで失礼しました。
>例えば
>>572 の表から部門の列を検索して通信販売とネットショップを除外する
>とかそういうことなら出来ますけど、
正に探しているのはそれです!!
579 :
569 :2014/03/29(土) 15:26:26.10
>>577 そういう関数は無いと思いますけどVBAで作ることは出来ます。
>>577 仮にA列にデータ番号、X列に調査済みのデータ番号が書かれているとして
適当な列の先頭に「調査済み」とでもして、その下に
=COUNTIF(X:X,A2)=0
これを下までコピー
trueでしぼれ
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】はい 【4 VBAでの回答の可否】 否 A列に地名(重複あり)、B列に人名(重複無し)が入ってるデータがあり、地名でソートされています。 地名ごとの人数はバラバラです。 このデータを、地名が連続しないように、同一の地名ができるだけ離れるように並べ替えたいのですが、vba無しで可能でしょうか?
できるだけってなんだよ;
>>582 例えば地名が
aaaaa bbbbb ccccc dd ee
こんな風に並んでたら(実際は列)
abcde abcde abc abc abc
ではなく、
abc d abc e abc d abc e abc
こうしたい(同一地名ができるだけ離れるように)
>>581 地名毎に1〜No.を振る列を作る
その列をフィルタでソートする
>>583 vba無しじゃ無理なんじゃねーか?
それとも手動(何段階かの手作業と作業列の追加)でも良いの?
複数地区の人が集まって競技チームを組むのに使えそうだね
自分なら地名ごとに地名別に人名をグループ化して グループを横に並べて 上から1地名1人名ずつ拾う
>>585 手順が多くなるならvbaでやります。
vbaが使えない環境というわけではなく、
excelの自分が知らない機能(解析とか統計とか)でサクッとできたらいいなと思って質問させてもらったので
>>587 地名ごとの人数が一定じゃないので、
そのやり方だと、最後の方が数が多い地名の人だらけになってしまう
普通に考えれば、要素数の多いものをまず等間隔に配して その次に要素数の多いものを等間隔に挿入していくイメージか? 関数や手動操作では無理じゃねーかな
>>583 全体数分の格納エリアを準備して
多い地域順に均等割り当てで場所取りをしていくイメージだね
VBAじゃないと難しい感じだなぁ
VBAを使わないなら、関数で席取りさせる行No.を出して、
その列をソートする感じかな?
592 :
名無しさん@そうだ選挙にいこう :2014/03/29(土) 17:45:02.33
マンボウのエクセルじゃないのにエクセルと同じで自分のエクセルで作ったものが使えるんだが
593 :
585 :2014/03/29(土) 18:23:35.19
>>588 VBA無しで考えてみたけど出来そうな気がしてきた
まず前提条件として、一地点のデータ数は絶対に全体のデータ数の二分の一を越えないことが必要
これは「一番数が多い地点のデータ数が全体の半分を超えない」と言い換えても良い
これを満たした上でデータ数が多い地点順に並び替える
そしたら作業列を用意して、
先頭行から全体の半分まで1から順に番号を振る
例えば10件なら1〜5を振る、11件なら1〜6まで降る
で、残りの行にも1から順に番号を振る
ここまでやったらあとは作業列をソートすればOK
多分これでいける
>>581 http://www.dotup.org/uploda/www.dotup.org4963719.xlsx.html 難しい。結構行けると思ったけどダメだった。多分関数では限界っぽい
VBAだと
・例として東京が3つ、大阪が2つとする
・枠というかメモリを用意する。1000000ぐらいで十分。
・各地名に通し番号をつける。これはなくてもいいかもしれない。東京に1、大阪に2
・一番多い種類のものを均等に配置。東京を000000,333333、666666
・通し番号を10000ぐらいで割ってそれぞれに足す。333333.00001、666666.00001、999999.00001。これにより重複を排除することが可能
・次に大阪も同じようにする。0.00002、500000.00002
・ランク付け
596 :
名無しさん@そうだ選挙にいこう :2014/03/30(日) 13:58:55.17
【1 OSの種類 .】 Mac 【2 Excelのバージョン 】 Excel2011 【3 VBAが使えるか .】はい 【4 VBAでの回答の可否】 可 A列 B列 aaa あ、い、う bbb か、き ↓ A列 B列 aaa あ aaa い aaa う bbb か bbb き にするにはどうすればいいですか?
vbaで
>>596 文字列検索で「、」がヒットしなくなるまで
一番左側の「、」よりも右側を
下側に挿入した行のセルに入力する
その時、ヒットした「、」は削除
入力されたセルに対して文字列検索
入力されたセルでヒットしなかったら
一つ下側のセルを検索する
Excel2013って使いやすい?
いや べつに
2010は当分使えそう
使いやすかろうが使いにくかろうが 最新バージョン使うのが当たり前なんで
603 :
567 :2014/03/30(日) 23:00:27.86
>>594 これはこは、、わざわざありがとうございます。
MATCH関数でできるのですね。自分はまだ使った事がな関数なのでじっくり勉強します
本当にありがとうございました。
>>604 そんなこというとイカリ出すから放置でお願いします。。。
>>602 俺も最新の Excel Online 使ってるよ、仲間だね^^
2010から2013にするとどう使いにくいの?
>>607 試用版があるからダウンロードしてインストールしてみたら?
使いにくくないかもしれないよ
デフォ設定でいじってみた ・シートが最初から1つ ・全体的にフェードイン・フェードアウトがかかるように。 変化が目に見えてチェックするときは楽かも?事務作業やる身としては最悪。 ・ログインしてクラウド上のファイルを触れるっぽいが、skydriveとか使ってない。googledriveにしてくれ
・「リボンの表示オプション」がリボンにあって笑った。 他にもよくわからない機能てんこ盛りで、初心者は大変だろうなぁと思イました。
シートなんてショートカットキーでいくらでも作れるから最初は一つでもよかろう ってことかもな シートは作るより消すほうが手間がかかるし
作る手間と消す手間、どっちも大差ないだろ
そういえば、ユーザー設定ツールバーでアイコンを横方向に並べることって、 GUI操作だけでできる? エクスポート→xml編集→インポートとか面倒なんだけど
>>612 でも消す方は対象を選択しないとできないからな
その分プロセスが増える
言う通り、大した違いじゃないけどな
▼━質問テンプレ (必ず使ってね) ━━━ 【1 OSの種類 .】 WindowsXp 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 できれば否 仮にA列に出身地、B列に年齢が入っているとして A列で重複したものの中でさらにB列でも重複したらC列に○を表示したい のですが、うまくいきません。どういう式にすればいいでしょうか よろしくお願いします。 AとBで完全にかぶるものを抽出したいのですが 今はAとBそれぞれで同じものがあると○が表示されてしまう状態です
>>615 =IF(AND(COUNTIF(A:A,A1)>1, COUNTIF(B:B,B1)>1),"○","")
>>617 会社だと別の席で作業することとかあってだな
やっぱりデフォ設定ってなんだかんだで大事なんだなって思えてきた最近
そんなにいろんな席で頻繁にexcelファイルを新規作成しないといけないのか システム部門に何とかしてもらったら?
>>618 毎日違う席で仕事してるの?
もしくは毎日 Excel インストールし直してるとか?
自分の机が決まってなくて、毎日早い者勝ちで好きな所に座るシステムの会社が最近あちこちにあるのは事実 漫画喫茶のPCみたいに設定が毎回リセットされるとこもあるし、ログインすると個人設定を鯖から呼び出してくれるとこもある
622 :
名無しさん@そうだ選挙にいこう :2014/03/31(月) 14:22:26.96
知人から聞かれたのですがわからなかったので質問させてください。
【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
http://www.rupan.net/uploader/download/1396242132.gif メーター値の前回計測分との差分をF列に表示させたいのですが、
D8のように時折文字列が入ります。
画像では =IF(ISERROR(D7-D6),"",D7-D6) としましたが、当然F9も空欄になってしまいます。
前回計測した数値を参照したD9-D7の25をF9に入れる式を作ることは可能でしょうか?
>>622 =if(d7="土曜休","",d7-d6)じゃだめなん?
624 :
622 :2014/03/31(月) 14:52:07.79
>>623 F8が空欄になるのでF9がエラーになってしまうんですよね。
土曜休が入る場合、前回計測した日の数値を参照することは可能かどうか質問させてもらいました。
>>624 =IF(D6="土曜休","",IF(D5="土曜休",D4-D6,D5-D6))ってつなげたらだめなん?
if(d7=土曜, d8-d6, d8-d7) こういう話ではなくて?
それだと土曜休の次の日がエラーんなるってこったろ
リロってなかったすまそ
>>619 >>620 複数の事務所で仕事することがたまによくある。
小売業で基本本社。しかし新規立ち上げの時、また事務員さんがお休みの時は内勤のヘルプに入ることがあるのよ。
あんまり設定を好き勝手変えて使いにくい思いをさせるわけにもいかんし、可能な限りデフォで色々なソフトを使うことになっている。
まぁ、レアケースだろうから気にするな。
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 否 以下の様な関数を入力します。 =IF(○○=5, 1 , "" ) この関数だと、条件の結果が偽だった場合は、""を表示、つまりセルに何も入力しないようになります。 ""としておかないと、条件の結果が偽だった場合いちいちすべてのセルに「FALSE」と出て鬱陶しいので、そうしています。 ところが、この""を入力されたセルはなぜか、空白セルではなく、何かしらの数値データが入ってるようなのです。 この""のセルをif文でやってみると、少なくとも、0ではなく、0よりも大きい数字であるようなのです。 これが謎で、困っています。 なんとか、0扱い、もしくは空白セル扱いにして欲しいです。 if文の結果が偽だった時、空白セルで、かつ中身は0扱いにするにはどうしたらいいでしょうか?
条件は固定? 1に意味はあるのか? 何を調べたいか分からないけど =○○=5 でtrue,false返すのじゃダメなのか
0にしといて0は表示しない書式にすればいいじゃん
>>631 http://support.microsoft.com/kb/416983/ja 数値と文字の比較
記号や空白を含む全ての文字は数値よりも大きいと判断されます。
仕様です。
""は空白セルではなく、文字列です。数値ではありません。
>空白セルで、
は無理です
>中身は0扱いにするにはどうしたらいいでしょうか?
=IF(○○=5, 1 , (""&0)*1)などにすればいけますが、ッ解決策にはなりません。
これを使用している数式を変更してください。
>>616 ありがとうございます
ただやはり同じ結果にになりました。ちなみに
=IF(COUNTIF(A:A,A2)>1,IF(COUNTIF(B:B,B2)>1,"○",""),"")
でやってみていたのですが、両方一致で抽出できません
東京 46 ○
大阪 46
東京 22
福岡 22
東京 46 ○
となればいいのですが、‘東京 22’にも○が付いてしまうんですよね
>>636 作業列を作ってもいいなら
D列:=A1&B1
C列:=IF(COUNTIF(D:D,D1)>1,"○","")
で出来るかと
>>636 =IF(SUMPRODUCT((A:A&B:B=A1&B1)*1)>1,"○","")
多分かなり重いので
>>637 の方がいい
質問内容がスレチならすみません 【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 行編集した直後だけ、ローマ字変換がおかしくなります @excelを立ち上げた後、ローマ字変換でセルA1に「さ」と入力 A2行目を行選択して行挿入 BセルA2に「さ」と入力しようとすると「sあ」となってしまう 再入力すれば普通に「さ」となりますが、行編集する機会が多いとウザくてしかたありません この現象を回避する方法はあるのでしょうか?
もう1つお願いします 【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 小数点以下の桁数が勝手にリセットされます @excelを立ち上げた後、セルA1-A2の表示形式を「数値 小数点以下2桁」に変更します AセルA1に「3.33」入力 BセルA2に「=A1^2」と入力(計算結果「11.09」が表示される) CF2キーでセルA2を再編集し、計算式を変えずにそのままenter D計算結果「11.0889」が表示される(勝手に小数点以下4桁になってしまう) この手順で小数点以下の桁数表示が変わらないようにする方法はありますか? 関数やユーザー定義を使えば桁数固定にはできるのですが、 編集しているファイルサイズが100MB超えるほど大きいため、 あまり重くしたくありませんのでこの手順に拘りたいです 連投すみませんが宜しくお願いします
>>640 計算結果によって書式が勝手に変更されて桁数が増えるのは昔のバージョンからあるお節介機能
書式を
[$-411]0.00_
(アンダーバーの次に半角スペース1個)
にすれば少数以下2桁のまま桁数が勝手に増えるのを防ぐことができるけど、もし可能なら
先に数式を入れてからあとで書式を設定する癖を付けておいた方がいいかも
レスありがとうございます 計算式そのものを変更することが多いので、編集の仕方を工夫した方が良さそうですね…
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 例えば0から9、aからzのように範囲を指定して 条件とする事は出来ないのでしょうか? =COUNTIF(A1:A9,aからz) のような事をやりたいのです 現在は =SUM(COUNTIF(A1:A9,{"a","b","c"...})) のようにやっていますが 毎回範囲を一つ一つ指定するのは面倒です
>>643 範囲指定はできない
a-zを数えるには
=COUNTIF(A1:A9,">=a")+COUNTIF(A1:A9,"<=z")-COUNTA(A1:A9)
>>639 キーボードかなんかの接触不良かなにかか、重いか、ファイルがぶっ壊れてるか
新規ファイルでもダメなら再インストールがよろしい
>>644 数値だと
COUNTIF(A1:A9,"<=z")
この条件に引っかかって"a"、"a"、"a"、"5"、だと2が買える
Function COUNTC(r As Range, a, z) For Each c In r if (a <= c.Value) And (c.Value <= z) Then n = n + 1 Next COUNTC = n End Function
>>639 PC 買い替え
無理なら OS 再インストール
>>643 countifに配列が使えたのか、知らなかった。
お返しに正規表現のcountif、その名もunko関数を作ってやったぞ。
=unko(A1:B5,"[a-z]")
みたいな感じで使える。
=unko(A1:B5,"[a-z]",true)
とすると大文字小文字の区別がなくなる。i修飾子や[A-Za-z]みたいなもん。
Function unko(x As Range, patternX As String, Optional ignorecaseX As Boolean = False)
Dim RE, strPattern As String, msg As String, reMatch
Set RE = CreateObject("VBScript.RegExp")
With RE
.Pattern = patternX
.ignorecase = ignorecaseX
.Global = True
End With
For Each tinko In x
Set reMatch = RE.Execute(tinko.Value)
If RE.Test(tinko.Value) Then
w = w + 1
End If
Next tinko
unko = w
End Function
よく見たらXPか あと6日で期限切れるんだからさっさと買い替え
>>648 せめて、option explicit使おう
あとオブジェクトって、使い終わったら、set nothingするもんだと思ってたが、やらなくてもいいの?
【1 OSの種類 .】 Windows 7 【2 Excelのバージョン 】 Excel 2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 入力中にタイプミスをしたら一部文字の書体が変わってしまった。 →Viと入力したとき誤って何かのキーに触れたらiがイタリック体になった。 ミス操作は分からないけど、これが可能ならどうのような操作をすれば そのような一部文字のフォントのスタイルが変えられるでしょうか。
>>650 こんな短いコードで宣言しても仕方ないと思う
メモリの開放は巨大なオブジェクトならやったほうがいいと思うけど、小さいのでどうでもいい
ついでにvbaではループ内でなら宣言・インスタンス化は何度してもいいっぽい
>>652 セル内容を編集中にドラッグしてフォントの変更
>>652 当方Windows7pro、Excel2010なので試してみました。
セル中の文字列を範囲指定したうえで、[Ctrl]+[I]で選択した文字列だけがイタリックになりました。
心当たり、ありますか?
単にセルを選んだ状態(普通にセルをクリックしただけ)で[Ctrl]+[I]なら
セルに含まれる文字列全てがイタリックになりました。
[Ctrl]+[U]なら下線です。[Ctrl]+[B]ならボールド(太字)です。
>>652 Cntr+V で貼り付けた時、Cntr 離す前に I キーを押したんだろうな。
意図してやるなら
>>653 が書いてる通り文字列を選択して Cntr+I でイタリック (斜体)、ついでに B でボールド (太字) 、U で下線
トグルになってるから、間違えた時はもう一度同じ操作すればいい
ボールドなんて滅多に使わない デフォルトのフォントを明朝にして、強調したい部分はゴシックにしてるわ この方がずっと見栄えがいい
>>652 文字選択や貼り付けをしてなければ、
Shift押しながらvで大文字のVを入力
→Shift離したつもりでCtrlが押されてる状態でiを入力
(ここでこれ以降がイタリックになる)
→「あれ?iが出てこねえ」再入力
→iがイタリックで出てくる
これだと思う
こういう質問はまじめに答えてくれるのか 難しいスレだ
>>645 >>647 皆さんは発生しないということですよね?
自分の環境だとファイル新規作成でも発生しますので、OS変えたら再確認してみます
ありがとうございました
>>660 行編集って、行を選択して入力することを言ってるの?
Enterで右に移動する為なら、tab使ったら?
行選択(行番号をクリック)して「挿入」とか「コピーしたセルを挿入」等をすると この現象が発生します 全角で1文字目を入力した時点でENTERが押された状態になるらしく、 全角で「s」と入力すると普段は2回ENTER押さないとセルに入力されないのに 1回のENTERで入力が完了します 「さ」と入力しようとして「sあ」となってしまうのもこのためかと…
再現しない win7/office2010/atok2014
遅い機械じゃないと再現しないです
>>660 Excel 2007 + Windows XP + Core2 のしょぼ PC で同様の現象がでていたから、PC 買い替えと書いた。
ちゃんと調べればいいのかもしれないけど、買い替えた方が早いと思うよ。
CPUはcore2Duo E6850 3.00GHzです 以前はexcel2003を使用していましたが その頃から「sあ」現象が出てました
俺カナ入力だから再現できんわ
668 :
名無しさん@そうだ選挙にいこう :2014/04/03(木) 20:31:27.34
2003から2013に最近切り替え、戸惑いながら使っていますが、気になる点が一つ。 セルのどこでもいいのですが、右クリックしたときに出てくるメニューのフォントが小さくて困っています。 ノート型で作業しているので、デスクトップ向けのモニタのようにモニタが大きくありません。 そのため、右クリックメニューのフォントサイズが小さくて目が疲れるのです。 このフォントを大きくさせるにはどこをいじればいいのでしょうか?
>>667 かなでも出るよ
て言うか、俺もかなだからかなしか知らん
ちなみにかな入力中でも最初の文字は対応する英字が入る
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 つい先ほどまで数式が正しい結果を出せていたのに 突然思いもしない計算結果がでるようになりました。 D1セルに「=A1+B1-C1」と入力されていて結果も正しいのですが これをオートフィル機能でD2セルへコピーしたところ、 数式は想定通り「=A2+B2+C2」となっているのにもかかわらず 計算結果があいません。 ファイルを開きなおしたり、新規作成のBookで試しても同じです。 このファイルは依然から使っているファイルですがこのようなことは初めてです。 なにが原因なのでしょうか?なにか誤ったボタンを押したのでしょうか?
>>671 本当に =A2+B2+C2 になったの?
うちで試したら俺の予想通り =A2+B2-C2 になったけど
>>672-674 お返事どうもありがとうございます。
そしてすいません、+C2ではなく、-C2でした。
表示形式は標準のままですが、手動計算について調べてみます。
>>671 if文に使っているなら小数誤差でぐぐってみてはいかがか
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 A1〜A10セルにそれぞれ適当な文字列が入っているとして、 B1セルの中の文字列が一部でも含まれていたら、C1にA1〜A10のうち何個のセルに含まれていたか個数を出す ↑のような関数はあるでしょうか? COUNTIFだと完全一致しか拾ってくれなくて困ってます。
「一部でも含まれて」だと難しいね 少ない文字数ならワイルドカードと条件分岐を駆使したら出来るけど B1の内容が含まれるだけでいいなら if(countif(a1:a10,"*"&b1&"*")>0, 〜 って感じだな 一部ってなると、さらにRight、left、midとワイルドカードを駆使して頑張るかーだなー
680 :
名無しさん@そうだ選挙にいこう :2014/04/05(土) 09:05:39.98
Vista エクセル2007使用 本年度と昨年度との比率を%で表示したい 昨年度÷本年度で、計算 本年度 昨年度 ともに数字が入力されている → 問題なし 本年度 昨年度 ともに数字が0 →文字化け表示 ・本年度 昨年度 ともに数字が0 ・本年度に数字が入ってるが、昨年度は0 ・本年度は0だが、昨年度に数字が入ってる 3パターンのいずれでも文字化け表示されない方法を教えてください
>>680 以下の二点を示してくれ
・文字化けとは具体的に何が表示されるのか
・それがどう表示されて欲しいか
>>680 =IF(B1>0,A1/B1," ")
684 :
名無しさん@そうだ選挙にいこう :2014/04/05(土) 10:35:51.45
>>682 × がんがれ
○ がんばれ
◎ 頑張れ
変に日本語使うな
>>684 × 変に日本語使うな
◎ 変な日本語使うな
686 :
684 :2014/04/05(土) 11:57:10.44
>>686 真似じゃねーよ、揶揄してるだけ
て言うか、ネタじゃないのかよ (w
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 いくつかあるセルのうち 1000 2000 5000 12000といった感じに 1000桁単位の数字を入力しなければならないセルが1つある。 もしそのセルに1000桁以外の数字を誤入力した場合、そのセルか あるいは別のセルが色表示の変更でも行い、誤入力したことをすぐ気付けるようにしたい。
689 :
名無しさん@そうだ選挙にいこう :2014/04/05(土) 13:08:24.52
>>688 mod使って1000で割った余りがあれば
エラーにするんでどうでしょう。
>>680 質問と関係ないけど
昨年度÷本年度 という順序も珍しいね
691 :
名無しさん@そうだ選挙にいこう :2014/04/05(土) 13:26:46.55
>>678 こうしてみた
C1: =IF(CountA(B1),COUNTA(A1:A10),"")
692 :
691 :2014/04/05(土) 13:28:25.09
>>678 ごめん、問題を勘違いしてた。
なしなし
>>679 そう言えば2007以降ならcountifsが使えるから、
これで解決じゃね?
694 :
691 :2014/04/05(土) 13:45:38.47
>>678 >>679 のを利用して文字列だからcountif をcountifaにして
C1: =countifA(a1:a10,"*"&b1&"*")
だけでいいんじゃないの?
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可(できるなら使いたくない) 結果, 条件1, 条件2 A, 2013, 10 B, 2013, 10 C, 2014, 01 ... のようなデータがあって、条件1、条件2を満たすような結果列を取得したいと考えています。 この時結果列が複数ある場合は辞書的順に一番大きい要素を取得する。 ということはエクセルの関数を用いて可能でしょうか? 今回の例だとどこかのセルに2013と10を入力させ、 その結果であるBをどこかのセルに書き出したいと考えています。 VBAを使えば書けるのですが、メンテナンスが難しくなるため、極力エクセル関数のみで行いたいと考えています。 よろしくお願いします。
696 :
名無しさん@そうだ選挙にいこう :2014/04/05(土) 16:53:53.07
>>695 条件1と条件2を満たすとは、それぞれがイコールだったらということ?
結果列が複数ある場合の大きい方とは、この例でいえば
結果の列のA、Bと文字で入っているが、ここに数値が入り、その数値の
最も大きい列のセルの値を選ぶということ?、
697 :
696 :2014/04/05(土) 16:55:27.96
>>695 辞書順と書いてあるから、文字ということでしたか
A<Bということですね。
698 :
696 :2014/04/05(土) 17:03:17.79
>>695 結果列が複数と書いてあるけど
結果列は一つで、条件を満たす値(要素?)が複数ということ
じゃなくていいの?
699 :
695 :2014/04/05(土) 17:43:54.87
>>696 結果列という表現が悪かった気がします。
結果列というのは取得した値を出力する場所ではなく、
条件1 かつ 条件2
を満たした時に取得したい値のことです。
元となるテーブルには
・条件を満たす行が複数存在する可能性がある
・複数存在した場合には、結果列の中で辞書的に一番大きい値と取得する
という感じです。
複数ヒットするときに1個しか抽出しないとか;ほんとにそんなのでいいのか? 普通に条件1と2でフィルタリングしろよ;
どこで聞いたらいいのかわからなくて、ここで・・・ たったいまoffice2003から2013に切り替えたんですが 今後は保存形式どっちにするのがいいんでしょうか 2003のサポートも終わり、もう古いバージョンに気を遣う必要も無くなるわけで やっぱりxmlx?で保存していった方がいいんでしょうか その場合、今まで作ったファイルも新しい形式に書き換えていった方がいいのかな? マクロ含め、基本的には崩れたり動かなくなったりはしないんですよね?
別に無理に変える必要はない しかし拡張子xlsのまま、2013の関数を使って保存しようとすると 「旧バージョンで使えないよ〜」って警告が出るのでよく更新するファイルはxmlxに変えておいた方がいい
xlsxだよ
あぁそれだ どうもエクセルの拡張子は昔から覚えにくい文字列じゃ
706 :
名無しさん@そうだ選挙にいこう :2014/04/06(日) 13:09:19.11
>>703 へ〜、こんなのあるんだ。知らんかった。
これ使うとできるよね。
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 すみません。質問なんですが、 Excelを起動してセルに数字を入力すると最初のセルで毎回 「英語(米国)で、このオートコレクトリストを使用することができません。 この機能は現在インストールされていません。インストールしますか?」 と出てきます。「いいえ(N)」を選択するとその後は問題なく操作出来るのですが、 Excelを立ち上げる度に毎回毎回出てくるのでどうにかしたいのですが・・・ オートコレクトリストのオプションで、チェックボックスから全てチェックを外したりはしているのですが・・・ どなたか解決方法をご存知の方がいらっしゃいましたら、なにとぞよろしくおねがいします。
OSの設定がおかしくなってそう コンパネから色々いじってみては
>>707 明日で期限切れだぞ
まずはWindowsとOfficeを買い替えろ
質問はそれからだ
あーん いけずぅ
インストールしちまえばいいんじゃなかろうか
win Excel2000 ・右側の余白が広く出来ない 数字上は左右対称のはずなのに右が広い。 中央表示にしても見美の隙間が異常にある。 ・アンダーバーで文が終われない セル選択したじょうたいで「あああ_______」 となっていても他のセルに移動した瞬間アンダーバーが消える。 アンダーバーの後ろにスペース以外の文字があれば消えない。 対策はありますか? さっぱり理由がわからない。
見美→右
アンダーバーは文字列の最初に’を入れるとよくなかったっけ?
アンダーバーは最後の文字を白にして対応しました。 相変わらず余白は点線の枠が随分手前から右に移動できない・・・
717 :
名無しさん@そうだ選挙にいこう :2014/04/07(月) 13:50:15.70
A行に名前、B行に誕生日が入っているデータがあります。 誕生日がランダムになっているのでデータを整理したいのですが 特定の文字列を指定してその文字列が含まれる列全てを抽出する方法はありますでしょうか? ↓のような書式で書かれているので ○○年01月01日 "01月"を検索してその文字列のある列ごと抽出して他のシートに移せれば嬉しいです。 よろしくお願いします
>>717 まず、csv形式で保存する
次に秀丸・サクラエディタなどのgrepが使えるフリーソフトでcsvファイルを開く
grepで目的の文字列を指定すると、その文字列を含む行だけが抽出されるので、それを新たにcsvファイルとして保存する
csvファイルをエクセルで読み込めば完了
719 :
717 :2014/04/07(月) 14:39:05.76
>>718 出来ました!
的確な助言ありがとうございます!
B列でソートとかオートフィルタとか Excelだけで簡単にできるのに、なんで外部ソフト使うかなあ
EXCEL VBA の『Rows()/行を選択』の記述方法で ()内を数字ではなく、数式の記述(例:RowPos+1の行を選択)に したいときどう記述すればいいのかわかる方いらっしゃったら申しわけございませんが教えてください
>>720 ソートするにしてもB列そのままで出来る?
MONTH関数で月を数値で抜き出さなければならないのでは
724 :
名無しさん@そうだ選挙にいこう :2014/04/07(月) 23:04:39.79
YYYY/MM/DDをMM/DD/YYYYに書き換える方法はありますか?
>>725 文字列ならMIDで切り貼り
シリアル値ならtext関数で
>>724 うお、日付フィルタなんて会ったのか
昔からあったんかな?
728 :
名無しさん@そうだ選挙にいこう :2014/04/08(火) 00:02:16.10
オートフィルタがフィルターになったころからあったよ
ありがとう。知らなかったや。
730 :
724 :2014/04/08(火) 00:45:55.21
>>726 日付値(シリアル値)なら書式設定だけでいいんじゃないかな。
>>727 実は俺も知らなかった。フィルターにないのかな?と思って
見てみたら、有った
732 :
名無しさん@そうだ選挙にいこう :2014/04/08(火) 09:35:23.44
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 ぐぐって初めて知りました 【4 VBAでの回答の可否】 否 現在、速効!図解 Excel 2010 総合版 Windows・Office 2010対応 (速効!図解シリーズ) という本で練習をしている初心者ですExcelについてはページの1/3ぐらいまで進めています 自分で表を作る、セルにデータを入力できる、オートSUMが使える位のスキルです 効率的にExcelのスキルアップがしたいです。実戦で使えるようになりたいです この本だと@本の様に例題?を自分で入力して、A本の指示の通りに進める という手順で毎回、毎回、見本の例題を入力する手間を省きたいと考えていますが おススメのテキストなどありますでしょうか? 将来的には何がしかの能力を証明する検定などを受けてみたいと思います よくわかる Excel 2010 基礎 データCD-ROM付 [大型本] 富士通エフ・オー・エム (著) 、 という本はデータCDが付いているので毎回の面倒な見本の入力などが要らないのでしょうか?
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2000 【3 VBAが使えるか .】 否 【4 VBAでの回答の可否】 可 シートのコピーで増やしたシートを変数に格納したいのですがどう記述すればよいでしょうか?
>>733 Worksheets("Sheet1").Copy after:=Worksheets("Sheet3")
Set NewSheet = ActiveSheet
>>732 無い。
実戦経験を積んだほうが早い。
具体的にはここの回答が一番。
資格が欲しいならMOS用の本を買った方がいい
>>733 VBA否なのにVBAの質問?
あとXPのサポート期限は今日までだよ
>>735 ここの質問はレベルがバラバラだし数も少ないからなあ
豆知識は増えても試験対策には無力だと思うよ
>>732 エフオーエムのMOS対策本買って本眺めるも良し
いきなり問題集入って解答アニメで無理矢理覚えるも良し
▼━質問テンプレ (必ず使ってね) ━━━ 【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2002SP3 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】否 Vlookupの仕様がよくわからなくなりました 前年度繰越 300000 a 1年分×3軒 6000 b 1年分×9軒 18000 c 1年分×7軒 14000 d 1年分×14軒 28000 決算利子 25 e 12軒 24000 決算利子 21 仮払内訳 上期分精算返金 500 仮払内訳 下期分精算返金 600 小計 109628 前年度繰越 109628 ↑A13 としまして最後に=VLOOKUP(A13,A1:C11,3,TRUE)で検索できるようにしたのですが A13に前年度繰越といれても出てくるのが小計の109628になってしまいます おかしいところを教えてください
>>739 =VLOOKUP(A13,A1:C11,2,0)
か
=VLOOKUP(A13,A1:C11,3,0)
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2000 【3 VBAが使えるか .】 否 【4 VBAでの回答の可否】 可 VBAで複数セレクトされているセルの一番のセルを取得したいのはどうすればよいでしょうか? 例えばA1からA6までセレクトされている状態でA1を変数に格納したい時、 または複数セレクトの一番上(A1)のセルの右どなり(B1)のセルを取得したいときなど。 応用で上記のような状態でセレクトのされている最後(A6)またはその右隣(B6)が取得できるような記述の仕方だとありがたいです。
ところで、vlookupであいまい検索使うってどんな場合?
>>742 選択されている範囲が長方形ならResize(1, 1)で左上のセルが取得できる
さらにOffset(0, 1)で右隣
一番下は一手間増える
選択範囲の縦の大きさはSelection.Rows.Countだから、これをOffsetに指定する
【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 2002から変更あるかもしれません
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】否
無知な私に力を貸してください。
先日上司から商品に貼るシール作りたいからエクセルで作っといてと突如無茶振りをされました
シート1にこのように
http://www.geocities.jp/bhxcg182/202.png 打ち込まれた文字があります。
そしてシート2に
http://www.geocities.jp/bhxcg182/2222.bmp このように枠を作って、シート1のA1をシート2のa1に シート1のBをシート2のbへ
シート2の枠に関しては印刷したときに縦4センチ横4センチになるようにと言われました
100枚200枚ならコピーして作ろうと思ったのですが・・・なんと5000枚作れと言われました!
シート2に縦横4センチで指定した枠を作りシート1の文字を流しこむことは可能なのでしょうか?
一度に5000枚作れなくてもいいので、100枚ほどでもまとめて作ることはできないでしょうか?
VBAに関しましてはコードを打ち込むことはできませんがマクロを記録することはできます
どなたか力をお貸しください・・!
>>747 >このページは準備中です
>
>申し訳ありませんが、このページは現在利用できなくなっています。しばらくたってからもう一度お試しください。
>ご不明な点があれば、ヘルプをご覧のうえ、お問い合わせください。
と表示されていて画像が見れませんのであてずっぽで回答
シート1とシート2を合成せずに別々にプリントしたらどうすか?
(同じ用紙を二回プリンタに通すってことです)
エクセルって画面上の見た目と実際の印刷されたものがずれてることが良くあるので
何度か試行錯誤して適切な印刷位置を見つけたらどうでしょ。
>>747 それは大変ですね
まずは、何に印刷するのかを確認しましょう
どんなものを上司が用意してくれるのですか?
エーワンというメーカーのサイトを参考まで
https://www.a-one.co.jp/product/ A4? 大量に必要ということなのでA3?
そのうえで、印刷用のシートへの配置を考える必要があります。
プリンタは何ですか?プリンタによって余白が異なります。
続きはもうちょっとしてから書きます。
750 :
747 :2014/04/08(火) 22:51:08.01
早々にお返事いただきありがとうございます! 748様 私も今URL開いたら開けませんでした。。! URLをコピーして直接コピーして張り付けたら飛べたのでそれでどうでしょうか? 印刷後、金型で5000枚切り抜くので、決まった位置でないといけません・・ 金型で切り抜きますので、決まった位置でズレてはいけないみたいですorz 749様 印刷する材料は3M社製の裏側がシールになっている製品を使います・・! そして、恐ろしいことにプリンタは横600(60センチ)縦50メータまでいけるプリンタです・・ 私の考えでは、シート2に縦横サイズが均一の表を100個なら100個作ります(表はシート2のようなシート) その後にシート1にあるA〜100までのセルの数値をシート2のA〜100まで入れて・・とできればいいなと思ってたんです。。 説明下手でごめんなさい><
751 :
749 :2014/04/08(火) 23:04:19.52
>>750 URLをコピペして画像はちゃんと見えてます。
それにしても、ロール状のシートに印刷できる大判プリンタですか・・・
自分も以前の職場でそういうものに地図を拡大印刷した経験はありますが・・・
エクセルは画面上に見えたまま印刷できるわけではありません。
画面上では文字が収まっているのに、印刷するとはみ出るというものです。
恐ろしいことに、印刷プレビューでさえ信用できません。
ちょうど、A4用紙に印刷することを前提にいろいろ試してたところです。
さて、どうしたものか・・・
>>750 印刷原版の作成は素人には大変だよ
それに加え、ExcelはA4サイズでもうまく印刷するのが難しいと言われてる
金型で抜くんなら印刷ソフトも同時に発注してないの?
なんか話がちぐはぐすぎる
俺は仕事でタックシールの印刷もやってて、小ロットの時はExcelでちゃっちゃと作ることもあるんだけど、
どうがんばっても一発で完成させるのは無理だよ?
せめて2〜3枚試し刷りができればいいんだけど
753 :
747 :2014/04/08(火) 23:21:14.31
749様、早々にお返事ありがとうございますM(_ _)M 以前は部署にイラストレーターを使いこなせる人間がいて、イラレで200枠を作り そこに1個1個エクセルからイラレへコピーペーストして20万枚を部署総出の20人で手うちで作ったそうです・・ 1枚のシールに付き5回切り取り貼り付けなので20万×5回切り取り貼り付けをして昼夜作業して作ったみたいです>< そのため今回、エクセルでなんとかなるでしょ?とポンッと私に放り投げられたのですが・・ 半分イジメられてる気持ちです・・・(笑 orz
754 :
749 :2014/04/08(火) 23:26:14.62
せっかく書いたのでボツにするのがもったいなく、一応アップ。
749の続き
4センチ×4センチは、切断した後の1片のサイズということですか?
それとも、印刷する枠の外形?
1片のサイズが4センチ×4センチということであれば、A4ラベル紙1枚に
5(短辺)×7(長辺)の35枚印刷することができます。
1片の紙の中に四角形(3段)を入れるわけですが、余白が必要。
余白部分をExcelの1行と1列で持たせるとして、1片分は4行×3列必要。
A4用紙を縦方向で印刷するとして、1枚分は(4×7−1)行×(3×5−1)列必要。
A1:N27の範囲に配置します。
1件目(用の四角)はA1:B3、C列と4行目は余白、右横の2件目はD1:E3・・・という具合。
2段目(6件目)はA5:B7から始まり、最後(35件目)の7段目最右端はM25:N27になります。
http://www.rupan.net/uploader/download/1396966831.png シート上の画面
http://www.rupan.net/uploader/download/1396966905.png 印刷プレビュー
で、
>>750 を受けてですが
そのプリンタとExcelの組み合わせで印刷精度はどれほどあるのですか?
これまで上記組み合わせでなにか印刷して利用したことがあるのですか?
通常のロール紙とラベルシートのロール紙での縦方向(用紙送り方向)の微妙な違いは大丈夫?
>>753 データあるならワードに差し込み印刷したら?
エクセルよりはまだ画面と印字が近いよ。大きさも調整できるし。
枠線はVBAでコピペして増やせばいいし、内容もVBAでコピペすればいい 問題は印刷時の大きさ合わせで、これが一番やっかい まずは一度印刷してみて、縦サイズが何%、横サイズが何%、縦余白が何ミリ、横余白が何ミリずれてるか調べ、 セルの幅と高さをVBAで修正するしかない 普通は2回修正して、3回目に最終チェックするから、最低でも3枚は無駄紙が出る たとえばセルの高さを0.2%大きくしたい時は Rows(i).Rowheight = Rows(i).Rowheight * 1.002 みたいな感じでループで回して微調整する
757 :
747 :2014/04/08(火) 23:35:56.41
752様ありがとうございます。 イラストレーターで200枠の雛形(?)は持ち合わせているのですが イラストレーターとエクセルはソフトがまったく違うので流しこめないと思いまして エクセルで一からできないかと思い、未熟ながらご質問させていただきました 以前はイラレで形、頂いたエクセルデータを手作業で貼って、金型で切り抜くという作業で作っていたようです・・ なので、一からエクセルで作れたらと思い・・・イラレの話題になるとスレ違いになるかと思いまして 印刷ソフトに関しましては、以前にも上司にプログラムやソフトの専門に依頼すべきだと言ったのですが 納期の関係でそんな暇はない!と・・右も左も分からない私がどなられてしまった結果です・・><(情けないです・・
758 :
749 :2014/04/08(火) 23:56:00.56
すみません教えてください。 C1=B2-A1かC1=B1-A2 の計算式ですがどちらかの計算をするにはどういった関数ですればよいですか? またこの計算をする場合にB2-A1の場合、A1だけB2だけにしか数字が入力がない場合はC1欄を空白にしたいです。 両方の条件が揃ったときだけ表示したいです。 下のようにしたいです。説明不足ならすみません。 どなたかご回答お願いいたします。 条件が揃うと自動入力 A B C 1 100 50 2 150 A B C 1 150 50 2 100 条件が揃わない場合空白 A B C 1 100 2 A B C 1 150 2
>>759 =IF(AND(A1<>"",B2<>""),B2-A1,IF(AND(A2<>"",B1<>""),B1-A2,""))
>>760 ホントにありがとうございます。できました。
もし時間があればこの式を日本語に直した場合をレスしてくれるとありがたいです。
762 :
名無しさん@そうだ選挙にいこう :2014/04/09(水) 02:21:23.03
>>761 A1B2が空白でない時C1=B2-A1、A2B1が空白でない時C1=B1-A2、それ以外C1は空白
宿題か?
プリンタのスペックはともかく、セットする用紙のサイズがわからんと作りようないじゃん ロール紙を使う場合、パソコンからどう見えるのかも重要だし、 打ち抜きもライン単位かシート単位かでフォーマットが全然違ってくる
>>763 分かりやすいありがたいです。
いや意味が分かれば次同じような問題あった場合には自分でできるようになりたいからです。
たくさん問題にぶち当たってすこしずつ作業は進んでいますけどまた質問すると思います。
ありがとうございました。
>>765 Excelのほとんどの機能について、Googleで検索して自力で勉強することが出来る
そうやって自分で理解するまで色んなサイトの説明を読み解くと
自然と自分で道を切り開いて意味を理解する力が手に入る
それでも乗り越えられない壁があったらここで質問したら良いよ
ここはそういう努力が面倒くさい人が質問するところだから、
勉強したい人が来るところじゃないと思う
>>745 ありがとうございます!
Resizeで困ってたことが色々解決できそうです!
Range("A65536").End(xlup).Rowでデータ件数を得るとき、 1行だと1が返りますが、0件でも1が返ってしまいます。 データ行があるか否かを判断するには、どうすればいいですか?
769 :
名無しさん@そうだ選挙にいこう :2014/04/09(水) 22:13:06.80
マクロの質問に関数で答えるバカw
>>768 XlUpはデータ数を調べるためにあるわけじゃないので自分で工夫するしかない
>>770 ワークシート関数はVBAからでも使えるし、有効活用した方が能率が良くなることも多い
>>768 XlUpの結果が1だったら1行目にデータが入っているかどうかチェックするだけ
>>769 ,771
MsgBox Application.WorksheetFunction.CountA("A:A")で試してみましたが
0件でも1が返ってしまいます。どこが間違っているでしょうか?
=COUNTA(”A:A")だと0が返るのに・・・
>>772 1発では無理ぽってことですかね。
とりあえず、それで我慢しますw
>>773 その書き方だとカッコ内に並べた文字列の個数が出る
CountA("A")だと1
CountA("A", "あ", "123")だと3になるってだけのこと
正解は Application.WorksheetFunction.CountA(Range("A:A"))
なんかセル(結合セル)に設定されているハイパーリンクをVBAで取得したら、 なぜか古いリンクが取得されるので、ウォッチでみたら、なぜか2つハイパーリンクがあるんですが。 セルに複数のハイパーリンクって仕様としてありえるの? 2007
778 :
名無しさん@そうだ選挙にいこう :2014/04/09(水) 23:58:47.02
>>773 Sub a()
MsgBox Application.WorksheetFunction.CountA(Range("A:A"))
End Sub
ワークシート関数はこれがめんどくさい
MsgBox Application.WorksheetFunction.CountA([A:A])
780 :
732 :2014/04/10(木) 11:21:45.79
>>735 >>738 すみません、レスが遅くなりました
>@本の様に例題?を自分で入力して、A本の指示の通りに進める
>という手順で毎回、毎回、見本の例題を入力する手間を省きたいと考えていますが
この手間を省く為にCD−ROMが付いていたりするのは無いでしょうか?
エフオーエムのMOS対策本がおススメでしょうか?
ここの回答者の皆さんはどうやってスキルを磨いたのでしょうか?
>>780 理系的思考ができる人(数学の点数が良いとか計算が早いという意味ではない)であれば
わざわざ問題集なんか買わなくてもある程度試行錯誤してれば自然と身につくんだが
あんたの場合はそうじゃなさそうなんで、FOMの本買って地道に問題解いた方がよさげ。
まぁ、それでそれで即戦力になるかっつうとそれは、理系的(ry なので
また別の話になるけど、何も知識がないよりはマシになるだろ。
実際、MOSの資格持ってる人でも何年も仕事しててもサッパリ覚えない人はいるし
できないやつはいつまでたってもできない。
潔く諦めることも必要。
一般的に使われる関数はMOS本で十分カバーされてるはず 今は実質エフオーエム一択。問題集は実際の試験問題と内容ほとんど一緒だから 練習で90点取れれば実試験も問題ない 後は白紙から自分で作るようになってから難題に直面→関数解説のサイト見たり本買ったり
783 :
775 :2014/04/10(木) 19:28:52.56
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2000 【3 VBAが使えるか .】 否 【4 VBAでの回答の可否】 可 VBAでSelectionがB列内であれば処理1、そうでなければ処理2 という事をしたいのですが「Selection = B列内」の部分の記述の仕方が わからないのでどなたか教えてもらえいないでしょうか?よろしくお願いします。
>>785 If Not Application.Intersect(Range("B:B"), Selection) Is Nothing Then
"処理1"
Selectionの範囲とB列が重なっていれば "処理1"となる。
限定したければ必要条件に合わせてSelection.Columns.Count = 1のような制御を追加。
一般にはSelectionではなくSelectionChange,DoubleClickなどのイベントのTargetを使う。
>>786 使ったことのないものがたくさん出てきたのでひとつづつググってマスターしたいと思います!
ありがとうございました!
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 否 【4 VBAでの回答の可否】 可 VBAでブック内すべてのシートの保護を解除したいのですがパスが2種類あるので このパスでなければこのパスというようにしたいのですが Ifの条件指定をどのように記述すればよいかわかりません。 どなたかわかるかたいればよろしくお願い致します。
788ですが状態としてはパスなし、パスAAAA、パスBBBBが混在するブックのシートの保護をすべて一斉解除したいということです。
>>788 パスワードが合っているかどうか直接判定する方法はなかったと思うんで、エラーを無視して強制的に処理する
Sub 全シート一括解除()
On Error Resume Next
For Each s In Worksheets
s.Unprotect Password:="AAAA"
s.Unprotect Password:="BBBB"
Next
On Error GoTo 0
End Sub
列数がCAぐらいまである表で任意の1つのセルを選択した状態 (たとえばBA22を選択)から その行を端から端まで選択した状態にできるコマンドはあるのでしょうか? (A22からCA22までが選択された状態に。。)
>>791 表がデータで埋まってて空白セルがなければ
Ctrl+←、Shift+Ctrl+→
あるいはマクロにショートカットキー登録
>>790 目から鱗です!素晴らしい回答ありがとうございます!
>>792 ありがとうございます!
空白行があるとそこまでなのですね、、残念。。
画面分割させて離れた場所のデータを見比べているのですが
ハイライトできないと点在するそれぞれのセルを見比べるのに非常に手間がかかっている感じです。
画面分割で3つめはできないのでしょうか?
>>795 excelをもう一つ立ち上げて、読み取り専用で同じファイルを開く
スクロールが同期しないけどね
>>791 参照するときの見易さのためなら、
こういうのをしてる。
対象の表に条件付き書式を設定
=Row()=Z1 書式は好きな色で。
でZ1に、見たい行番号を入れる。
Z1は任意の使いやすいセル番地で良い
条件式は、行でなくて任意の列の値と一致するという式でも。
799 :
791 :2014/04/13(日) 15:33:28.75
>>798 797だけど、勉強になったよ、ありがとう!
801 :
名無しさん@そうだ選挙にいこう :2014/04/13(日) 23:29:57.49
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 シートのデフォルトの状態で、 A1に「aaaaaaaaaaaaaaaaaaaaaaaaaasaigo」 と入力、 A1A2セルを結合→折り返して表示、で全部表示させようと思いましたが上手く行きません。 セル結合をしなければ自動的に行の高さが調節されるようなのですが、 結合後だと上手くいきません。 うまく表示出来る方法はありますか?
>>801 無理
確か仕様>結合セルの自動高さ/幅調整
>>801 結合すると自動調節されない理由は、何行目を広げるか自動では判断できないため
VBA可だからWorksheet_SelectionChangeイベントでやればいい
フォントサイズと文字数から必要な行数(高さ)を計算するのが正当なんだろうけど、時前でやるのは大変すぎるので、
俺なら作業行を使って結合してないセルに同じデータをコピーしてExcelに高さを計算させる
以前
>>785 という質問をし
>>786 さんよりご回答いただいて
SelectionChangenなど教えていただき自分の場合は最終的に
If Not Application.Intersect(Range("B:B"), Selection) Is Nothing Then
で解決したのですがさらにB列からJ列まで指定してれば処理1という記述をしたいのですが
どのようにすればよいでしょうか?
(上記に単純に("B:J")をいれるとB列からH列までしか指定していなくても処理1になってしまうため)
よろしくお願いします。
>>804 選択範囲にB-Jが含まれてたら、たとえばA-Zでもいいのならこんな感じ
Set r = Application.Intersect(Range("B:J"), Selection)
If Not r Is Nothing Then
If r.Columns.Count = 9 Then
処理1
>>805 ご回答ありがとうございます。
もしA〜Z列を指定した場合であれば処理2としたいのであくまでB〜J列指定で処理1としたいのですが
どうでしょうか?
>>805 さん
>>806 と思いましたがAnd でColumns.Count = 9 Thenとその他の列をNothing指定でこちらの要望どおりにできました。
すごく参考になりました!ありがとうございました!
B1 =IF(A1="","",01) A1が空白だったら、B1に 01 としたいのですが、 1になってしまします。 文字列にしたら、関数は効かなくなりますし、解決方法はありませんか?
>>808 うっ?
=if(a1="","01","")では?
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 コピペまで 【4 VBAでの回答の可否】 可 よろしくお願いします。 1、1行目を削除 2、J2から下へ(A列に値の入っている行まで) それぞれの行のD〜Iの合計値を返す 3、D・E・F・G・H・I・Kを列ごと削除 4、B1を"コード"へ変更 5、D1を"ダンボール箱"へ変更 6、各行でDの値が0(ゼロ)であれば行ごと削除 7、E列を切り取り、A列より前に移動する 8、並び替えをする、優先順位1=A列の文字列順、優先順位2=B列の文字列順 9、セル幅を文字幅に合わせて調整する 10、A列の文字が変わるごとに空の行を3行入れて 空の行の最後に1行目の列を挿入していく(列1をヘッダーとしていく) 11、A列に値が入っていれば、E列まで罫線で囲い込む 12、D列には数値が入っているので「,(カンマ)」を入れる
ここまで意味の分からない書き込みも珍しい
813 :
811 :2014/04/18(金) 19:47:54.57
すみません 1、12、までを順番に処理していくVBAをお願いしますorz
814 :
名無しさん@そうだ選挙にいこう :2014/04/18(金) 20:06:28.28
すいません。 たとえば10年と11ヶ月という期間を10.11と持ってるデータを、小数点以下だけ10進数に直したいのですが、どうすればいいでしょうか?小数点以下は二桁の場合もあれば一桁の場合もあります。
>>813 宿題の回答じゃねーんだよ
自動記録でやりゃあいいだろ
=(A1-INT(A1))/12
>>817 intとrounddownってどう使い分けてるのー?
これだとintしたやつ足さないとダメじゃない?
819 :
名無しさん@そうだ選挙にいこう :2014/04/18(金) 20:43:58.46
>>814 まさかとは思うが 10年 1ヶ月が 10.1 で、10年 10ヶ月が 10.10 とか言うんじゃ...
文字列で持ってるなら Split( ) でいいけど
821 :
811 :2014/04/18(金) 22:03:16.90
2番の時点で自動記録ができませんでした
>>811 ,821
ステップ2 は、J2セルへ =sum(D2:I2) の入力と
J2セルをJ3セル以下にドラッグコピー
J列のコピー
J列へ値貼り付け
でいいんでしょ 自動記録できますよ
ステップ6 の D は、上記ステップ2のJ列のことですよね
ステップ7 は、A列に1列挿入+E列切り取り+A列に貼り付け でいいと思う
ただ、このE列ってのはステップ2時点でのL列になるのかな?
ステップ10 は意味不明 処理前と途中経過、処理後のシートのイメージを
出してもらえれば、誰かヒマな人が作ってくれるかも
>>822 処理するシートは毎回行数が違うため、
自動記録では2、
「A列に値が入っているところまでsum(D2:I2)をコピー」
と
6、の「Dの値が0であればその行を削除」
ができません。
=(A1-INT(A1))*10
5年10ヶ月が"5.10"という文字列になっている場合 =MID(A1,FIND(".",A1)+1,2) 大量のデータを一括で変換したい場合は区切り位置
A1セルに4/20と入力し、書式を定義して2014/04/20に表示してるとき、 4月の4を文字列で返すにはどうすればいいでしょうか? 今は、次のようにやってますが、もっとシンプルな方法があれば教えてください。 a = CStr(Right(Left(Range("A1").Text, 7), 2) * 1)
827 :
826 :2014/04/20(日) 01:18:38.58
書式の定義はyyyy/mm/ddです。
>>826 文字列に変換する必要あるの?
別に数値のままでも文字列として処理できるよ
>>826 a = Format([A1], "m")
>>829 横レスだけど、月ごとの件数countifや合計sumifsを日付のままで、集計出来たっけ?
=month(日付セル)で抜き出してやってるけど。
>>823 マクロの自動記録とコピペまで出来るなら、
勉強してみるに丁度良いレベルの問題なんじゃない?
Googleで検索出来る環境ならすぐに答えに行き着けると思うけど
2はxldown(意味がわかればxlupの方がいい)
6はif文を使う
多分他のみんなからして言わせんな恥ずかしいっていう程度の質問だよ
質問です 【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2002 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 後述のような表を作ったのですが、ピボットテーブルならすっきり作れると聞いて ウィザードで作ったのですが意図どおりになりません。作ったのは 種類|色|所有者A|B|C|←項目 トップス|赤|1(個) |3|3| |青|2 |2|1| |黒|2 |3|1| ボトムス|赤|1 | | | |青|3 |2|1| |黒|2 |2|1| といった感じのもので、これを選択してピボット作成ウィザードで [種類] ←これをクリックしてトップスやボトムスを切り替える 色|A|B|C| 赤|3|2|1|←誰がどの種類の何色を何個持っているか一覧で見たいだけ 青|3| | | といったテーブルにしようとしたのですが、下記のようになってしまいます。 空白 |A|B|C| 色|▼|3|2|1|4||1|合計|←ここだけ横に長くはみ出て異常に長く余計な計算とかしている 赤 | | | |←┐ 青 | | | |←何もない うまく説明できたかわかりませんが、最初の表を作り直すしか方法はないのでしょうか?かなり大がかりな細かいコピペの繰り返しになるので、できればこのままやりたいです。
834 :
833 :2014/04/20(日) 11:27:17.13
改行制限に引っかかったので連投で失礼します。 ググって調べた所、下記のような表に作り直してから ピボットウィザードを使えばいいのではないかと思ったのですが 基本的な仕組みや概念がわかりやすく理解できるページを見つけ出せず、 見つけたページでは読解力不足でいまいち理解できておりません。解釈としてはこれで正しいのでしょうか? 種類|色|所有者|個数|←項目 トップ|赤| A | 3 | トップ|青| B | 1 | ボトム|赤| C | 2 |
オートフィルタに集計行つければいんじゃないの ピボットでやるなら、ほんとはこうなってないといけない 種類|色|数量 |所有者| トップス|赤|1 |A | トップス|赤|3 |B | トップス|赤|3 |C |
836 :
833 :2014/04/20(日) 12:47:08.43
ありがとうございます。やはりそうなってないといけないんですね 集計行をつけたら (空白) |A |B|C| |2 3 4 ←┐ |(空白) 3 4 5 10 3 ←長すぎるので省略 色▼|集計▼|(空白) 1 2 3 4 (空白) (空白) (空白) (空白) 1 ←┘ 赤 |(空白)| | | | | 黒 |(空白)| | | | | 青 |(空白)| | | | | のようになってしまい、おそらくこの状態でピボット側だけを修正して解決するのは 不可能なんじゃないかと思えてきました。 おそらくは、やり方を探す時間と労力を費やすよりも、ちまちまと表の作り直しに数十時間をかけて きちんとしたピボットを組む方向でさっさと動いたほうが負担が軽く早そうに思えるので、そのようにします。 助言ありがとうございました。
いや 元の表にオートフィルタかけて集計行つけるだけ ピボットその他の加工はいらない
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 超基本ですみません。 条件付き書式の質問です。 セルに数値が入っていて、 1.もし正の数なら白(最小値)〜緑(最大値)の間でグラデーション 2.もし負の数なら白(最大値)〜赤(最小値)の間でグラデーション この2つを同時に満たすようセルの色を設定したいのです。 色と濃淡で直感的に数値がわかるように。 よろしくお願いします。
>>838 まず条件付き書式→カラースケールの一番最初のやつを選ぶ
そうすると赤黄緑のグラデーションになるから、次に条件付き書式の一番下のルールの管理を選ぶ
ルールの編集をクリックすると色と数値の設定画面が出るから中間値を「数値」「0」にして色を白にする
最小値や最大値も設定したい時はお好みで
>>837 読解力不足ですみません。やっとわかりました。言われた意味を勘違いしていました。
オートフィルタをつけるだけだと、トップスでフィルタをかけると赤の行しか出てこない状態です。
種類のセルには色の数だけ結合をかけているため(トップスは赤青黒の3行ぶん結合している)
種類列の結合を解除してコピーし直さないといけないので
それは避けたいと思って試行錯誤していました。
投稿のために省いていますが、実際のデータは種類と色数にあたる部分が多いので…
どっちにせよ数百種類x数十色数ぶんをコピー・並び替えし直さないと解決しないようなので、今作業しています。
あと、フィルタのタブを押下した際の並び順が強制的に50音順になりますが
種類の並び順はかなり重要なので、これをカスタムできないと厳しいため
ピボットで何とかできないかと思いました。
見出し要の「種類」とフィルタ用の種類を分けるって方法もある。 本来、データベース用のテーブルでセル結合なんてしてはいけない。 並び順はユーザー定義できる つまり任意の並び順になるよう登録が可能
>>841 視認性のために表を作っているので、種類の項目は結合しないと
不要な同じ文字列がびっしりと並んでしまい本末転倒なので…
閲覧用のテーブルとデータ用のテーブルで分けると
無駄な情報が増えるうえに重くなってしまうので避けたかったのですが、
すっきり表示するためにはそれしかなさそうですね。
フィルタのユーザー定義は、ピボットテーブルのウィザードなどでも試みましたが
選択しても自由に設定ができず、あらかじめ決められた定義の中から選ぶ事しかできなかったので諦めていました。
ふりがなデータを利用して、並べたい順に数字でふりがなを振ればいけるようなのでやってみます。ありがとうございます。
>>839 どうもありがとうございます。
できました。
3色の設定にするのですね。
2色のルールを2つ組み合わせようと試行錯誤してました・・。
助かりました。
>>842 まず元となるデータベースがあって、それは同じ項目がいくつも並んでいてとても見づらく無駄に感じる物ですが加工に適しています
そこから必要に応じて見やすい一覧表を作ったり集計するのが本来のやり方なのです
Excelの色々な機能も、そのように使う前提で設計されているのです
入力と出力は分けるのがシンプルで美しい結果を得るコツ 素人はどっちもひとつの表で間に合わせようとするからいろいろとおかしくなる
847 :
名無しさん@そうだ選挙にいこう :2014/04/21(月) 00:35:49.66
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 うろ覚えですが、知り合いがマクロやプッシュボタンを使わずに 図形の中にIFかなにかの関数を割り当てて 図形をクリックするとマクロのように効果が出るように設定していました。たしか集計か置換が発生してたような? これのやり方に心当たりある方いますか? その知り合いは 「学校でちょっとやっただけでExcelよくわからない」と言ってたから 難しい動作じゃないと思うし、割り当ててる内容もそんなに長い文字列ではなかった気がします
知り合い以外ではエスパーしか回答できないだろうな
ちょっと待て その図形は ただのボタン
850 :
名無しさん@そうだ選挙にいこう :2014/04/21(月) 10:06:50.81
図形 クリック イベント 辺りでぐぐって。
847です。
>>848 かもしれないですが、知り合いといっても連絡先も知らなくて
本人に確認ができないので、藁にもすがる思いで
僅かな情報を絞り出して書きました。
>>849 質問時に書いたように、ボタンではないです。
図形ツールで設置するところをしっかり目撃しました。
>>850 ググってみましたが、マクロを使わないといけないようです。
その知り合いはVBAとか全くわからない人だったのと
(マクロが使えるか私に聞いてきて、ダメと答えると、自分も全くわからないしじゃあこれしかないかと言いながらこの図形のやつを作り始めたので。)
図形を作るときに関数を入力していたので、マクロを使わずにできるようでした。
後日私がそのブックを開く機会があったときも、「このファイルにはマクロが使われています」というダイアログも出てきませんでした。
ひょっとして高等技術なのでしょうか?
>>851 別にマクロ使ってるブックだからといって
必ずダイアログが出るわけじゃないんだが。
【1 OSの種類 .】 XP 【2 Excelのバージョン 】 Excel2000 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 アクティブシートがsheet1の状態で Worksheets("sheet2").Cells(Rows.Count, 14).End(xlUp).Offset(1, 0).Select だとエラーが出て Worksheets("sheet2").Select Cells(Rows.Count, 14).End(xlUp).Offset(1, 0).Select のように一度sheet2をセレクトしてからだと動くのですが前者の動かない原因を教えてもらえないでしょうか? よろしくお願いします。
854 :
名無しさん@そうだ選挙にいこう :2014/04/21(月) 14:22:37.89
>>854 ありがとうございます。
>>332-333 の意味がようやくわかりました。
この時はソートとセレクトを書き間違えたのかと思い、ソートはシートを選んでから使ってねっと回答されたと
自分なり解釈したのですが、多分質問がこちらの意図とは別に回答者さまに伝わっていたのですね。
その後のレスにもある通りソートのレンジ指定がワークシートから指定していなかったことがこのときのエラーの原因だったので
すっかりこの回答のことを忘れていました。
>>851 フィルターか条件付き書式じゃねえの?
図形の中に関数書くなんてないと思うけど。
最初から最後までその作業を見てたわけじゃないんだろ?
857 :
名無しさん@そうだ選挙にいこう :2014/04/21(月) 17:24:27.82
エクセルのウィンドウタイトルバーに 普通のウィンドウと同じ色をつけたいんだけど どこの設定をいじればいいですか?
>>857 osとofficeのバージョンぐらい書けやカス
オプションだよ
859 :
826 :2014/04/21(月) 19:23:34.64
レスが遅くなりすみません。
ご回答くださった方、ありがとうございました。
>>828 それだとダメでした。
>>829 変換する必要があったから、CStrで変換してたわけで・・・
>>830 なぜかうまくいきました。
>>852 >>856 そうなんですね…一応最初から最後まで見ていたときもありましたが、
ぼんやり眺めていたので肝心な部分が曖昧です
条件付き書式について調べたら動作はかなり近いものがあるので、これを勉強してみます。
曖昧な質問を長々とすみませんでした。ありがとうございました。
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 ForでC1セルからC列の最下行まで辿り、丸付き数字(@〜S)が入ってたら、 変数nに代入するにはどうすればいいでしょうか? If Cells(i, "C").Value = "@" Then n = Cells(i, "C").Value ElseIf Cells(i, "C").Value = "A" Then ・ ・ ・ というのは、ちょっと品がないので・・・
>>851 =847=860じゃないの?
>>833 も同一人物なの?
にしてはPCのスペックが違うようだが。
fglkjgrfkj;l
あ、規制溶けた
>>862 Sub a()
For i = 1 To 10
If Asc(Cells(i, 1).Value) > -30913 And Asc(Cells(i, 1).Value) < -30892 Then
n=Cells(i, 1).Value
Cells(i, 2) = Asc(Cells(i, 1).Value) + 30913
End If
Next
End Sub
>>865 Ifのところで、
「プロシージャの呼び出し、または引数が不正です。」
とメッセージが出てしまいます。
>>862 ◎ = Cells(i, "C")
If "@" <= ◎ And ◎ <= "S" Then n = ◎
>>866 C列全体ならこう
For Each ◎ In Intersect(ActiveSheet.UsedRange, [c:c])
If "@" <= ◎ And ◎ <= "S" Then n = ◎.Text
Next
【1 OSの種類 .】 XP 【2 Excelのバージョン 】 Excel2002 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 SUMIFSのようなことがしたくて下記のようなものをつくりました。 データは1行が商品コード、名称、月、数量のような並びです。 選んだセルの商品コードから月があえば数量を足していき別のシートに順番に書き出していくイメージでつくりました。 選んだセルの最初の処理はSUMIFSのように機能するのですが2つめの処理から数量の和が0になってしまいます。 なぜ2つめの処理からの和が0になるのかと解決策を教えていただけないでしょうか? よろしくお願いします。 (問題自体はSUMPRODUCTを最近知ったので解決済みです) Dim MON As Integer, DC As Long, i As Long, i2 As Long, FE As Range, i3 As Long i3 = 3 '別シートのレンジ用 i2 = 4 アクティブシートのレンジ用 MON = Range("R2") '月の数字が入ったレンジ For Each FE In Selection i = 0 '数量の和 ループのたびに0にして足していくつもりでした。 Do Until Range("D" & i2) = "" If Range("D" & i2) = FE And Range("D" & i2).Offset(0, 14) = MON Then 'D列が商品コード、14列右に月が入っています。 i = Range("D" & i2).Offset(0, 17) + i 'Dの17列目に数量がはいっています。 End If i2 = i2 + 1 Loop Worksheets("Sheet2").Range("A" & i3) = i i3 = i3 + 1 Next FE
>>870 Do Loop の直前に変数 i2 の初期化が必要と違うか? チラっと眺めただけなので的外れならごめん。
872 :
複乳 :2014/04/22(火) 18:20:22.59
手術って大変やな。どうでもええけどな。
>>870 selectionがわからん。せめてrengeで決めてくれ
>>870 根本的にアルゴリズムがおかしい
1つ目を集計した所でi2が最終行まで行ってしまうのでForの2周目以降はすべて0になる
かと言ってi2を毎回4に戻すのもFEに戻すのも変
ループごとに商品コードと月の重複をチェックしていないから、同じ結果がいくつも出てきてしまう
>>847 です。
>>863 レス番を間違えました。
>>833 は全く違う人です。すみません。
訂正すると連投しすぎで鬱陶しくなるし恥ずかしかったので放置してしまいました。
>>871 ありがとうございます!たしかにそれっぽいですね!明日たしかめてみます!
>>873 商品コードがならんでいるのでいくつか選んでRangeの月に出た商品のそれぞれの合計を出したいイメージでした。i2を毎回4に戻すのは変なのですね。とりあえずたしかめてみます!ありがとうございました!
名前の定義がデータ200以内というのを最近始めて知ったのですが、200行以上のデータを扱う際に適した機能などはあるでしょうか
>>876 そうだったの?
知らずに1500行超えても使えてたけど
$B$200の部分だな ここの行数をもっと大きくすれば200以上でも対処できる
では私のミスなんですね・・・「BSheet」という名前で、
Sheet2に行数が増減する200件以上のデータを入力し、
名前の管理にて
=OFFSET(Sheet2!$A$1,0,0,COUNTA(Sheet2!$A:$A),18)
を作り、
VLOOKUP($E24,Bsheet,3,FALSE)
のように利用しています。E列をもとに、Sheet2のA列と照会してます。しっかり照会され、VLOOKUPも正しく機能しているように見えたのですが、
実際は178行目から先はエラーしか返しません。
また、「BName」と名づけ、内容を
=OFFSET(Sheet2!$A$1,,,COUNTA(Sheet2!$A:$A))
としたものを、データの入力規則よりリスト、
=BName
と指定しドロップボックスで選択できるようにしています。
これはE2からE20で同条件の指定をしてますが、やはり同様に178行目までしか読めませんでした。
BSheet、BNameとも178行目までしか参照せず、179行目からはエラーとなってしまいます。
名前の管理で参照範囲を確認した場合も、178行目までのみを点線で囲っていました。
これはどのように修正したらよいのでしょうか。
http://www.rupan.net/uploader/download/1398218278.jpg 参照範囲を確認したところ、178行目までしか参照してくれていない
http://www.rupan.net/uploader/download/1398218370.jpg 基準セルがうまく指定できず、-22と追記して見た目うまくいったように見えたもの
>>880 よくわからんけど例えば=OFFSET(Sheet2!$A$1,0,0,COUNTA(Sheet2!$A:$A)+50,18)とかやっても無理?
882 :
862 :2014/04/23(水) 20:20:20.05
>>867 ,869
うまくいきますた。
ありがとうございます。
>>881 説明が判りづらくてすみません。
BNameについては+50したことでうまく動作しましたが、BSheetは変わらず#N/Aを返しました
チェックする範囲を、COUNTAで取得したもの+50まで広げたという解釈で間違ってないでしょうか。
そして、ふと思い立ちSheet2のA行の空行に適当な文字列を入れて埋めたところ、埋めた行数だけ正常に認識してくれるようになりました。
正解は「空行をカウントしない」だったようで、大変初歩的なこと、失礼しました。
884 :
名無しさん@そうだ選挙にいこう :2014/04/27(日) 14:29:12.35
【1 OSの種類 .】 windows7 【2 Excelのバージョン 】 Excel2013 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 不可 どなたかお願いします。 仮に取扱品目が100品目あるとして、そのうちの20品目だけが、別途添付 書類が必要となるのですが、その品目コードが規則性がほとんどなく割り 当てられていて、発注自体も毎回ランダムに組み合わされて出てくるので、 その添付書類が必要な20品目の発注があった場合に自動的に検出・検索 出来る簡易のシステムを作りたいと思っています。 EXCEL関数か何かでいい方法はないでしょうか。以前の条件付き書式であ れば作れたと思うのですが、EXCEL2013の条件付き書式だと、それに該当 しそうなものが探した限りではないように思われます。
>>884 「仮に」ってことならIF関数がお勧めかな
あとは「ランダム」ってことでRAND関数も使えそう
VLOOKUPで
添付書類が必要な20品目をリストで管理してVlookupすればいいんじゃね その場合は数式のコピペが必要になるが、コピペが嫌ならVBAで処理する必要がある RAND関数は絶対いらんだろw
888 :
884 :2014/04/27(日) 15:39:00.77
>>886 ,887
ありがとうございます。
やはりVlookupですか。今一使い方が分からないんですよね。
それと、コピペが出来ればいいんですが、元データが、
PDFなもんで、そもそもそれをexcelかwordデータに変換する
ところがまた問題なんですが。
>>888 コピーが禁止されてないPDFなら、開いたら画面を右クリック、選択ツールにして
Ctrl+A、Ctrl+Cでコピーできる
ExcelでCtrl+Vでコピペ完了
ただし一覧表はぐちゃぐちゃになることもけっこう多い
891 :
884 :2014/04/27(日) 16:11:09.70
>>889 ,890
ありがとうございます。
試してはみますが、PDFデータの方は、要は全体で1つの画像みたい
になっていて、画像としてならwordとかに取り込むことも出来る
と思うんですが、要はデータの中の数値を数値として認識していな
いように思います。おそらく元データ側でそういう設定にしている
ものと思います。
PDFが画像ならOCRするしかないが、目でチェックする必要はあるな
OCR使うなら読み取り革命がオススメ 体験版の内に全部すませれ 中途半端なOCRは「時間」が「時問」になったりして、目で追うのも辛いぞ
リンゴ 11 イチゴ 12 リンゴ 10 イチゴ 3 イチゴ 11 ↓ソート 日付順 (日付欄は割愛) リンゴ 11 リンゴ 10 イチゴ 12 イチゴ 3 イチゴ 11 ソート後に縦並びに分類されたデータからリンゴとイチゴの数の推移の表を作りたいのですが簡単にできる方法はありますでしょうか? リンゴ 11 10 ・・・ イチゴ 12 3 11 ・・・ このほかにも多数項目が有り手作業で並べると何日かかっても終わらないと気付きました・・宜しくお願い致します。(VBA可)
895 :
894 :2014/04/27(日) 21:23:07.73
>>894 説明が足りていませんでした。
日付はソートの第2条件です。。 第一条件は種類名です。
>>894 種類名と日付でピボットテーブルを作れば一瞬で終わる
>>896 ピボットテーブルで思い通りのグラフができた試しがありません。
自分の勉強不足だと思いますが。。今回のもリンゴだけではなくフジリンゴのようなマイナーネームが複数有り超縦長の表がてきてしまいました。
だからリンゴとイチゴだけにしぼってピボットつくればいいじゃん
899 :
894 :2014/04/27(日) 22:06:08.98
>>896 教えて頂きましてありがとうございます。(お礼を言い忘れていました、すみません。。)
補足しますとソート上では先頭がリンゴでリンゴフジタイプ12のような名前でもリンゴはリンゴで集合しています。ピボットにしますと再度全項目が細分化されます。
先頭文字を再サンプルして分類したい項目タイトルを新規列に入れ込むとできるかとか思いますが字数が一致しないタイトルとか微妙です。。
質問例と実際がちがうんだろうから説明がめんどくさいなー 集計したい項目を列につくって、それをピボットで集計すればいいよ フジリンゴの横にリンゴって列をつくるの
>>899 だったら最初から質問にそう書けよ
そういうのを「後出し」って言って、質問スレでは一番嫌われるパティーン
902 :
894 :2014/04/27(日) 22:19:48.55
>>900 詳しく教えて頂きましてありがとうございます。
ピボットは10度目の正直ぐらいですが、、挑戦してみます。
【1 OSの種類 .】 windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 不可 A B D C A A B C C 上のようにランダムに山程ある単語から A3 C3 B2 と言った感じで複数有る物を、多い順にカウント、無理なら順番関係なしでも可って可能です? COUNTIFで全部手動で条件指定は種類多いので…
>>903 縦一列に並べて重複しないようにフィルタをかける 「詳細設定」の「重複するレコ〜」
後はそれを元にcountif
多い順に並べたければ並び替え
1列に並べてピボット
ピボットキライ
>>903 >>904 全データが縦一列になってたら、ピボットテーブルで重複チェックも並べ替えも簡単にできる
>>906 いっぺんやってみ
集計が簡単すぎて失禁するレベル
集計って機能はある意味害悪だよな
>>908 データの入れ替えが発生した時に手動で更新しないといけないのが糞だと思う
>>904-905 ,907
ありがとう、一応欲しいデータは取れたよ
後出しで悪いが…左に固定の項目有って途中でその項目を
追加や消去したら連動して結果変わる仕様ってのに出来ればしたかったが…
ピボットの達人になるには一体どうすれば良いのでしょうか?
ピボット師匠に弟子入りしなさい
何でもそうだけど使わないとうまくならない なんでも使うことだな
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel 2007 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 VBAのコードをお願いします。 「kobana」と言うシートの2行目〜最終行を 「kanza」と言うシートの最終行以降に貼り付けができるVBAをお願いします。 *2つのシートの行数は毎回変動します *どちらのシートのA列には最初から最終行まで値が入っています。
>>916 めんどい。せめて自分である程度書いてきて
シートの選択は
vba シート アクティブ で
最終行の取得は
vba 最終行 取得 で
行のコピーは
vba 行 コピー で
それぞれ取得できる
>>916 ヒント
Sheets("Sheet1").Select
Range("2:" & Range("A1").End(xlDown).Row).Copy
Sheets("Sheet2").Select
Cells(Range("A1").End(xlDown).Row + 1, 1).Select
ActiveSheet.Paste
919 :
916 :2014/04/28(月) 10:16:36.81
「kobana」と言うシートを選択 Ctrl+Home (A1セルを選択) ↓ (A2に移動) Ctrl+Shift+↓ (A列の2行目から最終行目までを選択) Shift+Space (行選択) Ctrl+C (コピー) 「kanza」と言うシートを選択 Ctrl+Home (A1セルを選択) Ctrl+↓ (A列の最終行に移動) ↓ (最終行の次の行へ移動) Ctrl+V (貼り付け) これをマクロで記録しる
最終行の取得はCtrl+↑でやったほうが
922 :
916 :2014/04/28(月) 11:35:08.30
>>920 >>921 マクロ記録でこんな使い方があるなんて知りませんでした。
ありがとうございます。
923 :
916 :2014/04/28(月) 13:12:44.54
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel 2007 【3 VBAが使えるか .】 コピペしかできません 【4 VBAでの回答の可否】 可 連続で質問してすみません。 F2に関数が入っていて、その関数を下へ向かってコピーしたいと思います。 コピーする最終行はA列の値が入っている最終行までです。 そこで↓のコードを見つけたのですが、 Range("F2:F2").AutoFill Destination:=Range("F2:F" & Range("A1").End(xlDown).Row()) A列に空白行が入るとその行で止まってしまう事と 開いているシートでのみに適応しているので、常に「kobana」と言うシートを選択して 実行したいと思います。よろしくお願いします。
>>923 最終行を探す時、上からxlDownを使うと空白のところで止まってしまう
そういう時は一時番下からxlUpで最終行を探す
Cells(Rows.Count, 1).End(xlUp)
【1 OSの種類 .】 Windowsバージョンあまり関係なし 【2 Excelのバージョン 】 Excelバージョンあまり関係なし 【3 VBAが使えるか .】 VBAは関係なし 【4 VBAでの回答の可否】 VBAは関係なし 参照が多過ぎてシートが重くなりvlookupをindex(match())にしたのですが、 例えばA1〜A100に参照が必要なデータ、B1〜B100、C1〜C100、D1〜D100に対応するデータがあり、 E1、E2、E3に、参照内容 F1にB列、F2にC列、F3にE列の対応データを表示する場合 べたうちで F1=index(B1:D100,match(E1,A1:A100,1),1) F2=index(B1:D100,match(E1,A1:A100,1),2) F3=index(B1:D100,match(E1,A1:A100,1),3) とするのと、立体参照せずに列のみ参照で F1=index(B1:B100,match(E1,A1:A100,1),1) F2=index(C1:C100,match(E1,A1:A100,1),1) F3=index(D1:D100,match(E1,A1:A100,1),1) とするのと、 F4あたりにF4=match(E1,A1:A100,1)を入れて、 F1=index(B1:B100,F4,1) F2=index(C1:C100,F4,1) F3=index(D1:D100,F4,1) とするのでは、どれが一番効率的でしょうか?
訂正 E1、E2、E3に、参照内容 F1にB列、F2にC列、F3にE列の対応データを表示する場合 ↓ E1に、A列を参照するためのデータ F1にE1に対応したB列のデータ、F2にC列データ、F3にD列データを表示する場合
928 :
916 :2014/04/28(月) 15:20:23.62
>>925 Cells(Rows.Count, 1).End(xlUp) はどこと入れ替えればいいですか?
Sheets("kobana").Selectを先頭にもってきていいですか?
>>926 一番下
とにかく参照範囲、県産回数が少ない方がいい
930 :
916 :2014/04/28(月) 15:42:32.68
すみません。 i = Cells(Rows.Count, 1).End(xlUp).Row Range("F2").Select Selection.AutoFill Destination:=Range("F2:F" & i) でできるようになりましたが Sheets("kobana").Select i = Cells(Rows.Count, 1).End(xlUp).Row Range("F2").Select Selection.AutoFill Destination:=Range("F2:F" & i) だとできなくなります。よろしくお願いします。
933 :
916 :2014/04/28(月) 16:03:33.22
スペルが間違っていただけでした お騒がせしました
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel 2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 Excel2010でシートを作っていますが、Excel97と、Excel2003の人が使いたいと言っています。 Excel97やExcel2003では、縦横同時「非表示」に付いていけるのでしょうか? 現在、Excel2010ではそのシートを縦にFO〜GVと、横に113〜270を同時に(十字状に)非表示にしています。
>>934 列・行が非常に多いシートは使わないほうが良い
937 :
934 :2014/04/29(火) 10:47:29.89
いまだにoffice97を使っていることに不安を覚える
いちいち他人の使ってるソフトのバージョンで不安になる人がいるかと思うと不安で寝れない
会計士の知り合い数人いるけど誰一人ピボット使える人なんていないんだけど ピボットを使いこなしてる人は何やってる人なの?
むしろ会計士がExcelつかってるのが不安だな 専用ソフトつかえよ
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel 2010 【3 VBAが使えるか .】 すこしは 【4 VBAでの回答の可否】 否 集計表を作成していてA列に数値データB列に関数を入力して計算させています。 基本的にはB1に=A2-A1の結果を表示させたいのですが、 いくつか条件を持たせたいのです。 @A1,A2両方に数値が入力されていたら計算。 AA1が空白の時は""を返す。 BA2が空白かつ、A3に数値が入力されていたらA3-A1とする。 但しA2が空白のときにA3に数値が入力されているとは限らないので下方向に みて次に数値が入力されているセルを計算対象とする。 以上ですがとりあえず@とAの条件は =IF(AND(ISNUMBER(A1),ISNUMBER(A2)),A2-A1,"") で出来たのですがBの条件をクリアする方法が分かりません。 どうしたらよいかご教示願います。
>>942 =if(and(a2="",isnumber(a3)),a3-a1,if(and(〜
ってことじゃなくて?
>>943 ひっかかってるのは、「次に数値が入力されているセル」の部分だと思う
縦に参照する数式入れると、 ソートもかけられなくなるから、 1枚のシートではしたくないね
作業列を追加したほうが楽そう
空欄が2回以上続くなら作業列、1回だけならif
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel 2007 【3 VBAが使えるか .】 コピペしかできません 【4 VBAでの回答の可否】 可 VBAのコードをお願いします。 Sheet8のD列の2行目意向に値が入っています。 そのD列の値が"集計"であれば入力されている行を全て削除するコードをお願いします。
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel 2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 A1〜に会計1、帳簿1、会計2、統計4、総合4、会計1、総勘定2、会計1、帳簿2・・・とある場合に、 セル内容の数字だけを抽出したいのですが、どんな関数を使ったら数字だけ抽出する事が出来るでしょうか? (数字だけB1〜に分けようとすると「作業効率が落ちる」とか言われて分ける事が出来ません)
951 :
950 :2014/04/30(水) 10:42:53.55
セル数が非常に多く、ぐぐるとすぐに出てくるFIND({0,1,2,3,4,5,6,7,8,9}を使った場合、 1つのセルを入力するたびに動作が数秒間止まってしまうので(FINDは「重い」関数らしいです) FINDなしでお願いします
952 :
950 :2014/04/30(水) 10:50:37.09
自己解決しました
>>949 Sub Macro1()
Sheets("Sheet8").Select
For Each c In Intersect(ActiveSheet.UsedRange, Range("G2:G" & Rows.Count))
If c = "集計" Then Range(c.Row & ":" & c.Row).Clear
Next
End Sub
>>949 >>948 は間違えたので訂正
Sub Macro1()
Sheets("Sheet8").Select
For Each c In Intersect(ActiveSheet.UsedRange, Range("D2:D" & Rows.Count))
If c = "集計" Then Range(c.Row & ":" & c.Row).Clear
Next
End Sub
955 :
950 :2014/04/30(水) 11:50:26.45
>>952 こら偽物はイカん。
解決しちゃおらん。
956 :
957 :2014/04/30(水) 11:51:31.88
自己解決しました↓
>>950 作業列に=RIGHT(A1,1)と入れて非表示にしておく
958 :
名無しさん@そうだ選挙にいこう :2014/04/30(水) 11:54:54.40
まだ質問してないわい
959 :
949 :2014/04/30(水) 13:11:15.50
>>954 すみません間違えました。
「集計」ではない行を削除して、上に詰めるでした
ごめんないさい
>>959 D列にフィルター(オートフィルター)かけてコピペした方が早いんじゃない?
Sub Macro2()
For r = Cells(Rows.Count, "D").End(xlUp).Row To 2 Step -1
If Cells(r, "D") <> "集計" Then Rows(r & ":" & r).Delete
Next
End Sub
961 :
949 :2014/04/30(水) 13:57:15.50
>>960 できました!ありがとうございます
オートフィルターでも同じ事ができましたorz
2007から「オートフィルター」は「フィルター」に正式名前が短縮された 「オートフィル」と紛らわしかったから変えたのかな?
正式名称だった なんだよ正式名前って
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel 2007 【3 VBAが使えるか .】 NO 【4 VBAでの回答の可否】 NO A1に1か2か3か4を入力する形式で、 B1にA1が1なら「かけ」、2なら「たぬき」、3なら「きつね」、4なら「てんぷら」、それ以外を入れたら「エラー」と出したい場合、 B1=if(A1=1,"かけ",if(A1=2,"たぬき",if(A1=3,"きつね",if(A1=4,"てんぷら","エラー")))) といったifの入れ子以外で解決する方法はないでしょうか?
>>964 0「エラー」、1「かけ」、2「たぬき」、3「きつね」、4「てんぷら」、5「エラー」でリスト作ってVLOOKUPをTRUEで検索とか
【1 OSの種類 .】 XP 【2 Excelのバージョン 】 Excel 2002 【3 VBAが使えるか .】 否 【4 VBAでの回答の可否】 可 ループ内での変数の進行を2,4,5というようなことしたい時はどうすればよいでしょうか? よろしくお願いします。
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel 2007 【3 VBAが使えるか .】 コピペだけできます 【4 VBAでの回答の可否】 はい シート「syoukei」の2行目以降で、ANの値が、シート「kodo」のG1と同じ値でない行は 行を削除して、行間を詰める
968 :
967 :2014/04/30(水) 17:35:16.59
途中で送っちゃいました。 967ができるコードをお願いします。
>>966 LA = array(2, 4, 5)
for each i in LA
Next i
>>967 Sub Macro3()
Sheets("syoukei").Select
For r = Cells(Rows.Count, "AN").End(xlUp).Row To 2 Step -1
If Cells(r, "AN") <> Sheets("kodo").Range("G1") Then Rows(r & ":" & r).Delete
Next
End Sub
971 :
967 :2014/04/30(水) 18:08:30.42
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 if内の論理和と論理積ですが and(条件1,条件2)と、(条件1)*(条件2)ではどちらが演算が高速・効率的でしょうか?
>>973 前者は最初から最後までBoolean型のままで処理される
後者はBoolean→数値に変換して掛け算したあと数値→Booleanに変換してから条件が評価される、つまり手順が2つも多い
型変換よりAND関数を呼び出すオーバーヘッドの方が大きい(予想
>>974 Booleanって内部的には0か-1の2択だぞ?
それに対してTrue/Falseの値は後からプログラムがつけるんだが
>>976 FALSEになるのは0の場合だけだが、それ以外はすべてTRUEと見なされるから、数値からBOOLEANに型変換する時、判定ルーチンを必ず一度は通過することになる
if n <> 0 then n = -1
978 :
名無しさん@そうだ選挙にいこう :2014/05/01(木) 06:12:36.56
1 A 2 3 4 B 5 6 7 みたいなデータを 1 A 2 A 3 A 4 B 5 B 6 B 7 B みたいに変換するのってどうすればいいんでしょうか・・・ すいませんどなたかお願いします
手作業
980 :
名無しさん@そうだ選挙にいこう :2014/05/01(木) 06:16:54.66
CTRL+G → 空白を全部選択 → =(上のセルアドレス)
981 :
978 :2014/05/01(木) 06:29:39.66
>>979 データ全部で3万項目
小区分だけで1000近くあるんで・・・
しこしこ手作業だと1日で終わんない
a列をキーにsortされてる事が前提で b2であれば =if(b2="",a2,)
申し訳ないんですが 「a列をキーにsort」 これどうやるんでしょうか そういうレベルの奴にわかるようになんとか(・・;
984 :
名無しさん@そうだ選挙にいこう :2014/05/01(木) 07:30:10.21
>>978 CTRL+G
セル選択
空白セルを選択しOK
上の1の「A」が入力されてるセルアドレスを「=A1」みたいに入力し、CTRLを押しながらEnterキー
>>980 >>984 アドバイスありがたいのですが
それ1小区分ごとに入力してくんですよね
かえって時間かかりそうなんで
式入力してボタン1つで下まで完了! みたいなことできないかと
単純そうに見えて実はけっこう難しいのか
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel 2007 【3 VBAが使えるか .】 コピペだけできます 【4 VBAでの回答の可否】 VBAでお願いします。 「有効VBA」と言うシートがあって、4行目以降から、N列の文字が変化するごとに 同じシートの1〜3行をコピーして、コピーした3行を挿入していくVBAをお教え下さい。
>>977 で、and関数を態々呼ぶのと
そのif〜then変換では
どっちが軽いんだろうな?
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 自作した表をネット上にアップして公開したいのですが、 htm形式で保存しようとすると、 「互換性のない機能が含まれている可能性がある」との警告が出てきて アップロードしても表示されません。(自分のPC上ではきちんと表示される) また、mht形式でも同様で、アップロードしても意味不明な文字列しか表示されません。 罫線と数字のみの簡単な表を作って試してみたのですが、やはり同様で、 PDF保存だと、紙面サイズのせいか収まりきれません。 サーバーはFC2ホームページ(無料)、ブラウザはIE11です。 ご助言いただければ幸いです。
画面キャプチャして画像にしてうPしたら
>>989 ソースには
Content-Type: text/html; charset="shift_jis"
とあります。
ブラウザ側のエンコードも色々変えてみても症状は同じです。
>>990 頻繁に更新するので、できれば画像ではなく
表のままが望ましいのですが……
ちなみに表自体には画像や小難しい計算などは入っておりません。
数字の罫線のみです。
>>978 b1=a1
b2=if(a2="",b1,a2)
して、b2を下にコピー
または、
b1=lookup(1,0/(a$1:a1<>""),a$1:a1)
してb1を下にコピー
>>987 実際はその場にifを埋め込んでるわけじゃなく、型変換のための内部関数をいちいち呼んでるからANDの方が軽い
>>981 元の質問に書いてないけど、VBA不可なの?
VBAなら3万個ぐらい数秒で終わるよ
テンプレはちゃんと使ってね
VBA不可の場合、作業列を挿入して(元のデータがA列、作業列がB列として)
B1=A1
B2=IF(A2="",B1,A2)
って数式入れて、B2を下までコピペ
コピペの方法は、B2をクリックしてコピー、名前ボックスにB3:B30000 (3万行の場合)と入れてから貼り付け
B列をA列に値貼り付け、B列を削除
文章で書くとめんどくさいけど実際は全体で30秒もかからない
>>988 そのホームページとアップロード済みで開けない表のURLを晒して
>>986 Sub Macro4()
Sheets("有効VBA").Select
Rows("1:3").Copy
For r = Cells(Rows.Count, "N").End(xlUp).Row To 5 Step -1
If Cells(r, "N") <> Cells(r - 1, "N") Then Rows(r & ":" & r).Insert Shift:=xlDownDelete
Next
End Sub
997 :
986 :2014/05/01(木) 13:21:21.83
>>986 ありがとうございます。
使ってみましたが、Nの値が変わると空白の行が1行入るだけで
1〜3行のコピーは挿入されませんでした。
>>997 こうかな?
Sub Macro4a()
Sheets("有効VBA").Select
For r = Cells(Rows.Count, "N").End(xlUp).Row To 5 Step -1
If Cells(r, "N") <> Cells(r - 1, "N") Then
Rows("1:3").Copy
Rows(r & ":" & r).Insert Shift:=xlDownDelete
End If
Next
End Sub
999 :
986 :2014/05/01(木) 14:02:59.36
1000 :
978 :2014/05/01(木) 14:26:06.93
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。