▼━質問時の注意・決まり事━━━━━━━━━━━━━━━━━━━━ ・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 あたりのルールに従うか否かは自由だけど、従わないと以下のような不利益があるよ
★1.マルチをしてしまったら…
A.謝っても他での質問を取り下げても、以後その質問に対する回答は付かない物と思ってください。
それが嫌なら初めからマルチなんてしないように。
>>2 にマルチ禁止と書いてあり、
マルチの意味が分からなければ検索すれば出てくるので、「知らなかった」は通用しません。
★2.
>>1 ★4に従わず、必要な情報を出さないと…
A.自分の使用しているバージョンで使えない機能を答えられたり、VBA使えないとか使いたくないと書かないと
VBAでの解決OKで自分でコード書けるものと勝手に解釈されて、「VBAで出来るから自分でコード書いて」程度の
適当な回答を返されたりします。また、ここではVBAコード書けない人の丸投げ依頼を許可してますが
これはきちんとルールに従って質問、依頼した人のみの特権です。
★3.情報・条件を後出しすると…
A.後から出された情報は意図的に無視されたり、質問自体を放置されたりします。
>>1 ★4の必須情報はもちろんのこと、要望や条件、既に試したことなどは、
長文になってもいいので詳細かつ明確かつ具体的に書きましょう。
★VBAについて
VBAとは、『Visual Basic for Application』の略で
Application
├Workbooks
|└Workbook
| ├Worksheets
| |└Worksheet
というApplication以下のオブジェクトを、VB言語で操作するものを指します。
例えExcel付属のVBE(Visual Basic Editor)を利用しようとも、このApplication以下のブックやシート、
セルやオブジェクト等を操作するもの以外はVBA分野の話ではないので、ここでは聞かないでください。
★ Excelで出来ないこと、仕様上の制限 (括弧内は代用法) ▼環境・書式 ・ 列数を256列以上、行数を65'536行以上に増やす (Excel2007以降では16'384列、1'048'579行扱える) ・ Excel2003以前で条件付き書式を3つ以上設定する (文字色だけなら、入力規則でも3つ設定可能。それ以外はVBA) ・ 行の高さを0.25きざみ以下の単位で指定する ・ セル内の文字を○で囲む、一部のみ2段にする (オートシェイプ、オブジェクト) ・ オートフィルタで英字の大小文字を区別する (小文字 → 半角、大文字 → 全角、と使い分ける) ・ 祝日を判断する (作業セルに祝日を列挙、VBA) ・ 同一列内でセル(行)ごとに列幅を変える、同一行内でセル(列)ごとに列高を変える (セルの結合) ・ ヘッダー・フッターのページ番号の開始番号任意指定、ページ番号演算、同シート内で違ったものを指定など ・ セルのサイズ(幅、高さ)を、長さの単位(ミリメートルなど)で指定する ・ 罫線幅の自由指定 ・ 表示形式で「10/ 1」といった書式を指定し、日付が一桁の場合のみ日付の前にスペースを入れる (TEXT関数、VBA) ・ 書式設定の「折り返して全体を表示する」と「縮小して全体を表示する」を同時に使う (折り返しを有効にして、手動で文字サイズを調整) ▼操作 ・ ファイラーの右クリックメニューからの新規作成で、Excelで設定したシート数のブックを作る (任意のシート数のテンプレートを作成) ・ 複数シートを選択して入力規則やシートの保護を設定する (VBA) ・ オートコンプリート機能を、別列や離れたセルで動作させる (VBA) ・ 選択範囲から一部を除く、Ctrlを押しながらの複数選択で一部を取り消す (VBA) ・ 優先キーを3つ以上指定しての並べ替え (優先度の低い方から順に並べ替える) ・ 1セルを分割 (分割したいセル以外を結合)
★ Excelで出来ないこと、仕様上の制限 (括弧内は代用法) ▼数式・関数 ・ 表示形式以外の書式の取得設定、書式情報を条件とする数式 (ユーザー定義関数) ・ 関数式でセルの選択状態を取得する (VBA) ・ セルの値でパスを補完して、開いてないブックのセルを参照する (VBA) ・ 入力したセルに結果を返す (VBA) ・ 範囲を引数にしての文字列連結 (ユーザー定義関数) ・ 値の書き換え、値の保持 (VBA) ・ 複数の結果を抽出、不定な数の結果を返す (VBA、結果の最大数が解っていれば最大数以上の式を論理式で組む) ・ 空白のセルの部分を上詰め、左詰めなどで表示する (作業セルを使って別セルに詰めて表示なら可能、それ以外はVBA) ・ VLOOKUP,HLOOKUP,MATCH等の関数で、検索語を全半角両方にマッチさせる (ユーザー定義関数) ▼VBA ・ ExecuteExcel4Macroの参照で空セルと0値を区別する ・ セルの値や変数値で直接変数名を指定する (配列、コレクション) ・ VBのコントロール配列と同じような操作をしたい (イベント以外ならコントロール名を「同名+連番」にしてControls(名前 & インデックス)で処理、イベントはクラスでWithEvents) ▼ユーザーフォーム ・ フォーム上から変更したプロパティ値の保持 (シートや外部ファイルに書き出して、次回読み込む) ▼グラフ ・ 棒グラフでひとつだけ突出したデータがあった場合に波線を入れて位置を合わせる (オートシェイプなどで見た目だけそうなるように弄る、別アプリでグラフを作り、オブジェクトとして挿入) ┌┐ 〜〜 ||
上記 「Excelで出来ないこと、仕様上の制限」 は、一般的に出来ないとされていること、出来ないと思われるものです。 間違いがある可能性もあるので、上記に挙がってるもので「コレはこうすれば出来るよ」というものがあったらご指摘ください。 Excel2010についても未確認な項目が多いので変更点が有ればご指摘下さい。 また、ここに書かれてないことでも、Excelで出来ないことはたくさんあります。 ここに書かれてないからといって必ず出来るはずだなんて思わないように。 >▼環境・書式 > ・ セルのサイズ(幅、高さ)を、長さの単位(ミリメートルなど)で指定する 補足 2007以降ではページレイアウトビューの表示時に限り、幅・高さともcm単位で表示され、 指定も同じくcm単位でできる。 ただし大元がインチ系なのでなかなかピタリの値は出ない。1cm→0.98cmのように 近い値に勝手に丸められる。
新スレおめ☆(^▽^)
【1 OSの種類 .】 Windows7 64bit home 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 否 タブと"|"がそれぞれ複数、メモ帳に文字列として入力されています。 それを一気に編集しようとしています。 そのままコピーすると、タブでセルがわかれてしまい、タブが消えてしまいます。タブが消えないようにコピー・ペーストする方法はありますか? 実際の作業は |氏名(タブ)|電話(タブ)(タブ)|住所(タブ)| |山田太郎(タブ)|111(タブ)(タブ)東京(タブ)| |山本じろう(タブ)|123(タブ)(タブ)大阪(タブ)| このような感じで、500行ぐらいあります。 これを |山田太郎(タブ)|111(タブ)(タブ)東京(タブ)||ヤマダタロウ(タブ)| と新規列にふりがなを加えたり、 電話番号と住所が合っているかのチェック、等です。 一行1セルとして、コピー・ペースト、もしくはEXCELで開く方法はありますか?
>>10 です、自己解決しました。
タブをそのまま(タブ)という文字列に置換すれば問題なく作業することができました。
セル内に文章が入っております。 その中から、特定の文字列で囲まれた部分のみを 別のセルに抜き出す関数はございますか? 例えば、「こんにちは、私は〜〜〜〜〜それでは失礼いたします。」の 「私は」と「それでは失礼いたします。」で囲まれた部分を抜き出す方法です。 お手数ですが、どなたかご存知の方がいらっしゃいましたら 教えていただきますよう、よろしくお願いいたします。 MID関数等でできるかもしれないと試しているのですが上手くいきません。
=MID(J6,FIND("私は",J6)+2,FIND("それでは失礼いたします。",J6)-(FIND("私は",J6)+2)) J6=こんにちは、私は凄く賢いです。それでは失礼いたします。
>>13 さん
プラスやマイナスは文字数のカウントなのですね
どうもありがとうございます!!
非常に助かります。
>>13 さん
申し訳ございません。
「私は」や「それでは」にあたる文字列に"ダブルクォーテーション"が
含まれる場合はどうしたらいいのでしょうか
初歩的な質問だろうと思いますがすみません。
""で"になる 私は"賢い" を検索する場合は 私は""賢い"" にする
お早い対応 どうもありがとうございます 実はHTMLタグの記述を抜き出したく 以下の記述に編集して使用したのですが 上手く動作しなかったようです。 =MID(A1,FIND(""<meta name="description" content=""",A1)+34,FIND(""">"",A1)-(FIND(""<meta name="description" content=""",A1)+34)) 抜き出したい範囲の後半の条件が「">」であり 文章中に多数含まれるかもしれません。
実際には 「<meta name="description" content="」 「">」 に囲まれている部分が抜き出したかったのでした。 色々と対応いただきましてありがとうございます。
文中に条件がに合致するものが複数出てたら厳しいと思う VBAじゃダメなのか?
あ、まてよ
長くなるからセル分けた A1=対象文字列 A3=FIND("<meta name=""description"" content=""",A1) A4=LEN("<meta name=""description"" content=""") A5=FIND(""">",A1,A3) A6=MID(A1,A3+A4,A5-(A3+A4)) こんな感じか
素晴らしいです! 大変おおがかりなものをつくっていただき ありがとうございます。 VBAについても勉強したいと思っているのですが なかなか時間がつくれない状況です…。 エクセルを使いこなしてる方って 考えたかが非常に柔軟ですよね。 勉強するにあたってお勧めの本などありますでしょうか?
大変恐縮なのですが上記の記述 一行にはすることは可能でしょうか? なるかならないかだけでのお返事でも助かります。 よろしくお願いいたします。
1行にできるよ A6の中のA3とかA4とかのセルのアドレスをそれぞれの中身に置換すればいい A5を置換する時はその中のA3もね
がんばって編集してみます!
マクロを勉強しています。
マクロの編集画面で書いたやつをエクセルにコピペして印刷して、
次回書くときの参考にしています。
このとき、SubとかForとかの単語をその都度青くしていますが、
一発で変換とかできますか?
あえて書くまでもないですが、こんな感じで色を付けたいです。
ttp://s1.gazo.cc/up/53834.jpg
え・・?どうしても印刷したいならスクショ取ってそれ印刷したらいいじゃん?
【1 OSの種類 .】 Windows Vista 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 行列の入れ替えなんですが、複数列ごとに行いたいんです。 例えば、 A B 1| 佐藤 | 女 | 2| 田中 | 男 | 3| 鈴木 | 男 | これを通常の行列入れ替えをすると、 A B C 1| 佐藤 | 田中 | 鈴木 | 2| 女 | 男 | 男 | という風になってしまいますが、 A B C D E F 1| 佐藤 | 女 | 田中 | 男 | 鈴木 | 男 | という風にしたいのです。 今は、ワードにテキスト貼り付けをして、 改行とタブを置換した後、再びエクセルにテキスト貼り付けをしています。 それか、地道に切り取りと貼り付けです。 何か他にいい方法はないでしょうか。
>>30 indirectは初めてです。
試してみます!
>>31 なぜかDLできません。
でもとても作業が捗りそうな気がします!
再度DLトライしてみます。
ありがとうございます!
33 :
26 :2013/05/22(水) 21:40:53.33
>>33 Visual Basicのエディタのままでも印刷できましゅ(^▽^)
ファイル→印刷(^▽^)
あるいは、エクセルのバージョンが分かりませんが、バージョンによってはエクセルにスクリーンショットが付いていましゅ(^▽^)
挿入タブ→スクリーンショット→画面の領域と進みましゅ(^▽^)
そうするとVisual Basicのエディタ画面の一部(必要部分)を画像としてシートに貼り付けることができるのでしゅ(^▽^)
それを印刷すると良いでしゅ(^▽^)
失礼しました(^▽^)
>>26 のjpg画像を見るとエクセルのバージョンは古そうでしゅね(^▽^)
キーボードのPrint Screenキーを使って画像を取得してください(^▽^)
36 :
26 :2013/05/22(水) 22:30:33.50
>>34-35 だからぁ、スクリーンショットじゃなくてエクセルにコピペしたやつを印刷したいんだよ。
100%で5ページなら、80%に縮小して4ページにしようとか。
セルに色を付けて、マーカー代わりにしようとか、そういう意図だ。
それから、変な顔文字はやめろ!キモい
38 :
26 :2013/05/22(水) 22:39:55.28
だからぁあああああああああああああああああああああああああああああああああああああああああああああ 変な顔文字はやめろ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
bykinさんのソフトキタ━━━━(。A。)━(゚∀゚)━(。A。)━(゚∀゚)━(。A。)━━━━!!!!
みんなで精進すべきでしゅ(^▽^)
このスレは良スレでしゅ(^▽^) そろそろ寝ましゅ(^▽^) ε=ε=ε=ε=┏( `0´)┛
>>34 > Visual Basicのエディタのままでも印刷できましゅ(^▽^)
> ファイル→印刷(^▽^)
その方法だとカラー印刷にならないでしゅよ(^▽^)
vba2htmlってWin7/64bitで使えないんだよな
46 :
28 :2013/05/23(木) 01:25:37.86
>>31 何度か試しているのですが、
私のパソコンがおかしいのか、
ダウンロードをクリックしてもページが更新されるだけです。
よかったらもう一度アップしてもらえませんか?
>>46 operaじゃ出来なかったけどクロームで出来たぞ
48 :
28 :2013/05/23(木) 01:50:56.90
>>47 DLできました!ありがとう。
そしてすごく便利です!!
>>31 さんありがとうございます!
49 :
名無しさん@そうだ選挙にいこう :2013/05/23(木) 13:54:34.46
【1 OSの種類 .】 WindowsXP SP3 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 【やりたいこと】 名前定義で定義した1列のリストを、 配列のように扱う方法が知りたい 【経緯】 チェック表を作成していて、どこまでチェックが終わったかによってステータスを変化させたい. A列にチェック項目、B列にチェック欄があり、別シートのステータス一覧を名前定義. チェック数とステータスが連動しており、2つチェックならステータスの2番目が取りたい 添字を含めた2列のリストとして名前定義してVLOOKUPすれば出来そうなのですが、 もっと簡便なやり方があれば教えてください
ようわからんけど、A1:A10に「おとまりスケベ」て名前付けてあったとしたら、 index(おとまりスケベ,2)で2行目の値ひっぱれるとかそういうの?
>>50 なんでおとまりスケベなのかわかりませんが教えていただいた方法でやりたいことが実験出来そうです
ありがとうございました
エクセル2010を使ってるんだけど、テキストの改行ができない・・・・ 一応調べたらテンキーじゃない方のエンターを使えとなってるけど、そもそもノーパだからテンキーのエンターが存在しないわけなんだけどどうすればいいの?
>>53 おおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおお
マジでthx
自演乙w
>>52 シフトエンターでも、編集状態にしてから貼り付けてエンターでもええんやよ
57 :
名無しさん@そうだ選挙にいこう :2013/05/25(土) 00:04:19.29
Excel2003で表に時間をいっぱい入力しています。 入力する値は分:秒です(分秒をコロンで区切り)。それで 305→3:05 1510→15:10 のように表示できるような書式を教えてください。
58 :
57 :2013/05/25(土) 00:08:50.93
すいません。表示と書きましたが、あとで、集計等処理があるので 値そのものも分:秒であることが必要です。
>>57 111の場合、
1:11か11:1かわからないので無理
頭に必ず0を付け、書式を文字列にして0111と入力する
a1=0111
b1=TIMEVALUE("00:"&LEFT(A1,2)&":"&RIGHT(A1,2))
これなら可能
あとはB1で集計すればok
入力する行をそのまま計算できるようにするのはやめておいたほうがいい。
60 :
57 :2013/05/25(土) 02:49:11.38
>>59 ありがとうございます。
できました。 m(_"_)m
言い訳。秒は必ず2桁で、
1:11→111 11:1→1101 にしています。
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 否 以下のようなデータシートがあります。 A B C 1日 1 2 6 2日 1 5 1 3日 1 .4 4日 5 6 1 ここから「1〜5までの数値」という検索条件で、「項目名(ABC)」と「数値自体」を抜き出すには どうすれば良いでしょうか。また実際にはABCの間には文字列等の別データがあります。 それらを無視して抽出する事は可能でしょうか。無理であれば別にそれ専用の表を作るつもりです
>>61 結果をどういう風に出したいかがよくわからない
A列のセルに数式を入れたら、B列のセルに( )で表示できますか? こんな感じ A列の入力 A列の表示 B =100+200 300 (100, 200) =50+120 170 (50, 120) =1500+900 2,400 (1500, 900) =70 70 1550 1,550 ※下の2行のB列は表示なし
誤 A列のセルに数式を入れたら 正 A列のセルに "+" を含む数式を入れたら
何がしたいんだ? Aに100、Bに200入力して、Cに=A+Bじゃだめなのか?
66 :
63 :2013/05/25(土) 13:21:21.28
何がしたいって・・・
>>63 に書いてあるのに読めないバカですか?
67 :
63 :2013/05/25(土) 13:29:15.94
>>65 のバカでもわかるよーに書くとだな、
A1に =100+200 と入力したら B1セルに (100, 200) と表示させたい。
68 :
63 :2013/05/25(土) 13:30:55.78
ちょっと出かけてくるから、夕方までに答えを出しとけよ。
70 :
名無しさん@そうだ選挙にいこう :2013/05/25(土) 14:27:17.46
win7 excel2010 VBA無 ABCDEと5項目あるデータに 70項目分くらいソートをかけると(かけなければいけない) 3行〜20000行くらい変動するのですが (A3までのデータならB3 C3 D3 E3までデータがある) 上記データにたいして2種類の計算が必要です。 ・A1〜A3の合計値(B〜Eも同じ) ・合計値を項目数で割った平均値(例 =A4/3)(B〜Eも同じ) これを自動で合計値を計算し さらに項目数をカウントして 合計値をわるような関数はないでしょうか? 2種類の関数が必要になると思うのですが ヒントだけでもいただけますと幸いです。 よろしくお願い致します。
ソート?フィルタじゃなくて?
2つの関数てそれただ平均出してるだけじゃないの? 普通ならaverageで済むしフィルタ視点ならsubtotalでいいんじゃないの?
>>62 わかりにくくてすいません。簡単に図表にしました
ttp://www.dotup.org/uploda/www.dotup.org4222124.jpg 左上の表が入力で、右上の表が時間の対応表です。
「○日の」「A班が誰で」「時刻がこの時間」という風にして結果を下の表に落としこみたいのです。
ISERROR、FIND、COUNTIFの組み合わせで判定はなんとかなりそうなのですが
該当した人の名前を抜き出す方法が分からない点と
その判定を日毎に表にする=31日x2班分の表が出来てしまう?というネックをどうにかしたいです。
マクロを使えば簡単そうですが、マクロを使えない環境で使いたいので…
74 :
63 :2013/05/25(土) 17:49:20.97
ただ今帰宅〜 今日は無能の先生しかいねーのか?
+だけでいいなら簡単だが
76 :
63 :2013/05/25(土) 18:56:32.56
+だけ とは?
Excel中級者ですがシートは最大何枚まで増やすことが出来るのでしょうか?
・Excel中級者ならヘルプを読む ・2ch中級者ならテンプレを使う ・PC中級者ならググる ∴どの点で見ても中級者以下
79 :
63 :2013/05/25(土) 20:58:22.30
A1セルに =123+1 B1セルに =FIND("+",A1) と入力すると #VALUE! になります。 A1セルを '=123+1 にすると 5 になりますが、 =123+1 の数式で 5 を 出すにはどうすればいいですか?
80 :
名無しさん@そうだ選挙にいこう :2013/05/25(土) 21:06:57.97
2013ならformulavalueで式の文字列取れるからそっから削ってけばいけんじゃない? 古いのは知らん
>>73 すまん、ちょっと変則すぎて出来そうにない。
どうしても楽したいなら正規化した方がいいと思う。
マクロが使えるならマクロのほうが早いだろう、環境を変えてみたほうが良さげ。
>>79 2013で追加されたformulatext関数でいけるはず
b1=FIND("+",formulatext(a1))
2010以前は知らね。vbaならcells(1,1).formulaで取れる。
カブッタ/(^o^)\
83 :
63 :2013/05/25(土) 21:22:11.53
>>80-81 2010だと #NAME? になりますた。
というわけで、終了・・・ ヲワタ・・・ orz
おまえってばほんと終わってんな
はぁ? 意味不明
>>81 そうですか、ありがとうございます
よく見かける感じのシフトチャートを真似て作ってるんですが
やはり1箇所の入力でズボラしようと思うのがダメなんですかねー。
残念ながら環境のほうはどうにもならないので
表記と入力を極力分離して、作業用シートを駆使してやってみようと思います
>>65 「・・・・・」
【1 OSの種類 .】 Windows XP 【2 Excelのバージョン 】 Excel2000&2003 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 任意のbookから特定の範囲のデータを取得してコピペ(集計)する場合は ・読み込ませたいbookを特定のフォルダ内に置く ・ダイアログを開いてフォルダを選択する といった感じになるかと思いますが、いずれの場合でもワンアクションが必要になってしまいます 殆どの場合は新規フォルダを作成し直ぐにコピペ(集計)するので、 一番最近に作成されたフォルダを選択したいのですが可能でしょうか? 選択したいフォルダはEドライブ内の「○○年度日報」という大元のフォルダがあって、 その中に入っています
>>88 何を言ってるのかよくわからないけど
たくさんあるフォルダの中から作成日時が最新のフォルダを特定したいってことなら
フォルダ 作成日時 filesystemobject
でググればいいと思うけどたぶん目的に対する手段が間違ってると思う
>>86 一応書いとくけど、そもそもの入力データをもっと整理することをすすめる
キャプの上の表をSheet1、下の表をSheet2に、仮にあ、い、う、え、おの5人、対応表は適当な位置に例えば
>>Sheet1
W1:#、X1:班、Y1:開始、Z1:終了
W2:1、X2:A、Y2:8:00、Z2:17:00
以下キャプと同様の値
B1:あ、C1:1、D1:2、E1:3
A2:日付、B2:#、C2:班、D2:開始、E2:終了
A3:2013/5/1、B3:1、C3:=OFFSET($W$1,OFFSET(C3,,-C$1),C$1)
D3〜E3:C3をコピーしてセルの書式を時刻"hh:mm"などに設定
B1〜E3をコピーして、F1、J1、N1、R1にはりつけ、名前い、う、え、おを入力
行3を選択して下方向にコピー
A4:2013/5/2、B4:5、、などキャプと同様の値を入れる
>>Sheet2
A1:日付、B1:班、C1:氏名、D1:8:00
A2:2013/5/1、C2:あ
B2:=OFFSET(Sheet1!$A$1,MATCH(Sheet2!$A2,Sheet1!$A:$A,)-1,MATCH(Sheet2!$C2,Sheet1!$1:$1,))
D2:=AND(OFFSET(Sheet1!$A$1,MATCH(Sheet2!$A2,Sheet1!$A:$A,)-1,MATCH(Sheet2!$C2,Sheet1!$1:$1,)+1)<=D$1,OFFSET(Sheet1!$A$1,MATCH(Sheet2!$A2,Sheet1!$A:$A,)-1,MATCH(Sheet2!$C2,Sheet1!$1:$1,)+2)>D$1)
行2を選択して下方向にコピー
C3〜C6:い、う、え、お入力
D列を選択して右側に連続コピー
以降も同様に日付と名前を入力
条件付き書式でTRUEを拾う
オートフィルタでもかけとけば、日付や班、名前でフィルタリング出来る
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2000 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 A B C D 1 テス1 8:00 10:00 2:00 2 テス2 9:00 12:00 3:00 上のような時刻のテーブルからD列の数字を取ってきたいんですが =VLOOKUP(1,テーブル名,5,FALSE) と入力した場合0になってしまいます。時刻のデータが小数点の状態(0.71643…のような)でも構わないのですが 0になってしまうのがよくわかりません。 試したこととしてはテーブルの中のデータを検索値と揃えるように 標準、文字列、数値、時刻など変更してみる。列番号を色々変更してみる。 fxボタンから値の中身を確認するなどです。この場合1、テス1、0、0、0となっており やはり望む状態にはなっていませんでした。よろしくお願いします。
>>92 数式を入れたセルの書式が「数値」とかになってるんじゃない?
>>92 実際のデータ範囲はどこよ
=VLOOKUP("テス1",A1:D2,4,FALSE) とやりたかったとエスパーしてみる
97 :
92 :2013/05/27(月) 06:58:20.29
みなさんありがとうございます
>>93 その状態になっています
>>94 数値等も試してみましたがダメでした
>>95 失礼しました、アルファベットの位置がおかしいのと
検索範囲は名前じゃなく番地で書くべきでした
A B C D E 列
1 1 テ1 8 10 2
2 2 テ2 9 12 3
行
で、行番号の他にIDが用意してあります。なので=VLOOKUP(1,テーブル名,5,FALSE)で
テーブル名の所が$A$1:$E$2ということです。VLOOPUPの検索値の「1」は
他の場所の値を参照しているのですが、そのあたりが原因なのでしょうか
一応その場所の値の形式も対応するよう色々変えてみたりはしたのですが…
>>97 テーブル名が間違ってるか、検索する値がなにかおかしい
まず
=VLOOKUP(a1,a1:e1,5,FALSE)
これはいけると思う。これで無理なら範囲の指定が間違っている。別のシートか?
=VLOOKUP(a1,テーブル名,5,FALSE)
テーブル名が合っていればこれも通る。ここでつまずいたらテーブル名が間違っている。
カンで答えると挿入や削除でテーブルの位置がずれていると思う。
=VLOOKUP(1,テーブル名,5,FALSE)
ここまでくれば検索する値しかない。恐らく書式設定か、A1の値が文字列になっている。
A1=F1
で、文字列の設定になっているなら
A1=F1*1
としてみて
>>98 亀レスすみません。回答ありがとうございます。
3パターンともテストしてみましたが、得られる回答が一様におかしなことになります。
おそらく検索値、範囲、型はあっていて列番号でおかしいデータが入ってきています。
列番号が「1」=「1」で正解。「2」=「テ1」で正解。「3」=「0」。「4」=「0」。「5」=「8」で3列目が。「6」=「0」。
念のため非表示列がないかの確認はしましたが当然ありません。
さっぱりわけがわからない状態です・・・
100 :
92 :2013/05/28(火) 16:40:39.55
書き込みを見直してようやく理由がわかりました 実際の行番号が数百番台なので自分でもすっかり忘れていましたが A列が3セルをマージ、B列が2セルをマージしていたんです。 VLOOKUP関数では表示上のセル数ではなく厳密な列数を見ていると言うことなんですね・・・ マージしてるかどうかなんて回答して下さってる皆さんには分かるはずがない 大変失礼しました。ご回答下さった皆さんありがとうございました これですっきり作業が出来ます
一つのセルに2行のデータがあります。 これを1行のデータに直すにはどうすればいいですか? エクセル2010です。
clean
>>101 対象のセルをダブルクリック(またはセルを選択した後にF2キーを押下)
改行の位置までカーソル移動
Deleteキーを押下
Enterキーを押下
【1 OSの種類 .】 Windows7 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 Sub DRINK() ' ' zaiko Macro ActiveCell.FormulaR1C1 = "='zaiko'!R[142]C[658]" Range("J5").Select Selection.AutoFill Destination:=Range("J5:J71"), Type:=xlFillDefault Range("J5:J71").Select ActiveWindow.SmallScroll Down:=-27 End Sub よろしくお願いいたします。 zaiko'!R[142]C[658] (セルYR147YR213)に集計した数値があり、今日はJ5からJ71に張り付けました。 明日は("K5:K71")明後日は(”L5:L71”)で同様のオートフィル&値の貼り付けを行いたいのですが 相対参照ですと、固定の集計セル位置zaiko'!R[142]C[658](セルYR147YR213)が 1行ずれて貼り付けされてしまい困っております。
>>104 です。
excel2010です。
アドバイス宜しくお願いいたします。
またおまえかw
>>104 値の貼り付けなら相対参照とかにならんのでは?
mac excel2011で質問ですが 行と列ごとの数字(Aや1など)が表示されなくなったんですが、元のように表示させるにはどうしたらいいんでしょうか?
>>108 当方Win版Excel2010なので違ってるかもしれないけど
リボンインターフェースならば、リボンのファイルタブ、オプション、
詳細設定、「次のシートで作業するときの表示設定」のところで
「行列番号を表示する」のチェックを入れる
を、試してみてください。
>>57 さんとよくにた質問です
EXCEL2007を使用してます。
BIからB30ぐらいまでに分:秒を入力します(ただ結果は時間分秒をコロンで区切りたいです)。
B1 0312と入力したら→00:03:12というように表示され
B2 5900→00:59:00
それが40行ぐらい入力して
B41に 足した結果を01:02:12というように合計が表示される方法はないでしょうか?
ですので、A1に数値。B1には計算結果という方法ではなくBだけですべて処理できる方法はないでしょうか?
説明べたですいませんがお願いします
111 :
101 :2013/05/30(木) 20:39:56.15
>>103 レスありがとうございます。
セル1つならそれでいいですが、元の資料からデータを
更新するたびに、500ヶ所くらい直さなければなりません。
関数とかで出来ませんか?
>>111 あああ
いいい
となっているのを
あああいいい
にしたいだけなら、改行を置換する文字は何も指定せずに置換すればいい
>>110 時刻は時刻として入力する
03:12
59:00
・・・
=SUM(範囲)
作業セル使えよ なんおためのワークシートだよアホくせえなあ
>>115 難しいことができないので、その方法がかしこいですね。
ありがとうございました。
119 :
名無しさん@そうだ選挙にいこう :2013/05/31(金) 00:45:13.01
>>101 単純に(文字検索機能の)文字置き換えを使用する
検索文字に部分には、ctrl+j を押して
置き換え文字には何もいれない(null) あるいは スペースで全置換えすればいい
120 :
名無しさん@そうだ選挙にいこう :2013/05/31(金) 00:49:35.79
>>110 シート全選択して全置換えすれば、5秒でおわるからやってみて。
投稿見たときから、書いてあげようと思ったんだが、
書き込みはじかれて、書き込めなかったんだよ。
ベストと思える回答が出てるのに、遅出しで、しかも手間が掛かるやり方を書いてるバカって何なの?
>>121 ・俺みたいに代筆してもらっていれば時間差で後から残念な回答をレスすることもあるし同じ回答をしてしまうこともある
・また外野の判断ではなく質問者の環境に一番マッチする答えがベストであるともいえる。
それには色々な答えを出して選択させてやるのも良いだろう
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010・2003 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 [状況] CSVで定期的に吐き出されるデータを、Excelシートに落とし込みたいと思っています。 ググってVBAが必要な事を知り、適当なソースをコピーしてテストしてみたところ 最終列の折り返しが位置が行ごとに一つずつズレる、または一行終わった所で終了します。 これは改行がLFであるせいだと判明しました。次いでLF改行に対応したソースで行ったところ 余計なダブルクォーテーションが入ります。これは抽出データの扱い方とカンマ区切りの相性によるものと判明しました さらにダブルクォートの排除コードを追加した結果、データ型がおかしいとエラーを吐いてしまいます。 宣言が万能型でもストリング型でもエラーを吐きます。 [知りたい事] CSVをシートに流し込む方法。もしくは後述ソースが何故エラーを吐いてしまうのか?という問題点 また、抽出にやや時間がかかるためもっとうまいやり方等がありましたら…。 なおCSVは9列、LF改行、カンマ区切りです。 長いので続きます。
125 :
124 :2013/06/01(土) 03:34:23.16
ソースコードはこんな感じです。 Private Sub Workbook_Open() Set csvws = Worksheets("抽出") '対象ワークシートの変数定義 csvws.Activate 'ワークシートをアクティブに ChDir ThisWorkbook.Path 'ファイルのあるフォルダをカレントフォルダに Dim buf() As Byte Dim tmp As Variant, tmp2 As Variant, tmp3 As String, tmp4 As Variant Dim i As Long Open "cashbook.csv" For Binary As #1 ReDim buf(1 To LOF(1)) Get #1, , buf Close #1 tmp = Split(StrConv(buf, vbUnicode), vbLf) For i = 0 To UBound(tmp) - 1 tmp2 = Split(tmp(i), ",") Cells(i + 1, 1).Resize(1, UBound(tmp2) + 1).Value = tmp2 tmp3 = tmp2 ←試しに宣言を変えてみたがダメ。Cstrも試したがダメ。 tmp4 = Replace(tmp3, """", "") ←これがエラーを吐く Next i End Sub 以上、長くなりましたがよろしくお願いします。
自分でsplitしといて文字列扱いすりゃそらエラーになるよ splitする前にreplaceすればいいんじゃないの
>>125 Splitの結果は文字列じゃなくて配列
あとセルにデータを入れてから置換してどうすんの
excelにリレーショナルデータベースの機能を付加したりする仕組みはないのでしょうか。 例えばある列を選択して他のシートとリレーションさせるみたいなメニュー選べるとか、、。
ない
vbaで誰か作ってないかなとか、、、。
ACCESSつかえばいいじゃん
133 :
名無しさん@そうだ選挙にいこう :2013/06/01(土) 18:00:47.56
【1 OSの種類 】 WindowsXp home 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか 】 いいえ 【4 VBAでの回答の可否 】 否 検索したら似たような質問があったのですが、解決してなさそうだったので ここで教えていただきたいです。 シート内に大きな表があります(見出し、数値、数式で埋まっています) A2セルにその表でのsum関数の数 B2セルにその表でのcount関数の数 C2セルにその表でのif関数の数を表示したいのですがどうやってもうまくいきません 関数を何個使用しているかを表示させていのです よろしくお願い致します。
http://excel-qa.up.seesaa.net/image/1kimatu_siken.gif このような定番の表で国語とかそれぞれの項目に
国語1 国語2 ・・・ 国語50 と50項目のバリエーション情報を記録する必要がある場合
どのように並べるといいのでしょうか?
国語・算数それぞれの箇所の左に50種横並びに列を追加するのが定番でしょうか?
そうすると表がとんでもなく横長になります
時には国語500まであるような場合もあり表があふれたりしないか心配です。
国語 算数それぞれを別表にする手も考えましたが
入力に時間がかかりミスも起こりそうです。
プロの方宜しくお願い致します。
入力と出力を同時にやろうとするからいけない 入力は 氏名、科目、点数の3列 出力はピボットテーブルで
136 :
134 :2013/06/01(土) 19:33:36.06
>>134 >それぞれの箇所の左に→右でした。
>>135 ピボットキタ−!
使ったことが無いのですが挑戦してみます。 ありがとうございます。
137 :
124 :2013/06/01(土) 21:54:31.25
>>126-127 プログラムのプの字も分からない素人なもので、すみません
なるほどと思うばかりです。
スプリットの位置を変更し文字列の型に変更してみたのですが、今度は「配列がありません」となります
これはつまりどこかで入れ込みに失敗するか分割に失敗しているのでしょうか
〜略〜
Dim buf() As Byte
Dim tmp As String, tmp2 As String, tmp3 As String
Dim i As Long
Open "cashbook.csv" For Binary As #1
ReDim buf(1 To LOF(1)) '---(1)
Get #1, , buf '---(2)
Close #1
tmp = Replace(buf, """", "")
tmp2 = Split(StrConv(tmp, vbUnicode), vbLf) '---(3)
For i = 0 To UBound(tmp2) - 1
tmp3 = Split(tmp2(i), ",")
Cells(i + 1, 1).Resize(1, UBound(tmp3) + 1).Value = tmp3
〜略〜
>>133 2013ならtextformura関数でいけるんだけどな
今考えた手順は回りくどいけど、これでいいなら使って
1.表を範囲選択
2.置換(ctlr+h)で、sumなどをsumに置換
これでポップアップで置換された個数が出る
>>137 配列わからんか。タブンぐぐって勉強した方がいい
Sub W()
Dim tmp As Variant
tmp = Split("a,i,u,e,o", ",")
For i = 0 To UBound(tmp)
MsgBox tmp(i)
Next
end sub
簡単に言うと、こんな感じなんだけどな。難しいかな。
139 :
124 :2013/06/01(土) 22:23:46.76
>>138 配列というのはA、B、C、Dのように分割したデータを
一括りにしたものという考え方で合ってますよね?
ソースでやっていることなどはなんとなくわかるのですが
自分の環境に置き換えた時エラーが起きてる原因がよく分からないという感じです…
ご指摘いただいた点はtmpの中身を適宜書き換えていって良いという事なんですかね
140 :
名無しさん@そうだ選挙にいこう :2013/06/01(土) 23:10:10.25
>>138 FORMULATEXT関数使えば一気に解決みたいですが、2003しか持ってないんで無理ですね。
置換でなくても検索でも個数は出てきますが、いちいち関数名を入れて検索結果を確認する
という作業になるので、一気にセルに表示させられないかなと思っています
やはり2003までの関数の組み合わせでは無理なのでしょうか、VBAを使えば可能なのかな?
>>139 >>125 の元のプログラムをできるだけ活かして、最小限の修正をするとこうなるはず
変数の型と関数の順番をよく見て
検証してないから動かんかったらすまん
Private Sub Workbook_Open()
Set csvws = Worksheets("抽出") '対象ワークシートの変数定義
csvws.Activate 'ワークシートをアクティブに
ChDir ThisWorkbook.Path 'ファイルのあるフォルダをカレントフォルダに
Dim buf() As Byte
Dim tmp As Variant, tmp2 As Variant, tmp3 As Variant, tmp4 As Variant
Dim i As Long
Open "cashbook.csv" For Binary As #1
ReDim buf(1 To LOF(1))
Get #1, , buf
Close #1
tmp = StrConv(buf, vbUnicode)
tmp2 = Replace(tmp, """", "")
tmp3 = Split(tmp2, vbLf)
For i = 0 To UBound(tmp3) - 1
tmp4 = Split(tmp3(i), ",")
Cells(i + 1, 1).Resize(1, UBound(tmp4) + 1).Value = tmp4
Next i
End Sub
tmpとtmp2はStringだったわすまん
>>139 そうなんだ。あってる。
そして型がなにより大事
tmp(0) はstring型
tmp はstring型の配列
string型と、string型の配列。これは別のデータ型で、互換性は無い。
細胞と、人間、なんて置き換えてもいいかもしれないな。
一応行っておくと、文字列をsplitで分割したものをvariant型に代入するとstring型の配列になる。
144 :
124 :2013/06/02(日) 00:59:41.60
>>141 Stringに修正して走らせてみたところReDimのところで「インデックスが有効な範囲にありません」となります
>>143 ありがとうございます!
頂いたアドバイス元にしてもう少し頑張ってみたいと思います
Excelの関数を2つ覚えると前に覚えた関数の2つはすっかり忘れてしまっていて なにやら堂々巡りをしているようなのですが一体どうすれば良いのでしょうか?
>>144 先頭からCloseのところまではオリジナルのままだから、
ReDimでエラーになるってことは最初からおかしいってことじゃ
148 :
101 :2013/06/02(日) 10:40:20.43
>>116 無事にできますた!
102は最初からそう書けばいいのに。
114も同様で、111の時点で理解してないことを察してくれればねぇw
んで、マクロでやってみましたが、4行目でコンパイルエラーになり
Cleanのところが反転しました。
Cleanはマクロで使えないんですかね?
Sub 改行を削除()
i = 1
Do While Cells(i, 1).Value <> ""
Cells(i, 2).Value = Clean(Cells(i, 1).Value)
i = i + 1
Loop
End Sub
>>132 大げさだし小回りが効かないし表が使いにくい。
>>148 ワークシート関数はこんな感じで使うの
Sub a()
Cells(1, 1) = Application.WorksheetFunction.Clean(Cells(1, 1))
End Sub
151 :
101 :2013/06/02(日) 11:36:31.01
在庫管理試行錯誤 発注日付、品名→janで割り当て 購入単価のチェックをjanで、抽出して目視 自動で入庫単価のエラーチェック 何かアイデアありますか? 品目数は1000前後です
access
A列B列の文字列の中で、半角のカタカナがあったら全角カタカナにしたいんだけど パイパンにバイブ が パイパンにバイブ になってしまいます。 これを パイパンにバイブ にするにはどこをイジればいいでしょうか? Sub hankaku() a = Range("A1").SpecialCells(xlLastCell).Row For j = 1 To 2 For i = 1 To a Cells(i, j).Select For K = 1 To Len(ActiveCell.Value) If Mid(ActiveCell.Value, K, 1) Like "[ア-ン]" Or Mid(ActiveCell.Value, K, 1) Like "ー" Then MOJI = MOJI & StrConv(Mid(ActiveCell.Value, K, 1), vbWide) Else MOJI = MOJI & Mid(ActiveCell.Value, K, 1) End If Next K ActiveCell.Value = MOJI MOJI = "" Next i Next j End Sub
さっぱりワカランw どこが分からないかって、ほとんど全部がワカランw そもそも Private Function って何?とかね
それは基礎から勉強していただかないと、どうしようもないわ
今宵は低レベルな先生しかいないようでw
Sub a() MsgBox Application.WorksheetFunction.Jis(Cells(1, 1).Value) End Sub はエラーが出た。 Jis関数って元々アドイン関数かなんかだったのかな。
jis関数はdbcs関数の日本向けのエイリアスだから、vbaからならdbms関数でいけんじゃない?
dbmsじゃねーや。dbcs。
jis関数は半角英数字まで全角にするw 154は、わざわざ1文字ずつ判定してることに気づけば半角カナだけ全角にしたいという意図が読み取れるわけだが・・・ 低レベルな先生にレスされると苦労するわなw
意図も何も、質問にカタカナって書いてるし ソースもそうなってるやん
めんどくさい連中だな
>>159 にA,B列だけ指定してやればよくね?
試したら
>>154 お好みの゛ブ゛に変更してたし。
「パイパン」ってなぁに?
よろしくお願いいたします 【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 A列に「東京」か「大阪」か「名古屋」を含む20文字ほどの文字列が入力されています 3つの都市名はランダムに各セルに一つずつ、セル内でも決まった位置にはなくいろいろな位置にあります ここで、A1に東京がある場合B1に東京と、大阪がある場合は大阪と入力されるようにしたいのですが、 どんな関数でどのようにしたらよいでしょうか?
=IF(IFERROR(FIND("東京",A1),FALSE),"東京",IF(IFERROR(FIND("大阪",A1),FALSE),"大阪",IF(IFERROR(FIND("愛知",A1),FALSE),"愛知","該当なし")))
愛知じゃなくて名古屋だったな そこは自分で変換してくれ
【1 OSの種類 .】 WindowsXPSP3 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 =A1 =B1 =A2 =B2 =A3 =B3 ・ ・ という感じで、データ参照したいのですが、セルを複数選択して連続データをつくろうとしてのも、思い通りの連続データが生成されません ご教授頂ければ幸いです
INDIRECT()
>>172 C1:=IF(MOD(ROW(),2),OFFSET($A$1,QUOTIENT(ROW()+1,2)-1,),OFFSET($B$1,QUOTIENT(ROW()+1,2)-1,))
下にコピー
177 :
154 :2013/06/04(火) 23:21:53.86
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 タイムに関する質問です あるサイトから 「1:13:2」( *注 1分13秒2です) というタイムをA1に貼り付けB1で秒数に変換したいのですが、 A1に貼り付けた時点で「1:13:02」になってしまいます これだと1時間13分2秒になっていると思われうまくいきません B1の秒数の表示は73.2でも732でも構わないので上手く変換する方法を教えて下さい よろしくお願いします
表記が悪いだろそれ 1:13:2じゃ誰が見たって1時間13分2秒だ
>>178 区切り位置で、:を指定してiroiro変換した方がいい気がする
>>178 たとえば「1:13:2」と「1:13:02」はコピペした時点でどちらも「1:13:02」になってしまう
つまり、そのままだと0.2秒と0.02秒が区別できないい
対策としては、まず区切り位置で区切り記号を : に設定、次にA〜C列の書式を文字列に変更、
次にA列にタイムのデータを貼り付けると、余分なゼロが付かず、そのままA〜C列に元のデータが貼り付く
そしてD列に
=TIMEVALUE("0:"&A1&":"&B1&"."&C1)*24*3600
という数式を入れれば、目的の秒単位のデータ、この場合は73.2に変換できる
>>177 Sub hankaku()
a = Range("A1").SpecialCells(xlLastCell).Row
For j = 1 To 2
For i = 1 To a
Cells(i, j).Select
For k = 1 To Len(ActiveCell.Value)
If Asc(Mid(ActiveCell.Value, k, 1)) >= 161 And _
Asc(Mid(ActiveCell.Value, k, 1)) <= 223 Then
tmp = tmp & Mid(ActiveCell.Value, k, 1)
If k = Len(ActiveCell.Value) Then
MOJI = MOJI & StrConv(tmp, vbWide)
End If
Else
MOJI = MOJI & StrConv(tmp, vbWide) & Mid(ActiveCell.Value, k, 1)
tmp = ""
End If
Next k
ActiveCell.Value = MOJI
MOJI = ""
Next i
Next j
End Sub
初心者なんで間違えてたらごめんなさい。
最近覚え始めて、ここ見てコード書く練習してます。
パイパンなら性器表現でもいいいんじゃね Dim target, reg, rng, result, str, mc Set target = range("A1:B" & range("A1").SpecialCells(xlLastCell).Row) Set reg = CreateObject("VBScript.RegExp") reg.Pattern = "([。-゚]+)|([^。-゚]+)" reg.Global = True For Each rng In target Set result = reg.Execute(rng.Value) str = "" For Each mc In result str = str & StrConv(mc.SubMatches(0), vbWide) & mc.SubMatches(1) Next rng.Value = str Next
以下のようなことをしたい時、どのようにエクセルを使えば良いですか? ・会社の海外送金において、通貨別の合計額を集計したいです。 ・最終的には、月単位と年単位の通貨別の合計額を集計したいです。 ・送金は毎日あり、通貨と送金額を都度記録しています。 以上になります。 日々の送金記録を行うだけで上記2種類の集計表を作ることは可能でしょうか? アドバイスお願いします!
>>182 お前は帰化鮮人か。
正式な日本文は句読点の位置が厳格に決まっている。
岡崎洋三 『日本語とテンの打ち方』 を読め。
189 :
154 :2013/06/05(水) 23:01:55.39
>>182 えーと、試しにやってみましたか?
>>183 どこが性器表現なのかワケワカメですが、うまくいきました。
Set targetは分かるけど、Set reg以下がワカラン・・・
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 複数のセルにコメントがあります。 これらの表示・非表示を列ごとにできますか?
>>190 自分のPC(Win7pro Excel2010)で試してみた
いくつかのセルにコメントを設定しておいて
列選択状態で右クリックメニューには「コメントの表示・非表示」メニューなし
列選択状態でリボンの校閲タブには「コメントの表示」はあるものの、
これはシート内のすべてのコメントの表示なので列単位ではない。
列選択ではなく、範囲指定ならいけるか?と思ったけど、範囲選択の最初の
セル(※)だけしか処理対象にならないようだ。
※範囲選択したうち、白いままとなっているセルのこと
以上のことから、VBAで1セルずつ設定していくほかないと思う。
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel203 【3 VBAが使えるか .】 少々 【4 VBAでの回答の可否】 できれば不可 次の値を入力したとき、日付と認識されるのはaですが、 全て日付と認識させる方法がありますか? a 5/5 b 2013/5/25 c 5.5 d 2013.5.5
え?bも日付になるでしょ?
>>192 Private Sub Worksheet_Change(ByVal Target As Range)
If InStr(Target.Value, ".") > 0 Then
Dim a
a = Split(Target.Value, ".")
Target.Value = a(0) & "/" & a(1)
End If
End Sub
関数だと作業列になるかね
▼━質問テンプレ (必ず使ってね) ━━━ 【1 OSの種類 .】 WindowsXP〜7 【2 Excelのバージョン 】 Excel2007〜2010 【3 VBAが使えるか .】 初心者です 【4 VBAでの回答の可否】 可 1┃年 代┃月日┃2┃3┃4┃5 A┃昭和50年┃0115┃F┃K┃O┃W B┃昭和55年┃0515┃F┃K┃O┃E C┃平成10年┃1123┃G┃K┃O┃R D┃平成23年┃1205┃H┃L┃T┃Y E┃平成23年┃0531┃J┃L┃T┃U 上のようにデータベースがあって、それぞれの項目ごとにデータを複数条件で検索するフォームを作成し 抽出したものを別のシートに作成したいです ご教授ください
>>195 >それぞれの項目ごとにデータを複数条件で検索するフォームを作成し
>抽出したものを別のシートに作成
をすればいいだけだからな
どこがわからんのか具体的に教えてもらわんとなんとも言えん
まずはマクロの記録から始めてみては?
セルにコメントがあって、1〜6行に改行されたとき、それぞれの行の内容を 変数に入れるにはどうすればいいですか? 例えば、A1セルにあるコメントが ABC あああ 012345 だったら、a = "ABC"、b = "あああ"、c = "012345"と入れたい。 コメントは1〜6行あります。
改行コードを区切り文字にしてsplitすれば配列が返るだろう ただし、改行コードが混在している場合もあるので、予め改行コードを統一しておいた方が良いかもしれない
アタイ阻止
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 a1のセルに別のsheet名が入力されていてb2にa1を利用してリンクを 張ろうとしています。 =HYPERLINK(INDIRECT("'"&A1&"'!a1"),A1) と入力しましたが「指定したファイルは開けません」と出てしまいます。 b2をクリックするとリンク先のsheetに飛ぶようにお願いします。
嫌です
203 :
名無しさん@そうだ選挙にいこう :2013/06/10(月) 01:17:45.33
【1 OSの種類 .】 Windowsxp 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 否 別ファイルの表からセル内容を検索して、そこから左へ列をオフセットさせたセルの値を 表示させたいです。 vlookupだと検索する値が左端にないとだめだと思うのですが、右端にあります。 そこで、match関数とindex関数で式を組み立てたのですが、 外部参照になるためか、match関数がエラーを返してきます。 =index(ファイルA!a1:a100,match(z1,ファイルA!a1:a100,0)) 上記のmatch内がエラーとなります。 ファイルAは同時に開いた状態で、同じディレクトリに保存されているファイルです。 よろしくお願いします。
205 :
名無しさん@そうだ選挙にいこう :2013/06/10(月) 01:49:53.50
>>204 すいません、範囲の選択は、直接ファイルAのセルを選択して指定しているので、
シート名もはいっています。
説明が足りなかったです。
206 :
203 :2013/06/10(月) 01:55:03.91
>>204 =IF(C10="","",INDEX('C\xxxxxxxx\[xxxxx.xls]xx'!$A$5:$A$10000,MATCH(C10,'C:\xxxxxxxxx\[xxxxxx.xls]xxx'!$AE$5:$AE$10000,0)))
こんな感じです。
C10の値をae列で検索して、該当した行のA列の値を返したいのです。
その参照先が外部参照だとmatch内がエラーとなります。
自分なら1列右にシフトしてA列にキーを再掲するな
208 :
名無しさん@そうだ選挙にいこう :2013/06/10(月) 11:15:50.29
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 シート上のデータを元にcsvファイルを作りたいんですが 一部で "A","B","C" というようなデータが存在します。 chr(34)とchr(44)を&していけば出来るのですがsplitの逆で 一連の文字列を "(文字列)", で繋ぐような関数や方法って ありませんか? よろしくお願いします。
209 :
208 :2013/06/10(月) 11:17:40.95
そういえばVBAスレがありましたよね(汗 そっちで質問させていただきます。
210 :
名無しさん@そうだ選挙にいこう :2013/06/10(月) 16:25:19.29
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 縦で印刷すると文字も罫線も印刷されるけど 横で印刷すると罫線しか印刷されません どんな現象なんでしょうか? よろしくお願いします。
>>210 プリンタドライバがおかしいのでは?
すべてのBook、Sheetで同じ症状か
印刷プレビューではどうなるか
印刷の倍率を変えたらどうなるか
文字のフォントを変えたらどうなるか
プリンタドライバは古くなってないか(プリンタメーカーのサイトに新しいものがあるか)
他のアプリケーション(Wordなど)ではどうか などなど
いろいろ試してみてください
213 :
198 :2013/06/10(月) 22:19:11.15
>>199 色々とググってやってみましたが、コメントが配列にならず、
2つ目のMsgBoxでエラーになります・・・
Sub test()
Dim コメント As Variant, a1 As String
a1 = Range("A1").NoteText
コメント = Split(a1, vbCrLf)
MsgBox コメント(0)
MsgBox コメント(1)
MsgBox コメント(2)
End Sub
>>213 改行はvblf (文字コード10)
vbcrlfを入力してもvblfに変換されてしまうようだ。
理由は知らんが、セル内改行も確かこれなんだよな。なんだろうな。なんでもいっか。
Sub a()
Range("A1").Comment.Text Text:="a:" & vbCrLf & "ghg"
a1 = Range("A1").NoteText
コメント = Split(a1, vbLf)
End Sub
215 :
198 :2013/06/11(火) 18:39:58.12
>>214 それだとエラーが出るけど、vbLfなのはわかった。
んで、コメントが1〜6行あるので動作確認のため書き直したんだけど、
コメントが3行だった場合、4回目のとき矢印の行で
「インデックスが有効範囲にありません」というエラーが出ます。
Sub test()
Dim コメント As Variant, a1 As String
a1 = Range("A1").NoteText
コメント = Split(a1, vbLf)
For i = 0 To 5
If コメント(i) <> "" Then ←ここでエラーになって止まる!
MsgBox コメント(i)
End If
Next i
End Sub
コメントが3行だったら、こんな感じを想定してるんですが・・・
コメント(0) = "ABC"
コメント(1) = "あああ"
コメント(2) = "012345"
コメント(3) = ""
コメント(4) = ""
コメント(5) = ""
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 否 VBAでデータを参照して自動挿入する際 $B$1の形で参照にするようにした時でも計算式が追加分ズレます。 で、名前を定義すれば良いか?とも思ったんですが 次々追加される行(セル)に名前をつけていくのも現実的ではありませんし 列・行に名前をつけてもそこから名前,1のような指定の仕方も出来ないっぽいので意味がなさそうです どうすればよいでしょうか
217 :
名無しさん@そうだ選挙にいこう :2013/06/11(火) 20:46:04.07
仕様です 諦めてください
そうですか… いったん別のシートで計算して、計算結果を元のシートで表示して 対応することにしようと思います。ありがとう。
何をやりたいのかワカランから答えラレン
220 :
名無しさん@そうだ選挙にいこう :2013/06/11(火) 22:09:30.40
よろしくお願いします。 在庫表に関してです。 シート1に自社の商品在庫一覧があります。 A B C D 1 商品名 商品名 商品名 2 6/1 50個 100個 70個 3 6/2 -1個 -1個 -2個 4 20合計数 シート2〜10位まで卸先別に同じ商品一覧表があります。 A B C D 1 商品名 商品名 商品名 2 6/1 3個 5個 7個 3 6/2 -1個 -1個 -2個 4 卸先の在庫数の変動を、自社の在庫一覧表の合計欄にリンクさせる計算式を教えてください。 自社の抱える在庫数と卸先の抱える在庫数、どちらも管理する表にしたいのです。 シート例がきれいに揃っていなくて見ずらいかもしれませんが、どうかよろしくお願いします。
>>215 改行の数で配列の要素数が決まるので、こんな感じ
最終的に何がしたいのかよく分からんので書いてほしいものだが
あと、on error resume nextというものもある。場合によってはこれでもよい
Sub test()
Dim a1 As String
a1 = Range("A1").NoteText
コメント = Split(a1, vbLf)
For i = 0 To UBound(コメント)
If コメント(i) <> "" Then '←ここでエラーになって止まる!
MsgBox コメント(i)
End If
Next i
End Sub
223 :
198 :2013/06/12(水) 21:28:51.76
>>221 dくす。
配列自体、普段使わないのでUBoundを初めて知ったw
最終的にやりたいのは、コメントを内容別に書き出すことですが、
それは何とか自力で頑張ってやってみます。
んで、UBoundをヘルプで見たら、次のよーな例がありました。
Dim A(1 To 100, 0 To 3, -3 To 4)
Dim A(1 To 100)なら、変数はA(1)〜A(100)という意味ですよね?
Dim A(1 To 100, 0 To 3, -3 To 4)はどういう意味なんでしょう?
多次元配列じゃね
>>223 3次元の配列です。(立方体を連想してください)
ヘルプで「配列−多次元配列の使い方」から一部引用
多次元配列の使い方
Visual Basic では、最大 60 次元までの配列を宣言することができます。
たとえば次のステートメントは、2 次元の 5 x 10 の配列を宣言します。
Dim sngMulti(1 To 5, 1 To 10) As Single
配列を行列とすると、最初の引数は行、2 番目の引数は列を表します。
>>223 の「Ubound」の解説部分から引用
次のような配列が宣言されている場合、UBound 関数からは下の表のような値が返ります。
Dim A(1 To 100, 0 To 3, -3 To 4)
ステートメント 戻り値
UBound(A, 1) 100
UBound(A, 2) 3
UBound(A, 3) 4
の説明のあるページの先頭部分に
「配列の指定された次元で使用できる添字の最大値を、長整数型 (Long) の値で返します。」
と書いてあるように、1次元部分、2次元部分、3次元部分それぞれの添え字の最大値を戻り値
としているわけです。
なお、添え字の最大値と要素数は異なります。0 To 3−>4個、-3 To 4−>8個なので、
Dim A(1 To 100, 0 To 3, -3 To 4)での要素数は100×4×8=3200個になります。
来月にマイクロソフトスペシャリストの資格を取ろうと少しずつ勉強してるのですが、 Excel Web Appの利用も試験に出るのでしょうか?
でない
>>227 教えていただきありがとうございます。
それなら後は模擬試験の問題集などやれば合格できるかもです!
Excelのセルに =F35-F29 と言うような数式が書かれたセルをそのまま選択し 違う箇所へ貼り付けようとするとセル番地が自動的にずれますが これを$をつけずに 値をずらさずにまとめてコピーペーストする方法はないのでしょうか? 値の貼り付け数式を選んでもずれますね。。
なぜ$をつけないの
=を’=に置換して文字列として扱えばそのままコピペできそうだ
>>229 Ctrl+Shift+@ で数式表示させてコピーしメモ帳にはりつけ。
それを再度コピーしてExcelに貼り付け。
233 :
229 :2013/06/15(土) 15:51:00.99
もらったデーターが付いていない状態でコピーペーストで複製したい箇所が数百箇所程度あるからです。
>>230
>>229 数式バーに表示されている「=F35-F29」をドラッグしてコピー
↓
Escキーを押す
↓
貼り付けたいセルを選択してペイスト
235 :
229 :2013/06/15(土) 15:59:49.30
>>234 >>232 ありがとうございます。
ひょっとしたら簡単にできる方法があるかと思って聞いてみましたが
無さそうですね、、、
あきらめて$をつけたりしながら1つ1つやってみます。
ふ〜(^▽^)
>>229 そういうの、たまにありますよね。
元のセルを右隣にコピー。
今コピーしたセルを右隣に移動。
今移動したセルを左隣にコピーすると、
元のセルと同じ数式に。
10ケタの注文番号を入力するとき、最初の数ケタは共通しているため 書式のユーザー定義で100000000#と設定しました。 10000000101なら101と入力しています。 101と入力されたセルに、10000000101と値を残すには どうやればいいでしょうか?
別のセルで足し算
単純な小数点の引き算で 例 1.000001-0.21375 このぐらいの桁数があり 桁が不揃いな物を計算させていると で答えの欄にちょくちょく 1E-05 とかとErrorになっている箇所があるのですがこれは一体何なのでしょうか?何故起きるのでしょうか?
241 :
名無しさん@そうだ選挙にいこう :2013/06/15(土) 21:58:11.56
仕様です 諦めてください
日々更新される数百行ある以下のようなリストから A1 10 11 33 A2 12 50 31 A3 11 12 13 ・ ・ ・ 別表で任意の1行を引用したい場合 別表に抽出するときに =A2 を入れるとその後ろの3セルも自動的に 反映されるように仕組むことはできないのでしょうか ↓ =A2 | =B2 | =C2 | =D2 | ←自動反映 元データは日ごとに更新されるため必ず =XY で抽出したいのですが このように作る事は可能でしょうか?
むしろ、=A2を入れるんじゃなくて、データのある行番号(この場合"2")を入力すれば INDIRECTでかんたんにできる
本当に=A2とかそんなめんどくさい入力するのか? 実際にはデータが入っていてそれを参照したい訳じゃないの?
>>244 >>245 ありがとうございます
A列のタイトルの項目の数が多く任意でころころ変化する場合があるため
INDIRECTを調べてみましたがざっとみたところでは難しいように見えました、、、
ただ横並びにデータが入力されていると言うルールは絶対なため
>>243 の方法をとっていますが
変更回数が多い場合意外と骨の折れる作業であるため質問した次第です。
具体的なデータを書いてみ
行を指定するならG7セルに直接行の数値を入力すればok (この場合はG6セルは消したほうが良さそう)
251 :
246 :2013/06/16(日) 14:49:50.00
>>249 >>250 おおお!やりたい処理はまさにこれです!!ありがとうございますm(_ _)m
完全にあきらめてVBAのコードを書いていましたが、関数の方が全然速いですね。
本当にありがとうございました。
みかんX 10 33 45
りんご2P 11 33 54
タマゴZ 12 22 12
オレンジM 121 22 33
--------------------
Sub Macro1()
Dim 行番号
行番号 = Range("G1").Value
Range("H1").Value = Range("A" & xx).Value
Range("I1").Value = Range("B" & xx).Value
Range("J1").Value = Range("C" & xx).Value
Range("K1").Value = Range("D" & xx).Value
End Sub
--------------------
参考まで。。G1に行数を入力して実行すると行番号のデータを自動記載。
252 :
246 :2013/06/16(日) 14:52:58.00
>>251 オット!ミスりました正常に稼動するコードは下記となります。。
Sub Macro1()
Dim 行番号
行番号 = Range("G1").Value
Range("H1").Value = Range("A" & 行番号).Value
Range("I1").Value = Range("B" & 行番号).Value
Range("J1").Value = Range("C" & 行番号).Value
Range("K1").Value = Range("D" & 行番号).Value
End Sub
>>249 MATCH関数とINDIRECT関数の組合せは色々と便利な応用がききそうですね
仕組みがま完全に理解出来ていませんが勉強してみます。ありがとうございました。
よかったね
よかったよ
質問者じゃないんだけど興味があったので249をDLしたらZIPになってて、 それを解凍するとフォルダが出来てエクセルファイルが無いんだけど、 どうすれば見れるの?
>>256 自分もなった Excel2003のインストールされたPCでダウンロードするとそうならずに落ちてきて見れた。
xlsxの実態は中身がxmlのzipだから、どっかで誤判定されたんだろ たぶん拡張子変えれば普通に開けるようになる
>>249 ですが、
>>258 さんが正解だと思います。
xlsxの容量が大したことなかったので圧縮せずに上げました。
今後は念のため圧縮してから上げることにします。
260 :
257 :2013/06/16(日) 23:22:19.33
>>256 もしくはIE以外のブラウザを使ったのがよかったのかも知れないIEで見た時になった。
261 :
198 :2013/06/17(月) 20:56:50.90
>>224-225 dくす。
実際の使用方法が思いつかないけど、言いたいことは分かりました。
Excel あるある はやく言いたい
エクセルの練習問題で答えの通りに、 セルK5の数式をセル範囲K6〜K24にフィルハンドルでコピーしたらセルK5はしっかり数字が出てるのに他がアルファベットとか出て文字化け?みたいになってエラーになります。 こういう時はどうしたら正しく数式をコピーできるのでしょうか?対処方法はありますか?
>>263 まずは下記をご回答ください。
▼━質問テンプレ (必ず使ってね) ━━━
【1 OSの種類 .】 Windows**
【2 Excelのバージョン 】 Excel**
【3 VBAが使えるか .】 はい・いいえ
【4 VBAでの回答の可否】 可・否
【5 検索キーワード 】 Googleやヘルプでの検索キーワード
>エクセルの練習問題
練習問題の具体的な設問内容など
>>264 【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel 2010
【3 VBAが使えるか 】 .いいえ
【4 VBAでの回答の可否】 否
「よくわかるMicrosoft Excel 2010 基礎」と言う本に付属しているCD-ROMあるブックの練習問題をやっています。
そこで問題文に、
「セル【K5】にFCドラゴンの勝点を求めましょう。勝点は[勝利数×勝利ポイント+引分数×引分ポイント]で求めます。
なお、勝利ポイントはセル【J2】、引分ポイントはセル【K2】をそれぞれ参照して数式を入力すること。
次に、セル【K5】の数式をセル範囲【K6;K24】にコピーしましょう。」
と書かれていて、【K5】をアクティブセルにして「=」を入力してからそれぞれのセルをクリックしていき「=D5*J2+E5*K2」でEnterして、
セル範囲【K6;K24】をオートフィル右下ダブルクリックしたら他範囲内のセルが化けました・・・
画像うまく貼れているかわかりませんが・・・
http://uproda11.2ch-library.com/391301fnB/11391301.png
A1セルに数字の12345があったとき、B1セルに'12345と入れるにはどうしればいいですか? =CONCATENATE("'",A1)でいけると思ったらダメぽですた・・・ orz
>>265 =D5*J$2+E5*K$2
J2とK2は参照するとき固定させる必要があると思うのでそういうときは$を入れて固定させます
>>266 じゃ、これで
="'"&A1
271 :
266 :2013/06/18(火) 21:05:50.89
>>269 ,270
書き方がマズーだったかな?
B1セルの書式を標準のまま、文字列の数字にしたいんです。
273 :
266 :2013/06/18(火) 21:27:11.48
>>272 =TEXT(A5,"'#") も =TEXT(A5,"'"&A5) もダメぽですた・・・
>>271 意味がわからん
単純に文字列に変換したいだけなら =A1&"" みたいなのでもいけるけど
キーボードから '12345 と入力した状態 (確定すると頭の ' が見えなくなる) を数式で再現したいってこと?
それは不可能だけど、根本的に何かExcelの使い方を勘違いしてるとしか思えん
なんのために?まずは理由とか目的を書け
>>263 練習問題の答えのとおりにやってエラーがでるなら
練習問題に問題があるんだろ
練習問題作ったやつに聞けよアホかw
>>273 セルの書式は標準、数値は文字列へという条件
=TEXT(A5,0)
でとりあえず小数点以下の数値を扱わない場合はいいと思う(’←これ不要)
表示形式についての細かい事はまずヘルプを参照してください
つ 牛乳
別に数値とか文字列とかいちいち変換しなくてもそのまま計算できちゃうし
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 セル一つ一つの中に以下のような記述がされており、この中の数字だけを合計したいと思っています。 各セル毎に、数字が何回出てくるかはバラバラであり、数字は最大で10回出てきます。 数字は必ず半角スペースで挟まれています。 A1 中野 150 新宿 150 中野 A2 新宿 190 東京 190 新宿 代々木 130 千駄ヶ谷 A3 新宿 160 巣鴨 170 板橋 170 巣鴨 150 高田馬場 140 中井 170 新江古田 170 東中野 : : 一発で出すのは不可能と思ったので半角スペースで区切られてる部分だけを まず別セルにどんどん抽出しようと考えたのですが、 一個目 =MID(E5,SEARCH("-",E5,1)+1,SEARCH("-",E5,SEARCH("-",E5,1)+1)-(SEARCH("-",E5,1)+1)) 二個目 =MID(E5,SEARCH("-",E5,SEARCH("-",E5,1)+1)+1,SEARCH("-",E5,SEARCH("-",E5,SEARCH("-",E5,1)+1)+1)-(SEARCH("-",E5,SEARCH("-",E5,1)+1)+1)) 三個目…で数式の文字数オーバーで駄目になりました。五個も十個もとなると入れ子構造も膨大になりそうです。 「○個目のスペースから○個目のスペースまでを抽出する」 ような方法はありますでしょうか? 或いは、ほかにうまい合計の算出方法がありましたら教えてください。
>>280 区切り位置→スペースで全データがバラバラになってくれる
>>281 >「○個目のスペースから○個目のスペースまでを抽出する」
>ような方法はありますでしょうか?
>或いは、ほかにうまい合計の算出方法がありましたら教えてください。
バラバラにしたあと =SUM(A1:Z99) とでもすれば文字セルは無視されて数字セルだけの合計が出る
【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
VBA初心者です。
テキストファイルからデータを読み込んで
区切り文字で分割するマクロを作りたいのですが
「エラー'62' ファイルにこれ以上データがありません。」が出ました。
ググってOfficeTANAKAの
ttp://officetanaka.net/excel/vba/error/execution_error/error_62.htm のページにある、以下のソースを試した所エラーが出ました(エラーを試すためのサンプルということですか?)
LoopのあとのLine〜の行をコメントアウトしてみると、エラーは出なくなりますがデータも読み込みません。
テキストファイルの内容に不備がある以外に、考えられるエラーの原因はありますか。
Sub Sample1()
Dim buf As String
Open "C:\Sample.txt" For Input As #1
Do Until EOF(1)
Line Input #1, buf
Loop
Line Input #1, buf
Close #1
End Sub
>>285 ちゃんとかいてあるでしょ。
テキストファイルを開いて、すべてのデータを1行ずつ取得するには、
┌──────────┐
│Do Until EOF(1) │
│ Line Input #1, buf │
│Loop │
└──────────┘
とします。
>>286 ありがとうございます。
>>285 で書いた通り、Loop後のLine Input〜
の行をコメントアウトしたんですが、それだとデータを読み込んでくれないんです。
ご指摘いただいた書き方はこの一行をコメントアウトした時と同じ・・・で合ってますよね?
288 :
名無しさん@そうだ選挙にいこう :2013/06/21(金) 21:41:11.53
もしかしてそれだけのコードで読み込んだ内容がワークシートに反映されるとか思ってない? そのコードはファイルの内容を変数bufに入れてるだけだよ?
289 :
名無しさん@そうだ選挙にいこう :2013/06/21(金) 22:00:12.72
>>288 もちろんその後に区切ってセルに読み込む動作は入れています。
ということは
>>286 の書き方をしていれば少なくとも
「ファイルにこれ以上データがありません。」エラーには対処できていると考えて良いのですか
でもって別の箇所にデータを読み込まない原因があると
>>290 これなら分かるかな。テキストファイルを一行読みこむごとにA列に表示させている。
Sub Sample1()
Dim buf As String
Dim a As Long
a = 1
Open "C:\Sample.txt" For Input As #1
Do Until EOF(1)
Line Input #1, buf
Cells(a, 1).Value = buf
a = a + 1
Loop
Close #1
End Sub
Dim a As Integer ではなく Dim a As Long にしてる理由は?
Excel2003で扱える行数が65,536行 Excel2007以降なら1,048,576行 それに対してIntegerは-32,768〜32,767 Longなら-2,147,483,648〜2,147,483,647
>>292 キータイプが少ない。
integerに比べ桁数を気にしなくて良い。
Cと共通。
むしろintegerを使う理由ってあるの?
295 :
294 :2013/06/22(土) 00:10:44.03
>>291 おはようございます。アドバイスありがとうございます
試した所読み込まない→ファイルパスが通っていないのが原因だと判明しました
適切にパス関係を直したところきちんとデータを読み込みました
とてもデバッグに便利で分かりやすかったです。ありがとうございました。
297 :
名無しさん@そうだ選挙にいこう :2013/06/22(土) 08:15:47.92
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 別シートにある数列を参照し、そこからSUMIFSで数字を合算させいたいです。 現在、ある月の数字の集計をしたく、 =IF($A7="","",SUMIFS('G351(D84)'!$K:$K,'G351(D84)'!$L:$L,">=2013/4/1",'G351(D84)'!$L:$L,"<=2013/4/30")) のような関数を組みました。 (K列に数字が入っており、そこから必要な部分(4月)を抜き出し合算させる方法を取っています)。 正直、関数に直接年月を打ち込むのも不格好ではあったのですが、 一応数式として成り立っていたので目をつぶっていました。 が、しかし、同じ関数式で、別シート参照バージョンを多数作ることになり、シート名参照を行う関数をここに加えようと思います。 INDIRECTとADDRESSを使用し試行錯誤はしているのですが、どうしても列参照(上の関数式で言いますと、K:KやL:Lです)が出来ません。 どのような関数を使用すればよいでしょうか。 宜しくお願いします。
よく分からんが別シート参照するだけなら 指定するときに直接そのシートの範囲を選択するか、Sheet2!A:Aのようにシート名入れればいいだけだけど
あと直接年月入れるぐらいなら =SUBTOTAL(9,K:K) とでもして4月でフィルタリングした方が楽
いまどき構造化参照つかわないのって頭どうかしてるんじゃないの
>>298 シート名が多数あるので、関数を利用しセル名から参照できるようにaddressを使用したいのです。
ただ、addressで列全体を指定する方法が分からず……
>>299 年と月を指定しなければならないんですが、それを使用すればできるんですね。試してみます、ありがとう
各シートの内容をもう少し具体的に書いてくれ
>>301 ・どこが可変になるのか。関数で参照する値は何なのか具体的に
・作業列一切使えないのか、配列使えないのか
・参照と演算を切り離してはいけないのか
ex.データシート内で変動する値の方を参照し演算を完結させてから表示シートから参照など
>>302 参照したいシートには、商品が出荷された日と数量が列に表示されています。
それを月毎の出荷数量の合計を、別シートにある一覧表に表示させたいのです。
商品毎にワークシートがわかれているため、address関数でワークシートひっぱりsumifsで必要月の出荷をひっぱってきたいのです。
が、address関数を使用した列全体の参照の仕方が分かりませんでした。
(別ワークシートをセル名から指定し列全体を参照する方法があればaddressでなくとももちろん構いません)。
ワークシート参照がひとつふたつなら直接指定でもいっこうに構わないのですが、量が多いもので……
>>303 参照する列は、出荷日と出荷数量です。
出荷日から、出荷月毎の数量を合算した数字をひっぱってきたいのです。
作業列はアリです、失念しておりました……。
仮にもし1つのセル内で完結できるなら……よろしくお願いします。
>
>>301 > ・どこが可変になるのか。関数で参照する値は何なのか具体的に
> ・作業列一切使えないのか、配列使えないのか
> ・参照と演算を切り離してはいけないのか
> ex.データシート内で変動する値の方を参照し演算を完結させてから表示シートから参照など
は?
>>305 各シート名:Sheet1,Sheet2,,,
参照範囲はどのシートでもB列とする
集計シート
A列にシートの名前を入力
Sheet1,Sheet2,,
B1:=SUM(INDIRECT($A1&"!$B:$B"))
下にコピー
sumifsでも同様にできる
が、
悪いこと言わんから1シートにしとけ
日付 商品1 商品2 商品3
1/23 100 200 300
...
はるかに楽だし、いろいろ柔軟に対応できる
集計なんかピボットテーブルでやるのがいちばんラクに決まってる ピボットテーブルつかえないデータにしてるのが間違い
>>307 ありがとうございます!!
試しにして見ましたら出来ました。
>>308 Excelでの提出の形が決まっており、ピポットテーブルは使えないのです。
元々手打ち電卓集計をしていたものを関数により省略化することが目的でした。データ表の融通はきかないのです、申し訳ありません。
現在、月毎の集計を出すために、2013/04/1以上2013/04/30以下、というように条件を手打ちしているのですが、こちらは解決方法ありますでしょうか。
フィルタでというアドバイスは頂きましたが、最終紙媒体に出力するため難しいです。
>>309 集計用、印刷用のブックを用意しれ
別のブックからでもデータは参照できる
その中なら数式とか作業列とかやり放題だろ
>>309 条件選択するセル作ってそこ参照すればいいだろ
データ表がいくら融通利かなかろうと、データである限りいくらでも捏ね様ある
>>310 のやり方もそうだし非表示列を作業用に使うなり
もっと知恵絞れ
特定の数値に 別セルへあらかじめ設定した対応する文字を表示させたいのですが 例) A列 B列 001→ 開始 002→ 処理中 003→ 処理2作動中 ・ ・ 100→ すべて終了! このような処理を実現することは可能なのでしょうか?
vlookupでいいんじゃない
314 :
312 :2013/06/23(日) 13:27:15.56
>>313 まさにこれで実現できますね
ちょっと難しそうな関数ですがトライしてみます
ありがとうございました。
マイクロソフトスペシャリストの試験に「表の印刷」ってやりますか?
試験の内容を公開するのは禁じられてるから書けません。
裏の印刷もあるのか?
裏マイクロソフトスペシャリスト試験… 表の試験に受かったものにだけ、その存在が知られるという
中二っぺぇ。
ラスボスはゲイツ、全財産を賭けて戦う
ひと昔前にMOS2003の資格を取ったけど、 試験の程度を知ってるヤツからは「ふ〜ん」レベルだが 知らないヤツからは「凄いね」と神扱いされるw
menu.xlsにマクロを書き、B2セルに開きたいシート名を書きます。 list.xlsのA列・B列には、それぞれ保存したブック名とシート名の一覧を書きます。 (シート名は重複しません) ブック名 シート名 青森.xls AMR1 青森.xls AMR2 青森.xls AMR3 秋田.xls AKT1 秋田.xls AKT2 愛知.xls AIC1 愛知.xls AIC2 愛知.xls AIC3 menu.xlsのB2セルに書いたシート名を呼び出すマクロを書きましたが、 オートフィルタを使わず、findでやるにはどうすればいいですか? Sub 検索1() awp = ActiveWorkbook.Path key = Range("B2").Value Workbooks.Open Filename:=awp & "\list.xls" Range("A1:B1").AutoFilter Range("A1:B1").AutoFilter Field:=2, Criteria1:=key, Operator:=xlAnd book_name = Range("A65536").End(xlUp) sheet_name = Range("B65536").End(xlUp) Workbooks.Open Filename:=awp & "\" & book_name Sheets(sheet_name).Select End Sub
>>322 俺だとワークシート関数のcountifを使うかな
findはわかんね
よろしくお願いします 【1 OSの種類 .】 Windows8 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 例えばデータが 30,30,30,29,29,29,29,28,28,27,26,26,26というデータがあったとして それぞれの数字の個数を数え上げて表示するようにって数式とかでできますか? 30 3 29 4 28 2 27 1 26 3 という感じで できるならやり方を教えていただければと思います
VBAじゃないと無理 諦めろん
>>324 A1に入力、
区切り位置でカンマを指定、
A2=COUNTIF(1:1,A1)
A2を右にオートフィルタ
すべて範囲選択して、コピー
別の場所に値で貼り付け+行列の入れ替え
後はフィルタで重複の無視
>>326 ありがとうございました
ちょうどいい関数あったのですね
おかげで出来ました
ピボットテーブルで
よろしくお願いします。 【1 OSの種類 .】 WindowsXp 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 sheet1にシステムから自動出力されたデータを貼り付けて、 それをsheet2で カテゴリ、商品名、売単価、仕入単価、売上数量、売上金額等必要なデータだけを参照してます。 その後の列に粗利(売上金額-(仕入単価×売上数量))と売上ランキング(Rank関数)など計算させて、 sheet3ピボットテーブルにてカテゴリ、ランキング順にソートしてます。 このピボットテーブルで、売上金額がカテゴリ毎の集計の合計金額の30%に満たした分のみ 条件付き書式でセルの色を黄色にするということは可能でしょうか? 具体的には次レスに書きます。
330 :
329 :2013/06/26(水) 15:11:23.89
<Sheet1> カテゴリ JAN 商品名 売単価 仕入単価 売上数量 売上金額 仕入数 ・・・他データ 01 111 A商品 100 90 200 20000 300 01 112 B商品 150 70 100 15000 200 01 490 C商品 130 80 200 26000 250 02 311 D商品 120 20 150 18000 10 など(カテゴリとJANの重複はなし) 大体1000〜2000行(最大) <Sheet2>※セル番地で参照しているだけ カテゴリ JAN 商品名 売単価 仕入単価 売上数量 売上金額 売上ランク 粗利 粗利ランク 原価率 01 111 A商品 100 90 200 20000 2 1000 4 90% 01 112 B商品 150 70 100 15000 4 8000 3 46,6% 01 490 C商品 130 80 200 26000 1 10000 1 61.5% 02 311 D商品 120 20 150 18000 3 15000 2 16,6% 粗利は売上金額-(仕入単価×売上数量) ランキングはそれぞれ売上金額・粗利金額をRANK関数にて順位づけ 原価率は仕入単価÷売単価で計算 参照式・数式は3000行まで入ってます。
331 :
329 :2013/06/26(水) 15:13:00.97
続きます。 <Sheet3> ピボットテーブル <行フィールド>カテゴリ 粗利ランク JAN 商品名 売単価 仕入単価 原価率 <データフィールド> 売上ランク 売上数量 売上金額 粗利 01 1 490 C商品 130 80 61.5% 1 200 26000 10000 3 112 B商品 150 70 46,6% 4 100 15000 8000 4 111 A商品 100 90 90% 3 200 20000 1000 02 2 311 D商品 120 20 16,6% 4 150 18000 15000 となっています。 商品の売上数量・売上金額・粗利がそれぞれのカテゴリの合計の50%を満たす分のに色をつけたいのです。 カテゴリ01の売上数量(200+100+200)×50%=250 で 売上ランキング順で (この場合C商品とA商品) カテゴリ01の売上金額(26000+15000+20000)×50%=30500 で 売上ランキング順で (この場合C商品とA商品) カテゴリ01の粗利金額(10000+8000+1000)×50%=9500 で 売上ランキング順で (この場合C商品) 判りづらくてすみません。 どなたかご助力お願いいたします…
狩野舞子
>>329 マジでわかりにくいな…
そのテストデータが入ったエクセルのファイルをどこかにアップロードできない?
334 :
329 :2013/06/26(水) 20:46:26.27
>>333 ありがとうございます。
仕事のデータなのでそのままはまずいので
あした加工してアップしてみます。
・グラフ(散布図)の要素を動的に取得する ・空白を0としない この2つを合わせたいのですがうまくできませんでした、アドバイス等頂けると幸いです それぞれ単独でならばできました 一つ目の動的に要素を取得(入力したところまでを範囲としてグラフ作成、更新)は、 offset($A$1,1,0,match(max($A:$A),$A:$A)-1,1) これで行いましたcountaは A B 1 2 2 3 6 このようなときに正しくできなかったのでmatchを使いました 二つ目の空白を0としないというのは、たとえば上記でいうB列に if(C1="","",C1*10) このような式が入っている場合、0となってしまい、グラフの0/空白の扱いでも解決できませんでした しかしこれ単独であるならばNA()+条件で文字色白で解決できました この2つを合わせたとき、NA()ではどうしても参照先エラーを起こしてしまい、解決できませんでした 何か良い関数等ありましたらよろしくお願いします
まずどこかの列に絶対に空白を入れない列を作ったほうがいい(通し番号とかでいいので) その列をカウントする match(max($A:$A),$A:$A)-1とか明らかに周りくどい処理
337 :
329 :2013/06/27(木) 10:58:15.36
338 :
329 :2013/06/27(木) 10:59:49.25
>>337 パスを書き忘れました。すみません(´;ω;`)
パスは名前の「329」です。
>>329 vbaの領域だが、うーん
そうだねぇ
・新しいシートを3つ作り、シート2からAABBCCそれぞれを分ける
AA用シート A2=if('Sheet1(データ貼付)'!A2="AA",'Sheet1(データ貼付)'!A2,""
BB用シート A2=if('Sheet1(データ貼付)'!A2="BB",'Sheet1(データ貼付)'!A2,""
CC用シート A2=if('Sheet1(データ貼付)'!A2="CC",'Sheet1(データ貼付)'!A2,""
こんな感じ。
・で、それぞれの項目でランクを付ける
・その順に並び替え
・累計を出す
・合計を超えるか判定
・最後にピボットテーブルのシートに戻って条件付き書式、index+matchで判定
保存の時に言われた
2003だと他のシートを条件にして条件付き書式を設定できない/(^o^)\
・2003用に作りなおし。
・最後の判定部分をピボットテーブルのシートに持ってきた。
ttp://www.dotup.org/uploda/www.dotup.org4301845.zip.html 売上数しか作っていないが、まぁ頑張れ。
indirectも使いこなせばもっと楽になるぞ、頑張れ
でも、こんなクソややこしい計算式作るぐらいならvba覚えたほうが早いよ。
341 :
329 :2013/06/27(木) 17:22:39.96
>>339 ありがとうございます。
サンプルまで!
ぜひ試してみます!!
助かります( ;∀;)
どなかか教えて下さい。 同じ原典のExcelファイルが多数あります。 このExcelはマクロを使用しています。 このマクロにバグがあることが判明しました。 で、すべてのファイルのマクロを修正したいのですが、 一括で修正する方法はないでしょうか?
方法があったな、どうやるんだっけ。忘れた。 単純なブックなら、 マクロのバグを取り除いたブックを先に用意、 そこにデータを移す(シートをコピー等)という方法があるな。
f2キーを押す機会がかなり多いんだけど、 ノートだとf2キーなんて見ないと押せない なんとか別のキーにアサインできない?
マクロでSendKeys "{F2}"を登録しておいて、そのマクロをショートカットに登録すればいいんじゃね
>>345 試しにやってみたら、なんか印刷画面が開くんだけど
もちろんキーボードのF2を押したら編集モードになる
Sub F2()
SendKeys "{F2}"
End sub
たったこれだけの物をシートモジュールに書いてショートカットキー登録しただけ
同じだ。excel2010 win7 64bitで確認 ショートカットにはctrl+q、ctrl+uで登録してみたけど両方なる
印刷画面が開くってことはショートカットキーをCntl+Pにしたとか? Excel側で設定済みのキーは上書きできなかったと思うけど
>>348 自分で試してみればいいよ
Excel2010だとなぜか印刷になる
ctrl+F2が印刷画面の表示で、仕様上そちらが優先されるということね。 勉強になります。
へぇ
1秒も待たないといけないの?
行の最後の句点"。"を削除したいのですが、何か方法はないでしょうか? 例) ↓二つ目の句点のみ削除したいの ・あいうえお。かきくけこ。
作業列を作って、=IF(RIGHT(xx.1)="。",LEFT(xx,LEN(xx)-1),xx)
実際、F2の代用として使うのには無理があるな 入力できるようになるまで1秒待つのは結構長い
タイマーみたいな原始的な方法じゃなくて、Ctrlキーが押されてるかどうか直接調べて、 離された瞬間にF2を送ればいいんじゃね?と思って作ってみたけどダメだった APIを使ったマクロにはショートカットが登録できないっぽい これはもう、外部プログラムでやるしかなさそだな Declare PtrSafe Function GetAsyncKeyState Lib "User32.dll" (ByVal vKey As Long) As Long Sub F2() While GetAsyncKeyState(vbKeyControl): Wend SendKeys "{F2}" End Sub
キーバッファをクリアすればいいんだろ
361 :
名無しさん@そうだ選挙にいこう :2013/06/29(土) 13:40:58.28
>>356 他の関数式(最後の文字を削除するという式)
=REPLACE(A1,LEN(A1),LEN(A1),"")
F2キーを多用するやつって、どんなときに使うんだ?
セル内移動
セルの編集以外にないと思うけど
既に入力されたものを編集する時に、セルをダブルクリックするか、 fxのところをクリックすれば出来るのは判ってるけど、 キーボードからやる方法が必ずある筈だと、 ctrl-enterとか、alt-enterとかshift-enterとか、ctrl-tabとか試しても見つからなくて 仕方なく誰かに聞くとF2だと教えられる そんなん判るかと思うととも、センスの無さに絶望する
道具に合わせて立ち回れない自分を棚に上げて 愚痴るような香具師はしょせんその程度の器 俺がExcelをいじる時は、左手薬指がF1、中指がF2、 右手人差し指・中指・薬指がそれぞれカーソルキー 左・上・右に自然と来るように訓練済みだ これくらいできるように努力してから愚痴を言え
>>366 どうがんばっても改善できないなら慣れるしかないけど、
たぶん簡単な常駐プログラムで解決できる
ぐぐると同じような質問が出てくるから需要はあるはずだし
すでに誰かが作ってる可能性もある
368 :
名無しさん@そうだ選挙にいこう :2013/06/29(土) 21:00:55.40
vbaではバッフャクリアは難しいようだけれど、チャタリング防止することはできる。
>>366 人や環境によるんじゃないかなぁ。そこは強制してはいけないと思う。
私はシステムから出てくるデータをEXCELにほおりこんで、ボタンを押せば完了なのでマウスがメインだ。
ブラインドタッチも出来ないよ。ちなみに私は
>>339 であり、
>>291 だ。
変な回答と思うなら、適切な回答をして上げてくれよ。
>>367 yamyとかかなぁ、と思ったけど結構難しいと思う。
APIのフックがいる。あまりよくわかっていないけど、恐らくOSの機能にアタッチするんだろう。管理者権限とかどうなるんだろうな。
しかし、それをクリアしても結局EXCELの問題に行きあたるわけで・・・
やはりF2押すほうが早いんだろうなぁ
そんなにキーボードみるのって不都合というか、仕事が遅くなるのかな
キーボード見ていいと思うんだけどなぁ
盲目の方だったら、すいません。
>>369 慣れろという回答が不適切だとでも言うのか
左薬指でESCとF1を探って位置を確保し
中指でF2を押すだけのことじゃん
アプリ作ってCtrl+なんとかキーに割り当てて
押すのと何が違うんだよ
F2で編集って別にExcelに限ったことじゃないよね
>>370 さぁ?不適切と言い切る自信は私にはない。
PCを触って10年、EXCELを本格的に触って5年ぐらいかな。
キーボードを触ってブラインドタッチが出来ない、しかしマクロはそこそこできるという私なりの意見だ。
>>291 .339上記の答えを出せるレベルにはある。
両方共一時間以内だね。別にわざと抽出したわけではないが、だいたい日常業務でも1時間以内に業務を省略(マクロを組むなり、なんなり)している気がする。
私の口からホームポジションを変えろとはいえない。当人にとって楽な方法が一番だ。
私が、キーボードを見ながら打ったほうが早いと思うからそう言っただけだ。
もしF2キーを見てから打つほうが遅いなら、謝るよ。
しかし、まずはあくまでひと通り自動化するのが先決と思うんだ。
それは私の中では素早いキー入力よりも重要と思っている。よって、外部アプリを検討に入れる。
アプリケーションを作るのも難しいと思う。
もちろん、.netは触れるよ。
VB・C#、C++は趣味でやったけど、OS(API)にフックとかは難しいと思う。
この一連の問題を解決するexeなりdllなりを、できるor誰かが用意してくれるなら別にいいと思う。
最終的に作業が正確で、早くなるなら、何も問題はないよ。
これは質問者も回答者も、全員の同意とするところだろう。
家でやるなら確実にyamy使うと思うけど、 会社のPCはプレーン環境が強制させるんだよな だからマクロでカスタマイズするしかない
ブラインドタッチなんて言葉使ったら、乙竹がツイッターで激怒するぞ。
>>374 しないだろw
あれ、障害者バカにしてるし。
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel 2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 「条件付書式:指定の値より大きい」を利用してセル内の数値を赤太字で表示させたいのですが、 選択したセルに「=SUM」などの数式が含まれていると、数式セルの数値だけ「######」と文字化けしてしまいます。 プルダウンメニューから選択可能な書式では文字化けはしないのですが、「ユーザー設定の書式」から「太字」を選択すると 上記のような文字化けが起こってしまいます。 文字化けを回避する方法を教えて下さい。よろしくお願いします。
セル幅
を広
くしてあげてください。
太字にすると幅が広くなるので起こりますん 列幅ダブルクリックで自動変更されますん
セルの高さが自動調節されないことがあるのは何なんだ
セル内改行とか変な書式とかセル結合とかしてると自動調整が狂う
>左手薬指がF1 ヘルプ厨?
>>383 薬指をF1の左横に当ててガイドにすると
F2の上に中指を固定しやすいってだけの話だよ
F1はESCとくっついてるからF1に指を乗せること自体が困難
欠陥キーボード愛好家の方かな?
俺のノーパソ(ダイナブック)は、[ESC]の隣が[半/全]で、その隣が[F1]だ。 あ、そんだけw
↑キーの右がshiftだったりするな
tes
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 はい(簡単なもの) 【4 VBAでの回答の可否】 否 お願いします。シート1のセルA1に式を入れます。その式はシート2とシート3とシート4のA1からA30にとある値が 入っていたら100とセルA1に表示させるような式です。ある値は23個あるのですが名前をつけてMATCH関数やLOOK関数を 用いても、検査値も検索範囲もそれぞれが複数のためか、うまく行きません。 どのような方法がありますでしょうか。よろしくお願いいたします。
ファイルを開いてから何も弄ってないのに 終了しようとすると「変更を保存しますか?」と聞いてきてウザいのですが これをOFFにする方法は無いでしょうか?
391です。テンプレ忘れてました 【1 OSの種類 .】 Windows7 Home Premium 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 NO 【4 VBAでの回答の可否】 NO
>>393 さっそくの回答をありがとうございます!実は、とある数値が23個くらいあるんです。
それは4桁のコードなのですが、それをシート1のセルB1にすべて入力する方法がありますか?
別シートにその4桁のコードを並べてその範囲に「名前」をつけてみたりしたのですが、うまくいきません。
もしかしてVBAでないとできないのでしょうか。
今ためしにB1の下に向かって値を入れ、シート2〜シート4のセルB1に入れる 式の「Sheet1!B1」のところを「Sheet1!B1:B23」みたいにしてみたのですが、拾ってこない? 複数対複数、が無理なのですかね
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 新規のブックを立ち上げ、マイナスの数値(たとえば-1)を入力したら赤くしたいんだけどできますか?
>>391 「弄らない」ではなく「変更しない」ようにすれば良いだけ
弄らなくても内容が変更される要因はいくつもあるからな
>>391 CELL、INDIRECT、INFO、NOW、OFFSET、RAND、RANDBETWEEN、TODAY関数を使ってると、
ファイルを開いただけで「変更した」と見なされてしまうので「保存しますか?」と聞いてくるようになる
一番はまりやすいというか、何気なく使ってしまって気付かないのがINDIRECT、OFFSETあたりだと思う
数式を修正するか、自動再計算をoffにするぐらいしか方法はない
>>399 ありがとうございました。理解しました
OFFSET、INDIRECTは使ってる使ってないどころか
超多用してました
非常に複雑なイレギュラー計算連発のブックで、
自動再計算OFFとか関数使わないってのは無理なので
ウザいけど諦めて毎回「いいえ」をポチることにします
>390ですが、VBAでの回答の可否、を「はい」にしたらできますでしょうか?
>>401 たぶんできる、けど、ぶっちゃけ質問の意味が、何をやりたいのかがよくわからない
えええええ????本当ですか?わかりにくい文章ですみません。 つまりフォーマットのシート2やシート3や、時にはシート4のA列に、4桁のコードを入力 するのですが、その時、200個くらいあるコードのうちの23個にひっかかるならば シート1に「23個にひっかかってます!!」という結果が欲しいわけです。 その23個のどれかにひっかかるなら、100円になります!という表示がおこって欲しいのです。 A列に入るコードも200個のうちのどれかです。どのようでしょうか・・・
出来ます
ぜひともお願いします!
>>403 「200個くらいあるコード」はどこに書いてあるの?
その中から23個を選ぶ方法(法則)は?
コード表は、全く別のシートです。23個は1010、1020、1030、1031、1050、1060 みたいな不規則なのです。なので別にリストみたいなのを作って「名前」をつけるしかないのかな?と思っていました。 また、コードではなく商品名でAAで始まる、BBで始まる、CCで始まる、みたいに凡そ3種類には分けられるのですが その中に4個くらい例外があるのです(DDという単語を含む商品のみ、23個には入らない) その例外のせいで、コードも途中がとびとびになってしまうのです。
>>403 200個ぐらいあるコード
がシート1のC列にでもあるとして、
シート2のB1=countif(シート1!c1:c200,a1)
これをシート2からシート4まで、四桁のコードの横に書く
つまり、該当してるかどうかの判定だな。
それで、a1=if(sum(シート2:シート4!b1:b30)>=23,"23個にひっかかってます!!","ひっかかってない")
こんな感じだと思う
>>407 そんな例外はEXCELでは処理不可能なので、
大人しくシート1のC列にでも新しく作って下さい。
まぁそのうち判定もできるようになるだろう。
>>390 データA1:A30をA2:A31に移動してもよければ A1に DATA とでもタイトル名を付けて
DCOUNT関数を利用すれば複数条件を記述できる。研究してみたら。
=DCOUNT(Sheet2!A1:A31,"DATA",E1:E24)のような感じ
A2:A31に記載されているデータ内に条件E2:E24に該当するデータがあればその個数を抽出できる。
>>407 ちょっと箇条書きにしてくんない?
シート名「シート1」、内容「A列=4桁のコード番号、B列=品名、全部で30項目」
シート名「コード表」、内容「A列=コード番号、B列=品名、C列=値段、全部で200項目」
みたいな感じで
>>398 テンプレートを使えば、新規のブックを立ち上げ、マイナスの数値(たとえば-1)を入力したら赤くなりますか?
みなさん、沢山の回答をありがとうございます。
>>409 今ヘルプで見てきたのですが、アクセスみたいなかんじにしていくのですかね。
データベースということで複数と複数なのですね、ちょっとじっくり読んでみます。
>>408 3行目の式の「c1:c200」のところを、23個の参照先として「c1:c23」にしてではなく?
今ちょっとやってみます;
すみません。 シート名「シート1」内容「100、と表示されるか空白かになるセルが一つ」 シート名「シート2」内容「A列=4桁のコード番号を受注に従って入力する、B列=品名、C列=値段、行は30行くらい」 シート名「シート3」内容「A列=4桁のコード番号を受注に従って入力する、B列=品名、C列=値段、行は30行くらい」 シート名「シート4」内容「A列=4桁のコード番号を受注に従って入力する、B列=品名、C列=値段、行は30行くらい」 シート名「CODE」内容「A列=4桁のコード、200行くらい、B列=品名、C列=単価」 シート2か3か4に「CODE」シート内の23件ある特定の番号と同じコードの受注が一件でもあれば「シート1」に「100」と表示される
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 それまでExcel97を使っていたのですが、Excel2010にしたら チェックボックスを使っているシートでセキュリティエラーが出て 編集不能になってしまいます xlsファイルのままで編集可能にする方法はないでしょうか?
>>390 です。皆さん、ありがとうございます。
>>408 さんのCOUNTIFでできました。
あとは、フォーマットなので、シート1,2,3,4内には、この式を持ってこれないので
別シートを後ろの方にたてて、そこで参照先(23件)から合致すれば「1」をたてる方法でやってみたいと
思います。もう、複数対複数しか頭になく、カウント関数での処理は思いもつきませんでした。。
お知恵を下さった皆様、ありがとうございました。データベース関数も、明日職場で見てみます。
飲み込みが悪いので、すっかり疲れてしまいました。教わった身ですみません。
もう寝ますね。皆様も夏ばて食中毒にはくれぐれもお気をつけてください。おやすみなさい
あ、シート1の100を表示したいセルだけには、こっそり式を入れます! ありがとうございました!!
>>411 テンプレート EXCEL 作り方
でぐぐって頑張れ。
多分、最初から用意はされてないから自分で作るしか無い。
>>414 開発、マクロのセキュリティ
で
・すべてのマクロを有効にする
>>415 乙
418 :
414 :2013/07/04(木) 00:46:35.27
419 :
名無しさん@そうだ選挙にいこう :2013/07/04(木) 01:16:29.61
イミディエイトウィンドウで selection.setphonetic を100万件に対して実行しおやすみなさい 明日の朝には終わってるかな? マシンスペックは 第2世代 Corei7 メモリ8G
>>419 自動計算等を切っててもフリーズすると思う。
余裕があるなら10万行ずつぐらいで区切ったほうがいいと思う。
特に、selectionなどは使わずにforeach、もしくはfornextで回したほうがいい。
やってみないとわからないけどね。
個人的に興味あるので、結果出たら教えてほしい。
>>419 俺なら念のため1000件の所要時間を測って全体の時間を予想する
もし5秒で終わったんなら100万件でも5000秒、1時間半で終わる計算
422 :
名無しさん@そうだ選挙にいこう :2013/07/04(木) 06:54:40.78
つーか、2時間も掛かったのかよ 第2世代Corei7の最底辺モデル? もしくはシステム腐って全体の動作が遅くなってる?
>>423 シート内容と環境によるっしょ
あと寝てる間にすますならコードの最適化も必要ないし
pen4なら部屋が熱くなるから早く済ませたいところだがなw
>>422 thx
>pen4なら部屋が熱くなる え゙ !?
>>425 実話。
と言っても後期のpen4はそれほどでもないのね。これは知らなかった。
しかし初期に出たpen4は冬に暖房いらなくなるんだぜ。
誇張でも何でもなくね。もちろん夏は死ぬ。
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 データ>入力規則>リスト>元の値「=INDIRECT(セル番号)」 当該セル番号を可変するセルにして、リストの内容も可変できるようにするという手法が Excel2010では使えるのですが、これはどの年代バージョンのExcelから使えるようになったものでしょうか? Excel2003やExcel97でも同じように、リスト>元の値「=INDIRECT(セル番号)」が使えますか?
>>426 最上位同士で比べたら、Pen4よりCore_i7の方が煖房能力優秀wだぞ
ただCore_i7の最上位(Extreme Edition)はCPUだけで10〜15万円と目茶苦茶高いから、
普通の人は縁がないだろうけどね
まあ、ある一定の処理を終らせるまでに発熱する量ということで見たら
Core_i7が100の発熱で1時間で終るところ、Pen4は90の発熱で2時間以上掛かるから
Pen4の方が最終的な発熱量は大きいってことになるが、例えば2chのトリップ検索のように
PCじゃ実質的に永遠に終らないような処理を同じ時間回すとと、Core_i7の方が発熱量は大きい
>>427 少なくともExcel2000からは使えるが、Excel95以前は確か入力規則自体が無かったと思う
その間のExcel97は、入力規則もINDIRECT関数もあるが、その手法が有効かは解らん
429 :
411 :2013/07/05(金) 11:22:11.40
>>417 テンプレート EXCEL 作り方でぐぐってテンプレートをつくりました。
新規ブックを立ち上げましたが、書式は何も反映されていません。
どこがダメなんでしょうか?
>>429 ホーム
↓
条件付き書式
↓
ルールの管理
↓
新規ルール
↓
数式を使用して、書式を設定するセルを決定
で、数式と書式を指定すると、オラの場合反映されるぞ。w
普通のユーザー書式(0;[赤]-0)でよくね? と思ったけど、今は何個でも設定できるし、わかりやすい+汎用的な条件付き書式のほうがいいのかな どっちがいいんだろう そろそろ統合してほしい機能ではあるな
質問者は新規ブックのデフォルトを変更したいと言っておるのだ
【1 OSの種類.】 Windows 7 【2 Excelのバージョン】 Excel2010 【3 VBAが使えるか.】はい 【4 VBAでの回答の可否】 可 いくつかの変数からなる100レコードや1000レコードのローデータを 複数のグループに可能な限り均等に分けたいです。 例えば男性70人、女性30人のデータがあったとして、これを5グループに分けたい場合、 各グループとも男性14人、女性6人の20人×5グループ。 さらにある変数の値がAの人が50、Bの人が50ならば男性女性の均等配分をなるべく維持したまま 各グループとも男性14人、女性6人、A10人、B10人の20人×5グループ。 ただし、当然ながらクロスを取れば男女とABの偏りがあるはずなので、 この例のようにぴったりな配分にはなりません。 均等配分したい変数は5つの時もあれば7つの時もあり、 分けたいグループ数も3の時もあれば6の時もあります。 全ての変数を完全に均等になるようにグループ分けすることは不可能でも、 各グループの総人数はきれいに分けて、その内訳の変数の値は 可能な限り均等に近い最適化された分類にしたいです。 Excelの機能である程度可能であれば教えて下さい。 なければVBAで組みますが、どういうアルゴリズムを組めばいいかが思いつきません。 よろしくお願いします。
>>396 ところで何を赤くするの?フォント?背景?罫線?ブック全体?
絶対的な解が定義できないものってのは パソコンの苦手分野 アルゴリズムに関しては、手動で分けるとしたら どうやったら効率良いかを考えて、それをコード化するだけの話だが 手動での解決法が見つからないようなものはどうにもならん
>>434 なるべく維持したまま、というのが難解。
・男と女にまず分ける。
・変数の値の重みの合計のランク順でわける。
(単純にランク順にした際、2チームなら奇数番目と偶数番目にする)
というぐらいしかおもいうかばない。
例えば球技のチーム分けと仮定して、
投力=1倍、走力=0.8倍、持久力0.6倍の重要度。
A 投=100点、走=80点、持=20点 → 重要度合いをかけて → 100+64+12の合計戦力176点 (一位)
B 同上、合計 123点 (四位
C 150点 (二位
D 141点 (三位
AD、BCがそれぞれ同じチーム・・・と言った感じ。
この重みづけや「できるだけ男女均等」の許容範囲などがわからないと、作れないな。
係数(重み)の判断がわかりかねるが、年令層や地域・趣味等が考えられるのか? それらで一度分類し、 ・男女の人数計(自動計算) ・グループの数(指定) のセルを参照して、切り盛りをランダムに決めてたらいかがかな?w
まず条件に使う変数で多重クロスを取って、各セルごとに集計結果をグループ数で割る。 次に均等にしたい項目の優先度を決める。 1.グループ1の1人目に割り振るレコードを全レコードから走査して決める。 2.グループ2の1人目に割り振るレコードを全レコードから走査して決める。 3.グループ3の1人目に割り振るレコードを全レコードから走査して決める。 4.グループ1の2人目に割り振るレコードを全レコードから走査して決める。 5.グループ2の2人目に割り振るレコードを全レコードから走査して決める。 6.グループ3の2人目に割り振るレコードを全レコードから走査して決める。 この際、優先度の高い変数から順に、集計結果/3の結果から外れないように という条件を判定して、もっともよく当てはまるレコードを選んで決めていく。 これを最後まで繰り返す。というのはどうか。 VBAで組むにもすごい面倒そうだし処理できるのかわからんけど。
別案 3グループだとしたらまず全レコードから条件に使われる変数が もっとも近似している3レコードを抜き出し、1〜3に割り振る。 次に残った全レコードからもっとも近似している3レコードを抜きだし以下略 これをレコードが無くなるまで繰り返す。 1〜3のどこに割り振るかは、すでに割り振った結果を随時集計しながら偏らないように。 どうだろう。
>>426 socket423なんて凄いことに・・・
こんなんExcelとか関係ないアルゴリズムの問題じゃん 数学板とか行った方がいいんじゃねえの? 一番難しくて面倒なことだし、気軽に聞かれてもなかなか答えなんか出んだろ まず平均値を計算して、目標(変数の値)と誤差を決めて、その範囲で解を探す 最初は誤差を0にして、解が無かったら誤差をちょっとずつ大きくする、みたいな方法になると思うけど ナップザック問題の変形ってところだな
445 :
名無しさん@そうだ選挙にいこう :2013/07/06(土) 01:19:02.69
Excel2007を使っています。 行の高さを広めに取りながらも、文字数(行数)が多い行は 自動調節する方法を探しています。入力しているデータは 下記のような英単語リストで、「英単語・日本語・注意事項」の 3つの項目があります。 go 行く come 来る run 走る 「経営する」という意味の場合もある … … このうち「注意事項」の項目は単語によっては記述が長くなるので 折り返して複数行で表示するようにしています。 ここで困っているのが、行の高さを数値で指定すると一番大きい ものに合わせれば間延びしてしまい、小さいものに合わせれば 折り返して複数行になっている行は切れてしまいます。 自動調節にすると上下がぎっちり詰まった感じになり、画面上や 印刷した時に見にくくなってしまいます。理想は「基本的に行の 高さは25(やや広め)とし、行数が複数行に及ぶものはすべて 表示される高さに自動調節する」という方法はありますでしょうか? ご存知の方がいらっしゃいましたら教えて頂けますようよろしく お願い致します。
>>445 4列目を用意して、そこに高さ調節用のデータを入れる
内容は3列目をそのままコピーして、フォントサイズを少し大きくする
447 :
445 :2013/07/06(土) 11:59:00.91
>>446 回答して頂きありがとうございます。
なるほど、そのような手があるんですね。
その方法でやってみようと思います。
448 :
448 ◆upmIvMVKO6 :2013/07/08(月) 16:59:46.68
【1 OSの種類 .】 WindowsXP・7
【2 Excelのバージョン 】 Excel2007・2010・2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 可
宜しくお願いします。
シフト表みたいな感じなのですが、文面だと表現が難しいので、
サンプルをつくりましたので恐縮ながら見ていただきますと幸いです。
sample.xls(マクロなし・ウィルスチェック済です)
ttp://www.dotup.org/uploda/www.dotup.org4323553.xls.html <やりたいこと>
「黄色部分」に重複しないように値(くだもの)を取り出したいと思います。
時間軸(色ごとセル)とその他のくだもの(横軸)が重複した場合は、
赤文字で表示できるようにしたいです。
関数もしはくVBAの記述が可能でしたらご指導のほどお願い致します。
>>448 J4 =LOOKUP("or(a,b,c,d,e)",B4:F4,B$3:F$3)
450 :
449 :2013/07/08(月) 18:57:21.55
>>448 >>449 に文字色変更に関する追加作業
J4選択→条件付き書式→数式を用いた書式設定→ 以下数式入力↓
=COUNTBLANK(B4:F4)<4
文字色(フォントカラー)赤色を設定→OK
その後はJ4から下方向へコピペしてください
>>449-450 様
ありがとうございます。願ったやり方になりました^^。
<(_ _)>
452 :
448 ◆upmIvMVKO6 :2013/07/09(火) 14:36:53.56
追伸すみません、A〜Oまでは反応するのですが、P以降のアルファベットを入れると 反応しなくなります。 この場合はどうしたらいいでしょうか?
>>452 独特の言葉が混じっていてよくわからないので、
またシートを上げていただけるとお互い助かると思います
連投すみません、シフト表欄にアルファベット(a〜z)を入れていくのですが、 a〜oまで反応があるのですが、p以降を入れると反応しなくなってしまいます。 宜しくお願い致します<(_ _)>
>>455 希望とする出力、つまり
・どのセルに何を入れると
・どのセルがどう変わるのか
現状の問題点、希望とする出力とどう違うのか
・どのセルに何を入れると
・どのセルがどう変わるのか
この四点が全てわからない。
とりあえずB4:F15にテキトーに文字を入れてみたけど、何も変わらず
>>456 すみません、ありがとうございます。
C4にaといれるとR4の値が関数のとおり「りんご」に変わりますが、
C4にpを入れるとR4が変わらなくなります(空欄になります)。
aからoまでのアルファベットは反応をしますが、pからzに反応しない(空欄)となります。
LOOKUPの検索値の記述が間違っているのでしょうか?
>>457 R4には数式も値も入ってないよ
あとlookupで検索したけどlookupはどのセルにも入ってない
460 :
459 :2013/07/09(火) 16:18:22.72
あ、ok。見直すわ
>>452 一応思考錯誤してみた
O4 =IF(ISERROR(LOOKUP("Z",C4:I4,C$3:I$3)),"",LOOKUP("Z",C4:I4,C$3:I$3))
>>461 >>463 ありがとうございます。
>>463 さんの方法で解決しました^^
しかし、原因がよくわかりませんです・・・><;
検索値の問題?となるのでしょうか・・何かもっと別な方法があるのでしょうか・・
スレ汚し失礼致しました<(_ _I>
1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 ある日付(2013/7/9など)に最も直近の過去の年度末(この場合2013/3/31)を返す式はなんと入力すればよいでしょうか? 2013/3/31〜2100/3/31を入力した列をindexで参照させて…などとやってもうまくいきません よろしくお願いします
A列に日付として B1:=IF(A1<DATE(YEAR(A1),3,31),DATE(YEAR(A1)-1,3,31),DATE(YEAR(A1),3,31)) 下にコピー
=DATE(YEAR(A1)-(MONTH(A1)<4),3,31)
469 :
名無しさん@そうだ選挙にいこう :2013/07/10(水) 01:06:47.34
【1 OSの種類 .】 Windows XP 【2 Excelのバージョン 】 Excel2000 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 エクセルの表示について教えて下さい。 ツールをクリックすると、全ての項目は表示されずに一部の項目のみ表示 されると思いますが、その中に表示されてる項目を表示されないようにし たいのです。 ツールをクリックすると、「変更履歴の作成」と一番上に表示されます。 これを表示されないようにするには、どのようにすれば良いでしょうか? よろしくお願いします。
用事終わったら解決してた。
>>464 予期しない動作じゃなくてヘルプ通りの動作だった、スマン
検索値は"or()"という「文字列」。ほとんど"o"という文字で検索したのと変わらんね
or()という関数や命令ではなく、文字列なんだ。
そして、それをlookup関数の仕様通りに実現したのが>463
(恐らく文字コードでの検索値未満の数を検索している)
わからないなら、
>>463 の通りに式を作り、実行するといいと思う。
>>469 残念ながら、excel2kはフルすぎる。回答者も少ない。しばし、待て
>>469 表示しないというのが、項目を削除するということなら
メニューバーで右クリックして「ユーザー設定」のダイアログを出した状態で
メニューから削除したい項目を右クリックして削除
ユーザー設定のオプションで「常に全てのメニューを表示する」のチェックを外し
メニュー下の下向き≫をクリックする前から常に表示する項目と、クリック後のみ表示する項目を
任意で設定したいということなら、その設定機能は無いので諦めよう
>>470 ありがとうございます。
勉強になりました。
or() のoが検索値(アルファベットで最終)となっていたわけですね^^;
なのでpを入れても反応がなかった。
474 :
名無しさん@そうだ選挙にいこう :2013/07/11(木) 02:12:08.66
>>472 回答ありがとうございます。
やってみたところできませんでした。
ユーザー設定のダイアログを出し、コマンドというタブを選択
(メニューというタブは存在なし)して、左側の「分類」の中にある、
ツールを選択。
「変更履歴の作成」という項目はなく、「変更箇所の表示」という
ものがありました。その上で右クリックすると、「説明の表示(W)」
が表示されます。
右クリックで削除することができません。それは他の項目も同じで、
どの項目を右クリックしても、「説明の表示(W)」しか表示されま
せん。
やり方が間違っているでしょうか?もしそうならご指摘頂けると幸
いです。よろしくお願い致します。
>>474 傍目で見ると日本語読解力の不足か。
>>472 曰く
>メニューバーで右クリックして「ユーザー設定」のダイアログを出した状態で
>メニューから削除したい項目を右クリックして削除
どこにもユーザー設定のダイアログをクリックしろとは書いてない。
強いて文言修正するなら、
>メニューバーを右クリックして「ユーザー設定」のダイアログを出した状態で
>メニューバーのの削除したい項目を右クリックして「削除」(元に戻すには「リセット」)
お礼するなら
>>472 に言ってくれ。
476 :
名無しさん@そうだ選挙にいこう :2013/07/11(木) 21:57:04.52
>>475 削除できました。
ありがとうございました。
>>傍目で見ると日本語読解力の不足か。
そうかも知れません(笑)
D:\DATAに複数のブックを入れ、menu.xlsmにマクロを書きます。 menu.xlsmのB列にブック名、C列にシート名を書き、 オートフィルタでシート名を抽出した後にマクロを実行して 該当のブックを開きます。 Sub test1() フォルダ名 = "D:\DATA" シート名 = Range("C1048576").End(xlUp) ブック名 = Range("C1048576").End(xlUp).Offset(0, -1) Workbooks.Open Filename:=フォルダ名 & "\" & ブック名 Worksheets(シート名).Select End Sub
ひでぇw なんじゃこりゃ?
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 6種のキーワードを6行分ほどFINDして、FIND結果のフラグを表示するよう関数を組んだら 「FIND対象の行」のどこか1行に入力しようとしただけで1秒くらい待たされる重いものになってしまいました 代替案はないでしょうか =IF(AND(ISERROR(FIND(CM120,C100)),ISERROR(FIND(CM120,C102)),ISERROR(FIND(CM120,C104)),ISERROR(FIND(CM120,C106)),ISERROR(FIND(CM120,C108)),ISERROR(FIND(CM120,C110))),0,CO120) C100から1行おきに6行FINDしています。検索キーワードがCM120(他計3箇所)に格納してあり、CO120がどれか1行でもFIND成功時の結果フラグが隠してあります。 CM120から6行ほど(いずれも日本語数文字)に6種のキーワードで、1セルに付き上の式が1つ、6セルです。別のセルでその6セルのSUMを出して、検索ヒットかどうかを判定してます。 その式で、C100からC110のどこかに入力をしようとすると、1秒くらい待たされます。
481 :
480 :2013/07/15(月) 12:30:35.41
ちなみに検索語句によって、フラグの数値が変わるので、 CO120(CO120から6行)は変更できません。 (TRUEかFALSE(ERROR)、0か1かってことにするような変更は出来ません)
2007で未と打ったセルをドラッグでオートフィルしたら甲と続いてマジびびった 済に対しての未だったんだがw そのくせ明治とか大正とか打ってドラッグしても同じ値のままなのな あと干支(壬午とか戊申とか)でも駄目だった
↑甲じゃなくて申の間違いだった 十二支(子丑寅卯辰巳午未申酉戌亥)と 十干(甲乙丙丁戊己庚辛壬癸)はそれぞれいけるけど 混ぜると駄目だね
>>480 入力したセル全部選択してDel。
スッキリするよ
>>480 先に文字列を結合させれば一回のfindで済む。多分こっちのほうが軽い
find(cm120,c100&c102&104&106)
あとは多分ブックが重くなってるので作り直したほうがいい気もする。
作り直しと言ってもコピーするだけ
シートへの入力は右方向につかわずに出来るだけ下方向へ使う方が重くならないらしいよ だからレイアウト自体も出来れば見直した方が良いね
487 :
名無しさん :2013/07/15(月) 21:06:43.75
【1 OSの種類 .】 Windows8 【2 Excelのバージョン 】 Excel2013 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 EXCELとBASE64について質問です とある英字をBASE64で変換した結果が次のようになったとします。 「VGl0ZWNo」(Gの次は小文字のL、Lの次はゼロ。最後は小文字のO) この英字を、逆変換(EXCELを用いて)して、元の文字を求めるにはどうればいいか? 答えとやり方を教えてください
488 :
名無しさん@そうだ選挙にいこう :2013/07/15(月) 21:28:46.25
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 よろしくおながいします なんかヘンなデータもらっちまって困りますた 助けてください 材料をいつ、だれが、何を、どれくらい買ったのか、のファイルなんですが、 CSVファイルを変換しないでエクセルにベタコピー?したのか、 セルひとつに空白で区切られたデータが何個も入ってます なぜか日付や購入者名はセルひとつずつに収まってるんですが 材料名が、 ネジ4個 防水シールド1個 ガスケット1個 脚立1台 蛍光灯10W1本 みたいに、ひとつのセルの中にに空白で区切られながらまとまって入ってます これを、セル1個につき材料名1個みたいにバラしたいのですが、 何の関数使ったらいいんでしょうか 作業列の用意はできます でも、 あとで材料ごとにどれくらい買ってるかを集計しなくちゃならんのですが、 (vlookupを使うつもりでいますた) ここはバラさない方がいいでしょうか なんかとにかく見づらいヘンなデータで・・・
>>487 Excel不要
答え・・・ Titech
やり方・・・BASE64 変換 で検索→それ用サイト発見
>>488 1セル1材料化 ・・・ データ→区切り位置
材料ごと集計 ・・・ COUNTIF関数
490 :
487 :2013/07/15(月) 21:51:27.28
>>489 すいません、Excelを用いて16進法とかコード表照らし合わせてやるやり方を教えて欲しいです。
ピボットテーブルで
492 :
488 :2013/07/15(月) 22:04:04.29
>>489 その手があったあぁぁぁぁ
どうもありがとうございますた!
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel97 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 入力規則リストですが、255文字の文字制限があります 別ワークシートや非表示セル(同シートの表示セルはもってのほか)を 使うなという指定がある状態で 入力規則のリストだけで400文字分のリストを作らなければいけません どうにかして、入力規則リスト同士を結合するとか、入力規則リストから INDIRECTっぽいもので更なる入力規則を呼ぶなどの方法はないでしょうか?
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 多少は 【4 VBAでの回答の可否】 可 Excelを開いたときにWindowsのタスクバーの表示で単体だと 「Microsoft Excel - ファイル名」となり、複数開くと 「ファイル名」になります。 これを、常に「ファイル名」だけにしたいのですが、何か方法はないでしょうか?
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 下の図で、 ■に数字などを入力すると ◆のセルにも同じものが入力されるようにする方法はありますか? 一発でできないとしても、より簡単にする方法があれば教えて頂きたいです よろしくお願いします ■□◆□◆□◆…… □◆□◆□◆□ ◆□◆□◆□◆ □◆□◆□◆□ : :
>>497 A3,B2へ以下の式を入力
=IF($A$1="","",$A$1)
↓
A2:B3を選択し下方向へコピペ
↓
そのまま右方向へコピペ
↓
B3から右方向任意のセルをコピーしB1へペースト(貼り付け)
以降A1入力すればご希望のようになります
499 :
498 :2013/07/16(火) 08:38:16.38
>>497 第2案(式の軽量化=シートの軽量化案)
A3,B2,C1へ以下の式を入力
=IF(A1="","",A1)
↓
B1:C1を選択し右方向へコピペ
↓
A2:B3を選択し下方向へコピペ
↓
そのまま右方向へコピペ
>>497 Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Application.ScreenUpdating = False
If Target.Address = "$A$1" Then
w = Range("A1").Text
For i = 4 To 200 Step 2
For j = 1 To i - 1
Cells(i - j, j) = w
Next j, i
End If
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2000 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 MIN(INDEX((A2:A10=A1)*B2:B10,)) とやったときに「A2:A10」の中で「A1」と同じ列の「B2:B10」を参照して最小を返す というものを作りたいのです。(「A2:A10」には複数の「A1」の数値がある) マイナス値で一番大きいものはちゃんと表示されるのですが、 参照先の数値がプラス"のみ”になったときには数値が「0」になってしまいます。 どのような状態でも最小値を返したいのですが、どのようにすればよろしいですか。 ご教授ください。
502 :
501 :2013/07/16(火) 11:41:33.92
>>501 すみません追記ですが、「A2:A10」「B2:B10」ともに昇順ではなく、ランダムです。
>>498 ,499,500
お三方、有難うございます!
初歩的な質問で大変恐縮ですが
>>500 がVBAというやつですか?
excel使い始めたばかりなもので…
後学のために教えて頂けたらと思います
よろしくお願いします
504 :
名無しさん@そうだ選挙にいこう :2013/07/16(火) 19:24:34.42
質問です。 CSVファイルの中にある電話番号等(最初に「0」 がある数字列)が、数字項目として認識され、 ファイルを開くとリーディング0がなくなります。 CSVファイルを開く時、全ての項目を文字列として認識させるようにするには、 どうすれば良いのでしょうか?
>>504 拡張子をtxtに変更
テキストを読み込む際のウィザードでカンマ区切りを選択
データの先頭が0の列を文字列に変更
【1 OSの種類 .】 Windows8 【2 Excelのバージョン 】 Excel2013 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 基本的なことだと思いますが、Excelでセルに001と入力したいんですが、実際に入力してEnterをおすと「1」のみの表示になってしまいます どうしたら「001」と表示できますか?
>>506 1、書式設定→表示形式をユーザー定義→「000」に
2、表示形式を文字列に→関数に組み込む時VALUE関数で数値にするか*1
509 :
名無しさん@そうだ選挙にいこう :2013/07/16(火) 22:27:10.02
【1 OSの種類 .】 Windows8 【2 Excelのバージョン 】 Excel2013 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 Excelの関数の =CODE() の逆の関数はなんですか?教えてください
【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
<やりたいこと>
商品1(B列)は0〜4個、商品2(C列)は0〜3個、商品3(D列)は0〜2個を、図の様に繰り返したいです。
図では商品は3種類、個数は最大4個ですが、実際は商品は約10種類、個数は最大50個あります。
VBAのFOR/NEXTを利用してできないかなと。
ttp://www.dotup.org/uploda/www.dotup.org4343273.jpg
511 :
名無しさん@そうだ選挙にいこう :2013/07/16(火) 22:53:00.03
>>506 イ、書式設定→表示形式を文字列へ
ロ、001の前に"'"を付けて'001と入力
【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 え゙?
>>510 sqlの外部結合だっけ?なんかあったな。忘れた。
何とか結合がそのままそのテーブルになるはず。テーブルを頑張るといいと思う
fornextなら、うーん、なんだろう。俺なら作業列を作ってテキトーにカウントするけど
ねむたい
>>513 コードだけ貼って失せろってことだろ言わせんな。
>>514 なるほど…
とても勉強になりました
ありがとうございます!
518 :
504 :2013/07/17(水) 09:14:01.78
【1 OSの種類 .】 Windows2000 【2 Excelのバージョン 】 Excel97 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 入力規則>リスト>セルの範囲を指定してリストを作ったのですが、例えばA5〜A21をリスト範囲にした時に、 A19とA17に空白があった場合、2つ空白が表示されてしまいます。 VBAを使わずにこの空白を詰める方法はないでしょうか?
>>519 B5=IF(A5="","",MAX($B$1:B4)+1)
C5=INDEX(A5:A21,MATCH(ROW()-4,B5:B21,0))
C5:C21をリストに設定
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 お疲れ様です 条件分岐の流れを、VBAが扱えない人が拡張できるように作ることはできないでしょうか? コンボボックス1で『やさい』を選んだら、コンボボックス2は『キュウリ』『キャベツ』等を選べれる これはVBAがわかる人なら、if文で簡単です これにVBAがわからない人が コンボボックス1で『さかな』を選んだら、コンボボックス2は『あああイワシ』『サバ』等を選べれる を追加できるようにしたいのです 簡単な方法はないでしょうか?
523 :
519 :2013/07/17(水) 21:44:46.56
>>520 ありがとうございます。
ためしてみます。
結果がすぐにわかるハズなのに、なんで「ためしてみます」って書くのかね。 もしかして、理解できなかったのかな?
>>524 結果を見て褒めて欲しいのか?(´ー`)y−〜〜
どういう教育受けたら「選べれる」なんて言葉が出てくるのかね
電車の中でスマホで2ちゃんを見てるんだよ
>>526 外国の人かも知れないし
小学生かも知れないだろ
些細なことばかり気にかけて
今自分のやるべきことが見えないようじゃ
立派な大人になれんぞ
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 否 OSの地域の設定で並べ替え順を部首順にすると 通貨設定ボタンのドロップダウンリストから米ドルが消えてしまいます。 復活する方法はないでしょうか?
531 :
529 :2013/07/18(木) 20:48:40.27
>>530 レスありがとうございます。が、上が違います。
下の部分を変えたら、リボン上にある通貨アイコンの▼を
クリックしてみてください。OSの再起動は不要です。
532 :
510 :2013/07/18(木) 21:39:50.11
>>516 こんな感じでなんとかならないかと思ったのですが…
アドバイスTHX。がんばってみる
bmin=0, bmax=4, cmin=0, cmax=3, dmin=0, dmax=2
for b=bmin to bmax
for c=bmin to cmax
for d=bmin to dmax
……
next
next
next
535 :
529 :2013/07/19(金) 03:40:21.79
>>533 それです。そこに$を復活させたいというのが今回の相談事です。
>>534 ムリですかね。
ひと手間かけて書式設定ダイアログを出せばよいというのはおっしゃる通りです。
▼━質問テンプレ (必ず使ってね) ━━━ 【1 OSの種類 .】 Windows XP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可(簡単な説明をつけていただければなお幸いです) 「ファイルを開く」ダイアログボックスを表示し、選択したエクセルファイルの指定したセル領域(範囲は固定、事前に指定済み)だけを抜き出してコピーするマクロを作成したいと思っています。 アドバイスのほどよろしくお願いいたします。
>>537 ありがとうございます。
しかし、例えばvntFileNameに参照先ファイルパスが入っている場合
そのファイルのC4-C5領域を、読み出し元ファイルのD1-D2にコピーする方法が分かりません。
簡単な問題かもしれませんがアドバイスをいただけると助かります。
>>538 Sub Sample1()
x = ActiveWorkbook.Name
Dim g
g = ActiveWorkbook.Path
Workbooks.Open g & "/b.xlsm"
Workbooks(x).Worksheets(1).Cells(1, 1) = _
Workbooks("b.xlsm").Sheets(1).Cells(1, 1)
End Sub
こんあ感じ
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel97 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 EXCELは非表示/再表示でセルをまとめて隠すことが出来ますが 隠されたセルに更にもう1段階見えなくするセキュリティを施したいと考えています なにか動作が軽くて手っ取り早くセルを纏めて1000〜5000セルくらい隠せる方法はないでしょうか? (表示中のセルからその非表示セルを必要な時だけ参照できる事が前提で) 現在非表示状態の上にさらに全セルに条件式を入れて本当に必要な時しか セル内の項目が現れないようにしてるんですが (それでもカーソルをあわせれば式の中に個々のデータが見えてしまいますが 非表示になっている「参照するための表」の全体が見えなければ問題ないです) それだとどうしても非表示項目が増えるたびに余計な手間がかかる上に 動作が重くなってしまって困っています VBAを使うと「このシートはマクロを使っています。ウイルスの危険性があります」といった風なエラーが出て 自分だけ警告設定をOFFにすればいいのですが他の人が使うときは当然エラーが出てしまって都合が悪いので VBAなしで非表示よりもう一段階上のセキュリティをかける方法があればご教示下さい
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 勉強中 【4 VBAでの回答の可否】否 A2〜l6を罫線で囲んでその外枠を太罫線で囲みたい場合は Sub test() With Range("a2:l6").Borders _ .LineStyle = xlContinuous End With Range("a2:l6").BorderAround Weight:=xlThick end sub では正しく引けません、これはどうやったらいいですか
>>541 Sub test()
With Range("A2:L6")
.BorderAround LineStyle:=xlContinuous, Weight:=xlThick
End With
End Sub
まずはコピペを覚えような
>>540 非表示セルが簡単に再指示できてしまうのが嫌なのか?
それならシートの保護でなんとかなると思う。必要ならパスワード付で。
(または別シートにデータを移してそのシートを非表示にしてブック保護)
さすがにExcel97は忘却の彼方だな。
このあたりは変わっていないだろう・・・と思うが、Excel97は現在より保護できる項目が少なかったはず
またパスワード処理も現在のExcelより甘々の玩具だった。
544 :
540 :2013/07/20(土) 14:22:20.35
え゙? 543の回答で解決したの?www
一番左のシートの セルA1 に 「左から2番目のシートのセルA1の数値」と「左から3番目のシートのセルA1の数値」の差を入れる記述は出来ますか? シート名が固定なら ='シート2'!A1-'シート3'!A1 のように出来ると思いますが、 例えばシート名を日付にしてシートを追加・削除したりして、左から2番目と3番目のシートが頻繁に変わる場合どのようにすれば良いかお願いします。
>>546 VBAを使えばSheets(2)、Sheets(3)のように名前関係なく並んでる順番で書ける
548 :
546 :2013/07/21(日) 10:28:39.64
>>547 ありがとうございます。
質問テンプレ使うの忘れてました(^^;
VBA一応使えますが、使わずできるかなと質問してみました。
あげ
最初からそれを書かないから望む回答が得られない 次からは気をつけよう、そしてさようなら
>>546 indirect関数を使えばいいよ
20130721ってシートなら
=INDIRECT(TEXT(TODAY(),"yyyymmdd")&"!r1c1",0)
でok
もしくは、エクセル くしざし計算 でぐぐって見て
Excelのシートを大量に増やす場合 関数が快適に動くのは何枚ぐらいまでとかあったりしますでしょうか? 関数は単純な合計や平均値程度ですセルも200列行以内です。
>>552 式の内容やマシンのスペックによって大幅に変わるので「自分のマシンでやってみないとわからない」
>>552 PCの性能に依存するし、バージョンにもよるのでそれだけだとなんとも言えない。
作ってみたら確実だと思う。
シートタブをshiftキー押しながら範囲選択で選んで、ctrlで移動させると一気に複製できる。
555 :
552 :2013/07/21(日) 15:39:22.15
>>553 >>554 ありがとうございます
>シートタブをshiftキー押しながら範囲選択で選んで、ctrlで移動させると一気に複製できる。
これは楽ちんですね。ありがとうございました。
556 :
名無しさん@そうだ選挙にいこう :2013/07/21(日) 22:47:21.68
教えてください。 セルのA1からA100まで、先月来店したお客様のID(数字)が並んでいます。 そした、 セルのB1からB100まで、今月来店したお客様のお客様ID(数字)が並んでいます。 この両月のIDを突き合わせて、差分のID(先月来店して今月来なかったお客様を調べるなど)を抽出したいのですが、どうすれば良いですか? vlookup?を使えば抽出できると聞いたことがありますが、やり方が全く分からず困っています。 明日までにやらなければならないんですが、全く作業が進みません。 どうか上記の関数式の記述までお願いしたく。 どうぞよろしくお願いいたします!!!
>>556 C1に次の式を入れる
=IF(ISERROR(VLOOKUP(A1,B:B,1,FALSE)),"先月だけ","両方")
D1に次の式を入れる
=IF(ISERROR(VLOOKUP(B1,A:A,1,FALSE)),"今月だけ","両方")
C1〜D1をコピーしてC2〜D100へ貼り付け
559 :
名無しさん@そうだ選挙にいこう :2013/07/21(日) 23:10:19.44
>>557 >>558 神様ありがとうございます!!!
救われました(泣)
スレチ恐縮ながら、もう一つ教えてほしいんですが、Accessって簡単に言うとどういうものですか?
どんなことができるツールなのでしょうか?
具体例あれば、簡単にで構いませんのでご教示ください。
よろしくお願いいたします。の
>>559 データベースを扱うソフト。Excelのデータ集積や表計算に近いけど
表の見かけなどが分離されていて、より純粋にデータとしてまとめる
サーバ用のSQLやSSHを知っているなら理解しやすいかと
>>559 見た目は似てるけど、全然違うんだよなぁ
無料ならオープンオフィスのbaseを触ってみると、良い
accsessはやや特殊らしいので、この差は知らん
【1 OSの種類 .】 Windows7(&XP) 【2 Excelのバージョン 】 Excel2010(&2000) 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 こちらでWindows7+Excel2010で編集不能になるように保護したセルは 先方の使っているWindowsXP+Excel2000でも保護が動作するでしょうか? こちらの作ったシートに対して先方が何も言って来ないので、 間違って編集不能項目を弄ってしまっていないか、 そもそもちゃんとファイルが読み込めているのかが不安です。 もし動作しないなら ・.xlsで保存したにも拘らずExcel2000でシート自体が読み込めないのか? 読み込めはするが保護だけが効かないのか? あるいは別の不具合か? ・Excel2010で保護設定しつつ、2000でも同様の動作をさせる方法はないか? を教えて下さい。よろしくお願いします。
先方とやらと同じ環境を用意するなり、先方に出向くなりしろよ 仕事なんだからそれくらいやれ、甘えんな ここで嘘教えられて真に受けて損害被ってもしらんぞ?
むしろ先方にWin7か8に買い換えろって言えよw
「先方」とさえ書かなければw
>>562 そもそも2000以前の保護と2002以降の保護は仕様が違うため2010で保護されたファイルは2000では一切読み込めない
読み込めるようにするには保護を外すしかない保護したままで2000でも開けるようにと言うなら無理
>>565 個人なら断れば良いだけの事、MSがサポート切ったソフトの面倒なんてお断りだ
だから何?
>>569 みたいのを「ゆとり脳」って言うんだな・・・
実在するとは思っても見なかった
相手に根拠無くレッテル貼りすることでしか 自分の立ち位置や存在意義を確立できない子
私の赤ちゃんはどこー?
【1 OSの種類 .】 Windows7(&XP) 【2 Excelのバージョン 】 Excel2010(&2000) 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 複数のエクセルファイルからデータ取得するために ExecuteExcel4Macroを使ったのですが ローカルで使っていた分には早かったのですが ネットワーク上で使ったらうんこみたいに遅くなりました 普通にブックを開いてデータ取得をしようとしたら、 一部のブックでデータがどこか破損しているのか、エラーが出てしまうので ExecuteExcel4Macroで取得したいのですが、解決の方法はありますか?
>>574 原因は多すぎてどれか分からん
ネットワーク vba 遅い
でぐぐって調べてみて
俺の時はtempファイルが大きすぎてスワップしていた
もしかするとカレントフォルダをローカルに移せば解決するかも知れない
なんにしろ、ローカルで使うほうがいいと思う
>>574 可能なら、まずファイルをローカルにコピーしてから開く
>>575 >>576 対象をローカルに移したら早くなるのですが、
色んなPCから使用可能にしなければいけないので、
ネットワーク上じゃないとダメなんですorz
一時的にファイルをローカルにってのも考えたんですが、
あまりローカルのPCを触る方向にはしたくなくてですね。
使用するのが僕だけならいいのですが。。。
とりあえずexcel4がネットワーク上でデータ取得しようとしたら遅い
しか今わかってないですorz
素人過ぎてすんませんorz
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 いいえ 所得区分別に所得税額を計算する表を作成したのですが、 それを従業員の所得一覧表に自動的に当てはめて、 従業員それぞれの税額を自動的に算出したいのです。 所得税額の計算表を関数みたいにして、従業員の所得一覧表の中で 呼び出す方法はありますでしょうか。
579です。早速の回答ありがとうございます。こちらの説明が不十分でした。 計算表は、所得金額を入れると税額が計算される仕組みになっています。 ゾーンによって、税額が決まるわけでないので、固定値を返す、Vlookupは使えないように思います。
ん、ごめん、酔っ払ってていまいちイメージが出来ないw 複数の表、税区分か。それがあるなら、vlookupで出したものを足せばいいと思ったけど、 なにか違うのかな できればシートごとアップしてもらえると助かります。
>従業員それぞれの税額を自動的に算出したいのです。 >計算表は、所得金額を入れると税額が計算される仕組みになっています。 既にそうなっているならそれでいいと思う。
USD 月次課税所得 税率 月額給与 1,300.00 0 〜 500万ドン以下 5% 基礎控除 428.6 500万ドン超 1000万ドン以下 10% 課税所得 871.4 1000万ドン超 1800万ドン以下 15% 所得税 95.7 1800万ドン超 3200万ドン以下 20% 3200万ドン超 5200万ドン以下 25% 5200万ドン超 8000万ドン以下 30% 8000万ドン超 35% シートは直接アップできなくてすみません。表のイメージは、上記の感じです。 月額給与のところに数字を入れると、所得税が自動計算されます。 月額給与を所得一覧表の数字にそれぞれ置き換えて、所得税を計算したいのです。
>>584 ・最初に聞くけど、ドンってドル?
それとも万を生かして万円??
・あと、所得税の出し方がよくわからない。
累進課税?
なら500*5%で25、371.4*10%の37.1 を足して62.1だと思うけど違うかな。
・それと基礎控除って固定?その都度入力?
3つ教えてくれたら作ってあげる
>585 ありがとうございます。 ドンはベトナムドンです。USDベースで給与、税金を計算します。 (1USD=21000ベトナムドンです。) 所得税は累進課税です。基礎控除428.6USDを引いた金額をベトナムドン標記 になおしたものに、累進課税されます。 基礎控除は固定です。 たすかります。ぜひお手本にさせてください。
>587 ありがとうございます。 ポイントは、税額計算のロジックよりも、税額を計算するルーチン(すでに表も含めて計算式として出来上がっている部分)を 所得一覧表の中に、うめこむところになりますので、そこを教えていただければありがたいです。
590 :
名無しさん@そうだ選挙にいこう :2013/07/23(火) 19:19:14.34
>589 大丈夫です。
うーん、ひどいのしかできそうにない。 他の回答者も、できそうならお願いします。
いや最終的に 給料 税金 支払額 やまもと わたなべ さとう で、累進課税はドンでの計算、 最終額ドル建て の表がほしいんだよね?
>593 はい、そのとおりです。 表に税額計算のロジックを埋め込みたいのです。 >みなさま、 ありがとうございます。 HCMより感謝しております。
595 :
591 :2013/07/23(火) 19:44:15.27
>>593 なるほど。であれば、個人事に横に1次元で税率表を置いて同じ事をするだけだね
>591 なるほど、そういう手もありますね。 一つの税率表を関数的に呼び出せる方法はマクロをつかわないと難しいのでしょうか。
>>596 配列定数があるが・・・やめたほうがいい
くっそだれも作らなかったか。誰かやれよw
>>584 http://www.dotup.org/uploda/www.dotup.org4360999.xlsx.html まぁ、これ
最適化も何もしてないが怒るな
簡単に説明すると、まず10,11行目に税率の表を置く
変な色のセルに入力する
で、H1にレートを入れる
Q列にドン換算がわたって
R-X列でどん換算の税金計算
おそらくこれは見にくいだろうし、ここを覚えたいのだろうけど、エクセルだとこれが限界。
VBAならもっとスッキリ行くだろう。
この部分を頑張って作ろうと思うとマジでしんどいので、放置
で、それを最後にP列でsumして、K列で受け取る
最後に引き算して、L列に結果が表示されるというわけだな
アホすぎwarotaw
まぁVBAでやっても内部的に同じ処理をするだけなので、処理自体は変わらん
別シートといったが、アレは嘘だ 全部seet2にまとめた。 飽きたからな
600 :
591 :2013/07/23(火) 20:51:36.97
601 :
596 :2013/07/24(水) 10:44:51.87
おはようございます。 税率表について、お尋ねしたものです。 今回のようなケースであれば、一行づつ税率を埋め込んだ方が 結果的に早そうですね。 いろいろと案をいただきましてありがとうございました。
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2023 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 ハイパーリンクを押すとエラー表示されます 「このコンピュータに設定されている制約のため、この操作は中止されました。システム管理者に問い合わせてください。」 ネットで調べた所 ・プログラムのアクセスとコンピューターの既定の設定→カスタム→Internet Explorer 選択 ・インターネットオプション→詳細設定→リセット などのやり方は書いてありましたがそれでも解決しませんでした 上記解決方法とは違う解決方法はありますか?
すごい 未来のエクセルだ
【1 OSの種類 .】 Windows XP 【2 Excelのバージョン 】 Excel 2003 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 例えば、列A・列Bにそれぞれ AAAA 1 BBBB 3 AAAA -2 CCCC 4 CCCC 5 : とある場合、 AAAA -1 BBBB 3 CCCC 9 : のように、グループ表示(列Aは同じ名前でまとめて、列Bの数値は各グループの合計)と、 最初の個別表示をボタンなどを使いワンタッチで「交互に切り換え表示」する事は可能でしょうか?
>>605 可能。
ラジオボタンにでも登録する
結構めんどくさいので詰まったらまた聞きに来て
WindowsXPとEXCEL2002を使っています エクセルで複数ファイルを開いているとき、 タスクバーでファイルを切り替えようとしても 1回のクリックでファイルが切り替わりません。 2回クリックすると切り替わります。 1回のクリックで切り替わるようにしたいのですが どうしたらよいでしょうか
>>607 タスクバーのプロパティでグループ化を解除
>>605 シート1を上のような元データ
シート2を下のような集計にすれば良いだけでは?
あとはシートタブという名のボタンを押せば切り替わる
まあVBA使ってトグルボタン(チェックボックス)でやるにしても
A:Bに元データ、C:Dに集計を用意して
A:B表示&C:D非表示 <-> A:B非表示&C:D表示
を切り替えてやるだけだから簡単だがな
>>608 駄目でした。
どうも、エクセルは タスクバー上でツールチップが出ていると
クリックしてもウィンドウが切り替わらないバグがあるようです。
マイクロソフトにバグ報告してみます。
611 :
605 :2013/07/25(木) 14:50:14.44
>>606 >>609 ヒントありがとうございます。
実際は列C以降にもデータがあって複雑な表になっているので、参考にして色々やってみます。
どうもでした!
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 VBAなしで、特定範囲のセルがどれか一つでもNullではないと判別させる方法はないでしょうか? 判定式式をA1に入れるとして、A2〜C12までを検査して、全部NullならA1に0 どれか一つでも何か代入されているならA1に1を返す式が作りたいです
>>612 =(COUNTIF(A2:C12,"")<33)*1
>>613 ありがとうございます!
COUNTIFはいつも使ってるのに、度忘れしていました(´・ω・`)ショボーン
こうか =(COUNTBLANK(A2:C12)<>33)*1
>>615-616 COUNTBLANKだと「計算の結果ブランクになったセル」が入力済みセルとカウントされるので、通常はCOUNTIFのほうがいい
まあ、
>>612 が「計算の結果のブランク」もブランクとしたいか、「完全なブランクのみ」をブランクとしたいかだな
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2013 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 初めて質問させて頂きます。 最近会社のパソコンが変わりまして、 上記のOS、Excelのバージョンになった後に出る症状なのですが、 矢印キーでカーソルの位置を移動させると 急にシートが拡大し、直後に元のシート倍率に戻ります。 セルをコピーして貼り付けを行った後 矢印キーでカーソルの位置を移動させると 必ずこの症状がでます。 拡大した後元に戻るので、業務に大きく支障はないのですが、 操作していてとても気持ち悪いです。 なんとか、直す術はありますでしょうか? 回答よろしくお願いします。
>>618 追記です。
セルをコピーした後、矢印キーでカーソルの位置を移動させても、
同じ症状が出ました。
>>618 ・ctrlが固定キー設定になっている→ctrlを5連打で設定が出てくるのでそれで解除
・変なマクロが入っている→ALT+F11で調べてみる
・キーボードがおかしい→一度抜き差ししてみる
あと、どれぐらいの拡大率になるかも教えて
621 :
名無しさん@そうだ選挙にいこう :2013/07/31(水) 12:01:36.87
質問です。 IF関数[例えばIF(A1<>B1,1,0)]でセルの値の比較する時、 セルの数値の値が同じでも、右詰め、左詰めが違うと不一致になります。 値だけ比較して一致にさせるにはどうすれば良いのでしょうか?
どうせ文字列が入っちゃってんだろw
624 :
名無しさん@そうだ選挙にいこう :2013/07/31(水) 12:08:55.85
>>622 レスありがとうございます。
すみません。間違ってました。
[表示形式]の[分類]が、一方が「文字列」で、もう一方が「標準」の時に、
セル内データが数字の時不一致になります。文字列の場合は一致します。
>>620 早速返信有難う御座います。
>・ctrlが固定キー設定になっている→ctrlを5連打で設定が出てくるのでそれで解除
もともと解除されてました。
windows+uでコンピューターの簡単相談センターを開き、解除になっているのも確認しました。
>・変なマクロが入っている→ALT+F11で調べてみる
変なマクロは入っておりませんでした。
ThisWorkBookを見てもまっさらでした。
新規作成からならマクロもないだろうし、症状も出ないと思い確認しましたが、
やはり、同じ症状が出ます。
>・キーボードがおかしい→一度抜き差ししてみる
ノートパソコンにワイヤレスキーボードを設置しておりますが、
ワイヤレスキーボードでもノートパソコンのキーボードでも、同じ症状がでます。
>あと、どれぐらいの拡大率になるかも教えて
よく見たら、拡大だけでなく、縮小もしているようです。
画面の右下に、シートの倍率が「%」て表示さておりますが、
画面の倍率が変わっても表示されている値に変化はありませんでした。
現在再現させているシートにおいて、倍率の変化は、
130%→コピー→100%→130% となっているようです
(変化が一瞬なので、表示される列がはっきりとは見えませんが、おそらく、これぐらいです。
>>624 A1が文字列、B1が数値として
文字列にあわせたいなら
IF(A1<>(B1&""),1,0)
数値に合わせたいなら
IF(A1*1<>B1,1,0)]
>>625 うーん、タブン解決しそうにないなぁ
一度そのPCで作ったファイルを他のPCで試して見る
それで何事もなければ、再インストールかなぁ
>>627 ググっても、同じ症状の人がいないんですよねぇ。。。
わざわざ お話聞いてくれて、ありがとうございます。
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2000 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 質問は2件です 1、年数を入力する際 XXXX/X/Xという入力なら正常にXXXX年X月X日と出るのですが XXX/X/Xと言う風に年を3桁にすると年月日が出ずただの XXX/X/Xと言う文字列として処理されてしまいます 3桁の年数を多用するので、かなり困っています (ちなみに上に2や1をつけてはいけないです 998年なら1998年ではなく998年です) 表示形式の設定でなんとかする方法はないでしょうか? 2、数字に()を付けたい場合 表示形式を(0);"(-"0);"( )"(←スペースは半角4つ)とすれば 0の場合は未記入扱いとして( )、それ以外の場合は(XX)と出るのですが 1桁の場合、(8)(4)のように寸詰まりになってしまいます (括弧内は一桁もしくは二桁なので三桁は考えなくていいです) 寸詰まりにならない方法はないでしょうか? 非常に小さいセルに()付きで表示させるので、セルを()用に分割して ってのもできません(具体的には24ピクセルに7ポイントで括弧付き2桁 他の行のレイアウトの兼ね合いもあり、セルの分割は不可能です) また、08、04などではダメで、( 8 )もしくは( 4)でなければなりません 表示形式をどう設定したらいいでしょうか?
>>629 エクセルは1900年以降しか扱えない
たとえ4桁でも19世紀以前の年号は年月日として認識されない
>>630 ありがとうございます
では諦めてXXX/X/Xで何とかなるよう切り抜けます
最悪(以下、日付を年/月/日と表記する)と書き添えます
質問2に関してはどうでしょうか?
>>629 他のセルに入力してカメラ機能で飛ばしたほうが早い気もする
>>632 カメラ機能ですね
ありがとうございました
>>629 2番目の質問
新しいExcelに変える
Excel2007以降なら( 2)みたいにスペースを入れて表示できる
635 :
二見玲菜 :2013/07/31(水) 18:29:35.33
(C) ←これをセルに入れたいんだけど変な記号に変わってすまいます。 どーすればいいですか?
>>635 笑った。こんな機能があったとは
(C)がコピーライトのマークに変換されるのね
="("&"C"&")"
でいけたけど、めんどくさいな
="(C"&")"に一応短縮できる
>>635 バージョンわからんけど 2010 だと、ファイル - オプション - 文章校正 - オートコレクトのオプション(A)... - 入力中に自動修正する(T) のチェックをオフにする。
639 :
二見玲菜 :2013/07/31(水) 19:47:21.15
>>638-639 仮に2003にそのオプションがあってOFFにしても
他人がそのExcelシートを開いたら©に化けるよ
根本的な解決にはならない
自分だけ警告OFFにしてマクロ使ってるシートを平気で回してくる奴とか
結構いるし、そういうのマジで腹立つんだよなぁ
セミコロン忘れた、©=©な
©=(C) この板はコード入力に禁則かかってるんだなw スレ汚しすまん
>>639 ないわけないと思うが...
2003 手元にないから Excel 2003 オートコレクト とかでググってみて
>>640 入力時の変換なのに、警告とかなに言ってるんだ?
DMAX関数で質問です Criteriaの指定は列じゃないとダメですか? 例えばB列に 1月1日 1月2日 1月3日 … と縦にデータがあって、 各日付ごとにCriteriaの指定をしたいのです 1月1日 別のDBにある1月1日のデータのうち最大値 1月2日 別のDBにある1月2日のデータのうち最大値 1月3日 別のDBにある1月3日のデータのうち最大値 … のような表を作りたいのです。 この場合、Criteriaの指定は、A1:B1のようにしないとできません Criteriaを行で使うには、または代替方法はありませんか?
>>644 わかりづらいのでもう1回書き直します
【元のデータベース】
日付 時刻 値
1月1日 1:00 100
1月1日 2:00 30
1月1日 3:00 400
…
という時間ごとのデータがある
【作りたい表】
1月1日 @その日の最大値 Aその時刻 Bその最大値の行番号
1月2日 @その日の最大値 Aその時刻 Bその最大値の行番号
1月3日 @その日の最大値 Aその時刻 Bその最大値の行番号
…
【知りたいこと】
@をDMAXで記載するときのCriteriaの指定方法
Aの求め方
Bの求め方
その日の最大値の出る時刻までの間の最小値とその時刻
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 Excel2010の印刷プレビューなんですが、画面にあわせた縮小表示と編集画面と同じ倍率の等倍表示の2種類しかプレビューできないんですが 300%とか400%の拡大表示は出来ないんでしょうか? できれば印刷する前に画面内で0.1mm単位で印刷の仕上がりを確認したいのですが…
プレビューで、印刷の仕上がりを細部まで確認するのは無理 てゆーか、画面内で0.1mmってアフォですか? 画面内でズレを確認するならピクセル単位だ
>>646 印刷プレビューと実際に印刷された物はズレるから、プレビュー画面でいくら確認しても無駄だよ
プリンターの機種によっては印刷前にプレビューを出せる物があるから、そっちの方が正確
>>646 pdf出力するとか
dopdfってソフト使えば紙じゃなくてファイルに出力できるから画面で確認できる
>>646 画面上じゃ図形の大きさをミリ単位で指定できるけど、実際に印刷して測ってみると全然違う大きさになってる
縦方向と横方向がそれぞれバラバラの比率で大きくなったり小さくなったりして手に負えない
Excelで寸法を指定するのは無駄
正確さが必要なら別のソフトを使うしかない
>>629 2.については、マイナス値が無いなら「[>=10](0);[=0]( );( 0 )」とかでそれっぽくなる
確かにプレビューで罫線の太さがメチャクチャに表示されるのは迷惑だな 参考にするためのプレビューなのに全く参考にならない OpenOffice Calcさんのプレビューならそれこそ1ドット単位で印刷内容が出るのにな あっちはあっちで編集画面での画像やグラフの位置ズレが酷いんだが いっその事xls出力してCalcでプレビューしたら?
653 :
名無しさん@そうだ選挙にいこう :2013/08/01(木) 20:06:22.37
「参考」の意味も分からないバカ
そもそもExcelは計算ソフトであって DTPソフトや作図ソフトみたいに、印刷結果が重要視されるものじゃない Excelの印刷結果に文句言ってる奴は、適材適所ってものを弁えていない あとExcelを方眼ワープロと勘違いして、文書作成機能や文字修飾の貧弱さに文句言ってる奴もな
>>654 印刷機能が印刷結果を重要視してないって開発者アホすぎだろw
普通に考えたらバグだと思うけどな
質問です。 ccleanerを使ってCドライブを整理してから家計簿のエクセルファイルが開けなくなりました…。 開こうとすると『家計簿.xlsxには読み取れない内容が含まれています。このブックの内容を回復しますか?ブックの発行元〜』 というメッセージが出て、はいをクリックすると修復ログファイルが別窓で出て、何も書かれていないエクセルが開きます。 ずっと使ってきた家計簿なので何としても復元したいです…。 どなたか解決方法を知っていたら教えて下さい。 (システムの復元は、復元ポイントが一日前のものしかなく、ccleanerを使う前に戻せませんでした) OSはVISTAでexcelは2007です。 よろしくお願いします。
スレ違い
>>655 適材適所を弁えられない人にとって不都合だから
印刷機能を強化して、価格アップや動作を鈍くし
適材適所を弁えていて現状で何も困ってない人にまで負担を押しつけるのが正しいとでも?
>>655 主力戦車に大砲が搭載されてなかったらバグだけど
乗用車に大砲が搭載されて無くてもバグじゃない
見た目どおりに印刷されることがそんなにとんでもないことなのかな・・・ 見た目どおり印刷されることでExcelの動作が重くなるならそれこそ開発者はアホ 印刷機能が大砲ってw例え話するならもうちょっとセンス磨いてくれ
カメラで画面を撮影し、現像、プリントしる
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 否 シート名が加藤、佐藤、近藤のように適当な文字列でついているブックがあります。 その各シートのセルに、シート順の左からシート番号(連番)を振りたいのですが 印刷時に使うグループ機能だと画面上に表示されないですよね? シート順を替えても自動で変わる連番を各シートに表示する方法はないものでしょうか。
>>656 別PCで試す
oooを試す
>>660 俺は非常に不便きわまりないと感じてるがなー
エクセル2030ぐらいでは改善されてるんじゃないかな
>>664 使いドコロがイマイチ分からんのでいい回答かわからんけど、下のマクロを実行すればok
1加藤、2佐藤、3近藤
といった感じになる
Sub a()
For Each c In Worksheets
c.Name = c.Index & c.Name
Next
End Sub
>>664 は、VBAは使えるけどVBAでの解決は否とのことなので
答えは「無理」でしょ
そもそもそのコードだと
> シート順を替えても自動で変わる連番
にならずに、再実行するとしても
1加藤、2佐藤、3近藤
から「佐藤」を先頭に持ってきて再実行すると
12佐藤、21加藤、33近藤
になり、今度は佐藤を末尾に移動して再実行すると
121加藤、233近藤、312佐藤
となってしまう
そもそも、仮にVBAでの解決をOKとされても
シートの並び順を変えた場合に自動で実行されるイベントは無いから
VBAでも望み通りのものは無理
>>667 ただ連番振るのではなく、その連番がシートの順番変更に
追従するようにしたいということなので
その機能は無いのかと。
>>666-667 あー、セルか、見てなかったわ
>>668 イベントのことなら、あるのかなー、ないような気もするなぁ
こんなん書いてみたけど、シートの順番変えても動かなかった
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Application.EnableEvents = False
For Each c In Worksheets
c.Cells(1, 1) = c.Index
Next
Application.EnableEvents = True
End Sub
>>665-669 マクロ使用不可の環境なのでVBA以外でどうにかできないかと考えた次第です。
いずれにせよ専用のイベントハンドラはないんですね
どこかにシート名と番号を保存して連動させてみようと思います
ありがとうございました
671 :
名無しさん@そうだ選挙にいこう :2013/08/03(土) 18:06:33.42
【4 VBAでの回答の可否】 否 って回転のに、マクロで答えてるバカは何なの?
>>671 マクロが使える環境になればできるってことでは
そんなにつっかかっても仕方ないと思うが
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 =SUMPRODUCT(A1:A3*INDIRECT(A$100)) ※A100の中身は「名前定義した名前のうちいずれか」 この関数でA100で条件を満たした場合係数を掛けるようなセルがあります とりあえず問題なく動いていたのですが、いつの間にか#VALUEになっていました 何かあったとすればOOoのcalcで誰かが見たと言うことが考えられるんですが 関数の互換性表見てみると問題ないように思えます 何か他に問題になる点ってありますか?
>>673 INDIRECT(A$100)
か
A1:A3
に文字列が入っている
=SUMPRODUCT(A1:A3*1)
=SUMPRODUCT(indirect(a100)*1)
とでもやって調べてみて
もしくは数式の検証
>>674 ありがとうございます
その数列を入れようとして気づいたんですが、数式を選択(F2)して
Enterを押すだけで元に戻ります。当然*1をして数字に戻してもうまくいきます
こういった場合どう対処するのがいいんでしょうか…
676 :
673 :2013/08/03(土) 19:22:41.85
ちなみに数式の検証をチェックしたところ #VALUE!が表示されている場合はSUMPRODUCTの 配列が代入される時点でVALUEになってました Enter押して修正したところだときちんと配列が[0:0:0]のように代入されていました
>>675 自動計算が止まってる気がする。
後はブックをあげてもらわないと分からん。
#VALUEになった状態であげてほしいけど、それは難しいかな。まぁいいか
>>675 1つ思い出した。その数式や周りの数値をペーストしてないかな。
ペーストした場合、なんらかの原因で数値や計算式が文字列になることがある
この場合一旦F2→enterが必要だったと思う
>>678 うーん、問題はないと思う。
あと、最後に半角スペースと全角スペースを検索してみて
式の途中に入ってたら、消すと改善されるかもしれない。
これぐらいしかわからないや、スマンね
すでにたくさんのセルに数値が入っていて その各セルの値をある数字で割りたいんですが 元の数値を生かして置換することってできますか? 現状すでにB1に「6」、C5 に「10」と入力されている状態。 これを一括置換でB1 には「=6/2]、C5には「=10/2」に 変更したいということです。説明下手ですいません。 手で変更するには数が多くて;
VBAなら簡単
形式を選択して貼り付けで
形式を指定して貼り付けだと元の数値を残すこと出来ないだろ
>>680 どこかに2を入力、コピー
「=6/2」なら
貼り付ける際に 演算 で 除算
「3」にしたいなら
値にして貼り付け
つーか、ちょっと手間だが数式でも普通に出来るだろ?
手間と言っても処理は全て一括で出来るから、数が多くても手間は増えないし
>>680 とりあえずB:C列を使ってるなら、
D1="="&B1&"/2"
って入力すると、数式ではなく文字列として「=6/2」のような結果が表示される
それをD:E列に必要なだけフィルコピーした上で、範囲コピーし
元のセル(B:C列)に値の貼り付けをしたら、置換機能で「=」を「=」に置換する
「=」を「=」に置換することで、文字列として貼り付けた式が、数式として認識される
値の貼り付けと「=」を「=」へ置換する方法は、数式で数式を作る常套手段だよ
まあ俺はVBAでやっちゃうことが多いけどね
因みに、空セルがあるなら「=」置換の前に「=/2」を空白へ置換すれば良い
質問者がなにか言ってくれないとわからんな
悔し紛れ?
690 :
名無しさん@そうだ選挙にいこう :2013/08/05(月) 13:19:53.59
【1 OSの種類 .】 Windows7 8でも同様のエラーが 【2 Excelのバージョン 】 Excel 2010 【3 VBAが使えるか .】 はい 使った事は1,2回ですが使用可能と思います 【4 VBAでの回答の可否】 可 VBAで関数定義する辺りの事の方が妥当という様な話ならそれでも構いません 起こっている事態は次のようなものです 次の様に書くと正常に働くのですが =VLOOKUP($J9,INDIRECT($D9&K$8&"!a1:b300"),VALUE($F9),0) 次の様に書くと正常に働きません #REF!になります =VLOOKUP($J9,INDIRECT($D9&K$8&"!"&$E9),VALUE($F9),0) E9の値は、"a1:b300" 何か根本的に間違えているのでしょうか?
>>690 すまんが、D9とK8とF9には何が入ってるの?
>>690 俺なら、別のセルに・・・たとえばJJ9とする。
列丸ごとつかってないセルならなんでもいいに、
JJ9=$D9&K$8&"!"&$E9
を入れて、JJ9は列丸ごと非表示にして、
INDIRECT(JJ9)にするな
693 :
名無しさん@そうだ選挙にいこう :2013/08/05(月) 13:55:20.36
>>691 すいません他のセルも必要でしたか
今の話には関係ないとして省略してしまいました
以下の様になっています(各セルに定義されている関数の結果です)
D9 親和_基準価格一覧_
K8 2013_08_05
F9 2
694 :
名無しさん@そうだ選挙にいこう :2013/08/05(月) 14:00:10.88
>>692 日付と銀行名のの違うシートが、3か月分程有るのですが
全部、1つにシートにコピーした方が効率的でしょうか?
>>690 同じシート作ってみたけど問題なく動いた
E9は
"a1:b300"
ではなく
a1:b300
だよね?
>>694 好き好きで
つか、そのシート・ブックを参照する人間はあなた一人じゃあるまい
その人たち全員が使いやすいかどうかを考えて・・・だろうね
697 :
名無しさん@そうだ選挙にいこう :2013/08/05(月) 14:25:13.14
>>695 成程
"1a:b300"
とするのでなく
a1:b300
だったら、動くようですね
どうも、ありがとうございました
皆さんも色々教えて頂いてありがとうございました
1a・・・だと・・・? そら、エラー出るわw
699 :
名無しさん@そうだ選挙にいこう :2013/08/05(月) 14:42:16.01
>>698 すいません。それは単なるタイプミスです
正確には
"a1:b300"
でなく
a1:b300
でした
【1 OSの種類 .】 WindowsXP Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 若干 コードは追える程度 【4 VBAでの回答の可否】 可 例えばC列に住所の一覧があってその住所をクリックすると D1にクリックした住所のgooglemapが表示される もしくは C1に住所を入れるとD1に入力した住所のgooglemapが表示される 可能でしょうか? HTMLでやれって言われそうですが・・・
Googleさんはほんまに優秀すぎやで
同じような質問を見つけても、GoogleMAPをキャプチャーして貼り付けてくださいみたいな回答しかなくて絶望してたのに・・・
>>701 それをブラウザが遷移するのではなく
excel内に埋め込みたいんですよね・・・
前後してしまって申し訳ございません。
>>701 ありがとうございます!
705 :
名無しさん@そうだ選挙にいこう :2013/08/06(火) 18:45:34.19
質問です。欄A1A3にはアルファベット(A)ならA5にG判定が出、かつ、A2A4には数値≦20でA5にG判定が出るシートを作りたいです。欄がBLANKの時は空白が返される様に‥可能ですかね??
>>705 a5=IF(AND(A1="A",A3="A",A2<=20,A4<=20),"G","")
707 :
名無しさん@そうだ選挙にいこう :2013/08/06(火) 19:03:26.01
708 :
名無しさん@そうだ選挙にいこう :2013/08/06(火) 19:26:47.51
>>706 即答ありがとうございました。さらに質問なのですが上記の条件にA1A3にそれぞれ(A)だけでなく(B)を入力した場合もA5に判定Gが返されそれ以外のアルファベットが入力された場合はNGが返されるようにしたいのです。宜しくお願いします。
>>708 小出しにするのはやめて
=IF(A1&A2&A3&A4="","",IF(AND(OR(A1="A",A1="b"),OR(A3="A",A3="B"),A2<=20,A4<=20),"G","ng"))
優先順位はてtきとーなのであとはテキトーに作り替えればいけると思う
710 :
名無しさん@そうだ選挙にいこう :2013/08/06(火) 21:07:55.85
>>709 すいません!ありがとうございました(^ω^)
711 :
名無しさん@そうだ選挙にいこう :2013/08/07(水) 00:33:08.20
A1:E1の五つのセルにある検査結果例えば(白)または(黒)を入力して結果がその2色だけならF5セルにOKと出てそれ以外の色ならNGと出る式を教えて下さい。また、Gならセルの中が青になりNGなら赤にすることって出来ますか?
>>711 F5=IF(AND(OR(A1="siro",A1="kuro"),OR(B1="siro",B1="kuro"),OR(C1="siro",C1="kuro"),
OR(D1="siro",D1="kuro"),OR(E1="siro",E1="kuro")),"ok","ng")
色を付けるのは説明めんどくさいから
http://www2.odn.ne.jp/excel/waza/cformat.html ココを見て頑張れ
713 :
名無しさん@そうだ選挙にいこう :2013/08/07(水) 00:51:42.63
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 否 会社でネットワーク上に共有されているエクセルファイルを編集する必要があるのですが ファイルを開く時に「読み取り専用で開きますか?」と聞かれずいきなり読み取り専用で開かれてしまい、編集できず困っています。 名前を付けて保存から、対象のファイルに上書き保存しようとしても拒否されてしまいます(「アクセスできません」みたいなメッセージ)。 同じ職場の他の人のPCからそのファイルを開くと、読み取り専用で開くかを確認され、「いいえ」を選択すれば編集して保存も出来ます。 「読み取り専用の設定/解除」のコマンドを試してみましたがダメでした。 ネットワーク上にある全てのエクセルファイルが編集できないわけではなく、一部のファイルだけでこの現象が発生しています。 何か考えられる原因や対策はあるでしょうか? 今の職場に来て1ヶ月程度であまりよく解っていません。 自分だけアクセス権限が無いんじゃないかと思いましたが、会社の人に聞いたところそれは無いだろうという話でした。
>>714 エクセル 読み取り専用 ネットワーク上
または
読み取り専用で開きますか? ネットワーク上 開かない
辺りでぐぐれ
さんざんそのエラー見てきたけど原因はMSがやらかしているバグとしか思えない
原因の多くはtempファイル、鯖のHDD空き容量辺りだと思う。
しっかり空いてるなら知らん。俺が聞きたい。
俺もアクセス権じゃないかと思うんだけどなあ Vista以降のアクセス権はかなり複雑だから、管理者が本当のIT専門家じゃなくて、 ちょっとパソコンに詳しい程度の人がやらされてる場合、ちゃんと理解できてないことが多い
>>714 です
>>715 >>716 回答頂きありがとうございます。
どうもエクセル限定の問題ではないようで
今日他の種類のファイルでも同様の現象が発生したのでネットワーク管理者に問い合わせる事になりました。
スレ違いの質問になってしまって申し訳ないです。
718 :
名無しさん@そうだ選挙にいこう :2013/08/07(水) 23:34:47.87
>>712 ですがこの数式にもし検査結果に空白がある場合にF5セルも空白になるようになる数式を入れたいのですが可能でしょうか?1時間粘ったけどムリポでした‥
>>718 =if(or(isblank(a1),isblank(b1),
,
IF(AND(OR(A1="siro",A1="kuro"),OR(B1="siro",B1="kuro"),OR(C1="siro",C1="kuro"),
OR(D1="siro",D1="kuro"),OR(E1="siro",E1="kuro")),"ok","ng")
konnnankanji
=if(or(isblank(a1),isblank(b1), ,"", IF(AND(OR(A1="siro",A1="kuro"),OR(B1="siro",B1="kuro"),OR(C1="siro",C1="kuro"), OR(D1="siro",D1="kuro"),OR(E1="siro",E1="kuro")),"ok","ng") ) kouka
【1 OSの種類 .】 Windows xp 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 「1995/7/5」から「2010/6/8」を引くことによって 5452日経過した事が分かったんですが、 これを何年と何日経ったかを求めたい場合はどうすればいいんでしょうか? 365で割った場合はうるう年が考慮されないので困ってます。 回答お願いします。
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 多少 【4 VBAでの回答の可否】 否 B列にはA列を参照にしたTRIM関数の式【=TRIM(A1)】を、C列には【=IF(COUNTIF($B$1:B1,B1)>1,"重複","")】という式をいれて A列に品名を入力して重複があったらC列に「重複」と表示されるようにしたんですが、 COUNTIF関数は式が入力されていれば空白もカウントする使用なので入力するまで重複が表示されます。 これをどうにか、空白はカウントしないで重複の文字だけカウントするようにしたいのですが、方法はありますか?
""だったらカウントしないIF文をつくる
>>723 そのまんまだけど
=IF(B1="","",IF(COUNTIF($B$1:B1,B1)>1,"重複",""))
728 :
名無しさん@そうだ選挙にいこう :2013/08/08(木) 05:23:20.81
726 どういたしまして
727 どういたしまして
728 どういたしました!
ふ〜(^▽^)
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 大量のMATCHとVLOOKUPの使いすぎでシートが実用不可能レベルまで重くなったのですが (具体的には自分のPCだと1項目入力するとエンターを押してから次の行に移るまで2〜4秒待たされる) どうにかして軽量化したいのですが、MATCHでサーチするのは仕方ないとして、 MATCHを別セル(仮に今回の例はV10=MATCH(A8,L1:L200,0)とします)で決め打ちしておいて、 直のVLOOKUP(A8,L1:M200,2,0)と、 L1:M200に名前を付けてVLOOKUP(A8,名前,2,0) と、 OFFSET(M1,V10,0,1,1)と、 INDIRECT("L"&V10)では、どれが一番計算が軽くなるでしょうか? また、これらよりもっと軽くなる式があれば、そちらを教えてくださると助かります。 それぞれ内容が様々なVLOOKUP式が1000個近くあり、全部を全方法で書き直して、 全方法を自分で確かめるってのはちょっと無理なので、 ご存知の方がいらっしゃいましたら、よろしくお願いします。 正直、シートを使う人全員にOpenOfficeで開いてくださいと名言しちゃった方が楽なんですけど、 (大量複雑計算セルありのシートの入力レスポンスがExcelと比べ物にならない程早く、 どんなに滅茶苦茶込み入った計算でも一瞬でレスポンスを返す) Excelでも使いたいというか、Excelしか入れてない人が結構いるので。
>>733 シートを作りなおしたほうがいい気がするが・・
index+matchが最高。一列ならmatchでもok
vlookupは重い。一列ならmatchと多分同じ。
indirectが揮発性関数の性質的にも最強に重い。これは今回はやめとけ
名前をつけて軽くなるかは知らん。
あとはシートの内容によるので、
vbaでかかった時間を計測するのがいいと思う。
が、vbaがつかえるようになればそんな事は不要になるので
新規ブックに全シートをコピーする。
また、使っていない列、行を一旦削除する。
ついでにoooのcalcで読み込み、保存し直す。
こうすることでゴミデータが消えて軽くなる可能性がある。
733の補足です。 これらの式は全て =IF(ISERROR(V10),0, 式本文 )や=IF(ISERROR(V10),"", 式本文 )などの、 MATCHしなかった時のエラー対策IFが付いてます。 あと、OFFSETは(M1,V10,0,1,1)ではなく(M1,(V10-1),0,1,1)ですね。失礼しました。
>>734 INDEX()関数がMATCHと組み合わせて使えるんですね…。
浅学で申し訳ありませんでした。
シート自体は、何度もCALCとEXCELで行き来をしてるので
結構ゴミデータは消えてると思います。
頓狂な質問を丁寧に答えていただき、本当にありがとうございました。
1000行で重くなる時点で無駄な処理してるとしか思えん 実際にはもっと莫大なデータでもあるのか?
>>737 おかげさまで、VLOOKUP()をINDEX(MATCH())にしたら、心持ち早くなりました。
1セルあたりの計算式が、別セルを所謂変数のように使って、
(1セル内で何度も同じ計算や参照をする場合、別セルに参照計算させて、それを何度も呼び出す)
一番重い式で、メインセル600文字分の計算式+別セル各50〜200文字で7セル、これで1計算式。
これの同一式(列違い)が数十〜二百個並びます。
1セルの計算式でMATCH、VLOOKUPを1〜10個使っていました。
さらにそれと似たような感じでメイン200〜400文字の、サブ50〜200文字×3〜4セルが、
何セットもずらりとあるって状態です。
非常にイレギュラーな引数と計算結果が多く、最大効率で計算式を書いてもそうなりました。
普通に1セルに平打ちしたら1セルの計算式が軽く1000文字突破します。
あれから気になって、ほかの重くなるものを確認したら、FIND(これも200個使っていた)が一番重かったようで、
FINDを全部SEARCHに変更したら半分以下の軽さになったという笑い話です。
あとは、どうしても外れなかったINDEX8個をどうやって代用するかって所です。
VLOOKUPと同じ使い方ですが、右に55セル離れたデータ群を参照をしたり、
左に3セルの位置なんて逆方向の参照が必要なので、これをどうするかで悩んでいます。
ひょっとしたら、LEFTやSUBSTITUTEも重いのかもしれない。
LEFT+SEARCH(以前はLEFT+FIND)やSUBSTITUTEで、入力用セルで入力された不要な文字をカットしているのですが。
(とはいっても、その計算での不要文字は他のセルでの計算に必要で、その不要文字をなくす事はできない。
例としては入力セルが「43*」とされたら、その計算では43を計算して、*は別のセルの計算や参照で使うとか、
「○○部XX課」と入力されたら、○○だけと、XXだけに分けてそれぞれ別のセルでの計算に使い、
尚且つ「○○部」を1セル、「XX課」を1セルという分割もしてはいけないとか。あくまで例なので「部課」ではないです)
たぶんレイアウトが悪いんだろ 行単位で処理してみ?
>>738 VLOOKUP()→INDEX(MATCH())
も知らないのに最大効率とかイレギュラーと言われてもなぁ
シートまるごとアップすれば誰かがなんとかしてくれるよ
>>739 ちょっとレイアウトは変更不能です。
まあ右55とかはなんとかなるかもですが、左参照はどうしても必須です。
あ・・・ちょっとまてよ。左参照が必要なものを、
左右反転しながら別セルに丸コピーして、それをINDEXで参照すれば良いのか。
INDIRECT1回と、20セル丸コピー×2回してからINDEX、どっちが重いだろう・・・。
20セル程度なんで自分で試して見ます。
>>740 セル内の文字数的な意味です。>最大効率
だからSEARCHじゃなくてFINDを使ってた訳でもありますが。
同じ計算が1セル中に2回以上出るなら、別セルで計算させて2回参照させるとか、
イレギュラー計算は別セルでやった上で、あとで計上するとか。
自分の本来の作成環境がCalcで、Calcではサクサク動くシートだったのですが、
EXCELに掛けた途端、何入力しても重くなったってのが実情です。
まあ、
>>738 は愚痴みたいなものなんで、無視してくださってもOKです。
とりあえず、色々やってみます。 本当にありがとうございました。
頭固すぎ
Calcだと軽いは甘え 10万行扱ってようやく許される愚痴
【1 OSの種類 .】 Windows xp 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 すみません質問お願いします。下記のような票がありA列の1〜6の数字を元に 別シートに1ならAに、2ならCにと、列毎に振り分けはできるでしょうか? 詳しい方宜しくお願いします。 A B C D E 1 1 りんご 2 2 すいか 3 2 すいか 4 2 すいか 5 2 すいか 6 3 もも 7 3 もも A B C D E F 1 1 りんご 2 2 すいか 3 2 すいか 4 2 すいか 5 2 すいか 6 3 もも 7 3 もも
>>745 データが全部で5種類程度なら、がんぱればできるけど
それ以上だとVBA使わないと無理
>>746 すみません、早速の返信ありがとうございます。
書き方が簡単すぎかもしれなかったので補足させてもらうと数字は1〜6までですが
1がつくのはりんごだけではなくナシとかバナナとかもある場合は難しいですか?
A B C D E
1 1 りんご
2 1 なし
3 2 すいか
4 2 キウイ
5 2 ばなな
6 3 もも
7 3 みかん
A B C D E
1 1 りんご
2 1 なし
3 2 すいか
4 2 キウイ
5 2 ばなな
6 3 もも
7 3 みかん
ピボットテーブルで
749 :
名無しさん@そうだ選挙にいこう :2013/08/10(土) 13:18:36.03
>>748 ピボットテーブルでできるんですね。すみません勉強してみます。
ありがとうございました。
>>747 sheet2!a1=IF(Sheet1!$A1=INT((COLUMN()+1)/2),IF(0=MOD(COLUMN(),2),Sheet1!$B1,Sheet1!$A1),"")
後は範囲を広げる
>>745 sheet2での作業↓
a1 =IF(Sheet1!$A1<>INT((COLUMN()+1)/2),"",Sheet1!$A1)
b1 =IF(A1=COLUMN()/2,Sheet1!$B1,"")
A1:b1選択しそれをL列までコピー、のちA1:L1選択した状態を下方向へコピー
※ セル右上に三角マークが出てウザい場合は、オプション→数式→エラーチェック
→「バックグラウンドでエラーチェックを行う」のチェックを外すなどしてください
752 :
名無しさん@そうだ選挙にいこう :2013/08/10(土) 14:27:55.82
>>751 数式のコピペって2回に分けなくても、一発でできなかったっけ?
>>753 セル右下の十字マークを引っ張り伸ばす方法だと一発は無理です。
>>751 で誤字訂正
×セル右上→〇セル左上
セル右下のカーソルが十字になるところ→フィルハンドル
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2000 【3 VBAが使えるか .】 はい(少し) 【4 VBAでの回答の可否】 可 マクロを実行すると、 かなりの確率でエクセルの画面が止まってしまいます。 バックグランドで計算はしてくれているので 待っていれば計算は終了するのですが、 現時点でどこまで進んでいるかはESCで中断しないと分かりません。 Application.StatusBar = でステータスバーに記載しても 止まってしまったら表示はその時点の情報でストップしていまいます。 画面が止まってしまっても 現時点の進捗状況を知る方法はありませんか?
>>756 Sub Test()
Dim i As Long
For i = 0 To 10
Application.StatusBar = i
Application.Wait Now + TimeValue("00:00:01")
Next
End Sub
これを実行してみて、これでも画面が固まってしまうならExcelかOSが壊れてるので
Excelの再インストール、それでもダメならOSの再インストール
面倒かもしれないが、あとは現状で我慢するのとExcelやOSを再インストールする手間とを
天秤に掛けてどっちを取るかは君が決めれば良い
上記は問題なくて、君のコードでは画面固まるならコードを見ないとなんとも言えない
なので、コード見せても良いならブックごとうp、見せたくないなら自分の力だけで頑張るか諦めて
758 :
名無しさん@そうだ選挙にいこう :2013/08/11(日) 23:08:20.66
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel 2010 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 Excel で日課表を書くには、どうしたらいいのでしょうか? どうも私の調べた事からのつもりでは 睡眠 7:00 0:00 体操 8:00 7:00 今日のまとめ 20:00 22:00 就寝 22:00 24:00 この様なテーブルを作り、これをドーナツの形式でプロットすればいいのではないかと思い 色々試行錯誤しているのですが、 どうも自力ではよく分かりません。 3項目(名前-終了時間-始り時間)のデータが必要か? 2項目(名前-終了時間)のデータで十分なのかもよく分かりません それどころか、24:00というデータがどうも正常かどうか確信が持てない 24時を入れているつもりなのですが、セルの表示形式を変えると、12:00 am と出たりする 0:00 am と強引に入れても 12:00 am と表示される 時間のデータをエクセルで扱うのは初めてなので、 データの入力すらこうすればいいという方法がよく分からない始末です 取りあえず、日課表の作成方法を教えて頂いたら、後は自分で試してやってみる積もりですが 上に挙げたような事についてアドバイスが有ったらよろしくお願いします
>>757 SUGEEEEEEEEEEEE
画面は相変わらず固まったり白くなったりだけど
ちゃんとステータスバーは現在の状況を吐き出すようになりました
ありがとうございます!!!!
>>758 睡眠 =D1-C1 0:00 7:00
体操 =D2-C2 7:00 8:00
その他 =D3-C3 8:00 20:00
今日のまとめ =D4-C4 20:00 22:00
睡眠 =D5-C5 22:00 24:00
というテーブルを作り、A1:B5をデータソースとしてドーナツグラフにすれば良い
見た目邪魔ならB列は非表示にしても構わない
ドーナツグラフってのはそれぞれの要素の比率を表すものなので
それぞれの項目が1日(24時間)の中の何%に当るかを「終了-開始」で出してやればいいだけ
但し、君が作ったテーブルのように、空き時間があってはダメなので、24時間全てきっちり埋めること
24:00については、表示形式のユーザー定義で「[h]:mm」とすればOK
確認としては表示形式「yyyy/mm/dd hh:mm:ss」とした時に
22:00が「1900/01/00 22:00:00」
24:00が「1900/01/01 00:00:00」となれば問題ない
Excelでは時刻だけ入力しても、それは日付を含むものと解釈され
日付の1が1900/1/1の為、日付の0は本来はあり得ない1900/1/0になる
普通に時刻を表示する表示形式だと24時は翌日の0時扱いになるが
hを[ ]で囲むと、日付分を24時間換算で時刻に表示出来るので
3日+12時間は、日時としては「1900/1/3 12:00:00」だが、これが24*3+12で84:00って表示になる
762 :
760 :2013/08/11(日) 23:40:38.72
763 :
名無しさん@そうだ選挙にいこう :2013/08/12(月) 09:12:34.24
>>745 です。
遅くなりましたが自分の希望通りに振り分けできました。
レス頂いた方ありがとうございました。
764 :
名無しさん@そうだ選挙にいこう :2013/08/12(月) 10:12:36.05
>>761 仰られた通りにやってみて
プロットしているデータをa, b入れ替えてみると
どうにか思ってい様な形になりました
色々と細かい丁寧なご指導ありがとうございました
後の日課表らしく見せる為の細かい飾りつけは自分で試行錯誤してみるつもりです
しかし、こういう技術的な事柄についての日本語でに検索は
ゴミの様なページが多すぎてさっぱり使い物になりませんね
○単なる馬鹿が答えたとしか思えない回答をベスト回答としている多くの質問ページ
○プロットするデータを次々と変えて意味があるとも思えない変更を繰り返した訳の分からない説明をし、
おそらく解説している本人が何をやっているのか理解もしていない解説ページ
そういうページが次々と最初の方に連続してしかも何度も出て来ました
それどころか英文で検索しても、こと日課表に関しては色々と訳の分からない事を解説しているページが多く
貴方の様に適格に短く説明して下さるページはなかなか見つけられませんでした
どうも貴重な情報をありがとうございました
技術的ww
自分がゴミにも劣るという純然たる事実を受け入れたくないんだろうな、可哀想に
そう定義されてるからだろ そんな面倒くさいろだ使うくらいならカラーコード書いてくれればいいのに
>>765-766 質問者に知識が無いのは当然の事
知識が無いからこそ先達に聞いてくるんだよ
それを見下して煽るだけどか下種の極み
ゴミにも劣るのはおまえの性格だろ
マクロの記録すれば出てくるよ
【1 OSの種類 .】 Win7 【2 Excelのバージョン 】 2010 【3 VBAが使えるか .】 ちょこっと 【4 VBAでの回答の可否】 可 VBAにて、あるシートを別のブックにコピーした後、 シートに付随しているマクロのコマンドボタンを、一度押すと消えてしまう現象が起きます。 デザインモードで一度触れば、現象は起きないのですが、誰でも使えるようにしたいので、その変な問題を解消したいです。 ご存知の方がいらっしゃいましたら、原因を教えていただけますか?
>>773 エクセル コマンドボタン 消える
でぐぐってみたけど原因は複数あるみたい。
コマンドボタンをもう一つ新しく作ってhandleしたほうが早いかも
(消えてしまうコマンドボタンのマクロを新しいコマンドボタンに移す)
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】コピーして使うくらいなら 【4 VBAでの回答の可否】 否 例えばセルA1に「○」という文字があります。 そこでB1に「×」という文字が入ると、A1が「△」に変更されるという仕組みを作るのは可能でしょうか? 作業列が必要な場合でもおkです
無理です
>>775 a1=if(b1="×","△","maru")
○を直接入力しているならvbaのselection_changeなどを使う
>>776-777 回答ありがとうございます。
やはり直接入力じゃやりようがないですか。どうもです
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】ほんのり 【4 VBAでの回答の可否】 可 intWeekDay = Weekday("2013/4/31") とした場合に、型の不一致でエラー13が出るのですが、 ありえない日付を入力した場合に普通にスキップする方法はありますか? on error goto 以外でスキップしたいのですが お願いします
あ、resume next もなしでお願いします。 エラーの場合に別の処理をループ内でしたいのですが、 エラー分岐で処理させるってできるんですかね?
嫌です
>>779 >on error goto 以外でスキップしたいのですが
の理由がわからん。エラー処理を理解していないだけか?
1、intWeekDay = Weekday("2013/4/31")でのエラーを回避する
代入前に"2013/4/31"が日付として有効かどうかを(IsDate等で)チェックする
2、エラー処理ルーチンの中で好きにする
この場合On Error Resume NextでintWeekDayに代入直後に処理が一般的
例)If Err.Number = 13 Then ’エラーが型の不一致なら云々
どちらが良いかは具体的な全体仕様がわからんと何とも言えない。両方とも実装が必要かもしれない。
IsDate使えよ
2010は持ってるしなあ
最近、Excelベースで時系列の文字列(予定とか気になったKeywordとか)の処理に使ってます。 後での見直しや操作が便利なのですが、逐次Excelを立ち上げるのが面倒です。 PCベースかスマホベースで、Excelフォーマットで保存できる軽いソフトはないでしょうか? Excelベースの軽いメモ帳という感じです。ご教授頂ければ幸いです
EXCEL2003を使っています。VBAはできません。 計算の結果が特定の数字より高い低い場合(例:0〜255) 0未満の数値の場合(−10、−36等)が算出された場合でも最低値として0が出るように 255より高い場合(400、530等)が算出された場合でも最大値として255の数値が 結果として出るようにしたいのですが、どうすればできるでしょうか? また、その数式にはROUND関数を使っています。 アドバイスよろしくお願いします。
>>788 oooは軽かったと思う
それかCSVで保存してCSVの編集ソフトを使うとか
>>789 A1に数値が入ってるとして
B1=IF(255<A1,255,A1)+IF(A1>0,0,0)
>>790 その式はA1が負の数のとき0にならない気がする
=(A1>255)*255+(A1<255)*(A1>0)*A1+(A1<0)*0
=IF(A1<0,0,IF(A1>255,255,A1))
MINとかMAX使った式を書こうと思ったけどあまり綺麗にならなかった
>>290 2項目のIF関数の3番目の引数は、0でなく-A1
【1 OSの種類 .】 Windows xp 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 =SUMPRODUCT(($A$1:$A$100=$B$1)*(略)*(略) ) B1に何かを入力して 「($A$1:$A$100=$B$1)」 の部分が常に1(true)になるように することは可能でしょうか?
>>798 それは入力する人がB1に常にtrueになる値を入力していれば可能です
>>798 =SUMPRODUCT((1)*(略)*(略) )
あ、この1もいらんか =SUMPRODUCT((略)*(略) )
【1 OSの種類 .】 Windows 7 【2 Excelのバージョン 】 Excel 2007 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 Option Explicit Sub test() Dim A As Range Dim B As Range Dim C As Range Set A = Range("A1:A10") Set B = A.Offset(0, 1) Set C = A.Offset(0, 2) [ If B.Value = "" Then ] B.Value = A.Value If C.Value = "" Then C.Value = A.Value If A.Value > B.Value Then B.Value = A.Value If A.Value < C.Value Then C.Value = A.Value End Sub Aをソースに、BCが空白ならAを入れて、A>BならBを更新、A<CならCを更新 という風にしたいのですが、[]をつけた部分で「型が一致しません」と言われました。どうしたらいいのでしょうか
>>802 ×If B.Value = "" Then
△If B.Value = Empty Then
○If IsEmpty(B.Value) Then
空白セルは""ではなくEmptyね
「1」と「あ」はどちらが大きいですかと聞かれても困るように
セルの値が数値の場合、文字列である""と比較しようとすれば、比較型不一致でエラーになる
ただ、△の方法でも大抵問題ないが
= Emptyは0や""を返す式が入力されている、実際には空じゃないセルでもTrueを返すので
IsEmptyを使うのが一番確実
IsEmptyは0や""ではFalseを返してくれるので
【1 OSの種類 .】 Windows 7 【2 Excelのバージョン 】 Excel 2007 【3 VBAが使えるか .】 Excel 2003でちょっと 【4 VBAでの回答の可否】 可 2点質問させて貰います @「A」「B」「A(Aに12.5%の網掛け)」「B(Bに12.5%の網掛け)」「定休」「有給」の6種類をリストから選ぶ入力規則にしましたが、 網掛けの部分が反映されません。網掛けになる部分には規則性が無いのですが、チマチマ入力せずに網掛け出来る方法はあるのでしょうか? A「A」「B」「A(Aに12.5%の網掛け)」「B(Bに12.5%の網掛け)」「定休」「有給」で「定休」「有給」のフォントサイズは14で、 「A」「B」「A(Aに12.5%の網掛け)」「B(Bに12.5%の網掛け)」のフォントサイズは18に指定したいのですが、 条件付き書式ではフォントサイズを設定出来ませんでした。他に手法(VBA?)があれば教えてください。 適用するセルの範囲はsheet全体ですが、実質は列がA〜DZで行が150行程度です。
806 :
805 :2013/08/19(月) 19:19:03.44
「A(Aに12.5%の網掛け)」「B(Bに12.5%の網掛け)」のぶぶんですが、セルを灰色にするでも構いません セルを灰色か網掛けで塗らない「A」「B」と、灰色か網掛けで塗る「A」「B」があるので 条件付き書式での分別が出来ないみたいで悩んでいます・・・
>>805 めんどいから全部VBAにしたほうが良さそう。これを「sheet1」に記述。
Private Sub Worksheet_Change(ByVal Target As Range)
If (Target.Row <= 150 And Target.Column <= 150) Then
If (Target.Value = "A" Or Target.Value = "B") Then
With Target.Interior
.Pattern = xlGray16
End With
With Target.Font
.Size = 18
End With
ElseIf (Target.Value = "定休" Or Target.Value = "有給") Then
With Target.Interior
.Pattern = none
End With
With Target.Font
.Size = 14
End With
Else
With Target.Interior
.Pattern = none
End With
With Target.Font
.Size = 11
End With
End If
End If
End Sub
>>805 @とAを合わせた解決法?
セルが空白ならサイズ18で網掛け無しのAをセルに入力、
セルが網掛け無しのAならサイズ18で網掛け無しのBをセルに入力、
セルが網掛け無しのBならサイズ18で網掛けのAをセルに入力、・・・
というようなコードでいかがでしょう? 具体的には今PC立ち上げていないため。。。
もしくはそんな凝ったものでなく、 選択セルの内容が希望のものになるコードを6種類用意するとか。 具体的には同上。。。
810 :
名無しさん@そうだ選挙にいこう :2013/08/20(火) 17:02:41.89
質問です。例えば、A1セル=sumif($B:$B,"1",$D:$D)の様な式を作り既存のシートより式を当てはめたい範囲をマウスで選択して適応させる事は可能でしょうか?出来ればB2:F5のように関係無い範囲も含めても適応されるようにしたいです。お知恵をお貸し下さい。
>>810 ・コピー
・B2:F5範囲選択
・ctrl押しながらenter
相対参照とか上手く使わないと循環参照になるよ
812 :
名無しさん@そうだ選挙にいこう :2013/08/20(火) 17:32:43.54
>>810 ですが回答ありがとうございます。
すいませんが当方初心者でしてもう少し詳しく教えて頂ければ幸いです。すいません‥
あれ、解釈が間違っていたのかな。 どこのセルをどうしたいの? A1=sumif($B:$B,"1",$D:$D) B2=sumif($B:$B,"1",$D:$D) B3=sumif($B:$B,"1",$D:$D) ・・・ F5=sumif($B:$B,"1",$D:$D) と思ってたけど違うのかな
814 :
名無しさん@そうだ選挙にいこう :2013/08/20(火) 19:55:04.18
>>813 A1のセルは式は入っているが表示は基本的には空の状態で段々増えていくデータをある区切りごとにsumifを使って集計しては消しての繰り返しが出来る様にしたいのです。B1:F5までを集計したりB6:F10を集計したりと‥
815 :
名無しさん@そうだ選挙にいこう :2013/08/21(水) 01:05:07.89
Somebody here?
>>814 うーん、悪い、俺にはちょっと
>>814 さんが何言ってるかわからない。
indirectかな?
頑張れ。
817 :
名無しさん@そうだ選挙にいこう :2013/08/21(水) 02:24:25.94
>>816 やっぱり!自分で書いてて意味不明でしたから‥ありがとうございました。
Excel2013が頻繁に止まってしまい困っています、入力中に止まったりします Excel2013を使い続ける前提で解決したいのですが無理でしょうか?
ありがとうございましたって自ら謎のまま締めてしまうのか?
>>818 再インストール
PCがよほど古いor他のソフトが大量に動いてるならOSの再インストールを一度してみたほうがいいかも
>>818 そういうのは環境も影響している場合も大きいのでテンプレ使っ
て尋ねた方が良いですよ。
822 :
名無しさん@そうだ選挙にいこう :2013/08/21(水) 09:27:32.54
>>819 すいません、勉強してました。改めて質問なのですが、まずA1セルの式をB2:F5の範囲で適応されるようなマクロを組みたいのですが手順としてマクロ記録→範囲込みの関数をA1に入力→停止と言う方法は正しいですか?すでに式があるのにそれを生かす方法がわかりません‥
>>822 indirect・・・なのか?
例えばSUMで、SUMの引数を自由に変えたいなら
A1=SUM(INDIRECT(A2,1))
A2=b1:b2
とすればB1:B2の範囲でSUMで足し算ができる。
A2=F1:F2
ならF1:F2で足し算な。
こういうことをやりたいわけではないのか
824 :
名無しさん@そうだ選挙にいこう :2013/08/21(水) 14:29:28.33
>>823 それで少し頑張ってみます。ありがとうございます(^ν^)
>820 PCは新しい方と思います Windows8 x64 IvyBridge Celeron G1610 メモリ8GB HDD500GB 他に同時に使うソフトは、ワード、ブラウザ、メーラぐらいです。 >821 上記の環境では不足でしょうか?
>>825 環境は問題無さそう
エクセル本体のファイルが破損してるか、tmpファイルがおかしな事になってるかも
とりあえず再インストール
それでも続くようならまたおいで
彼がどうかは解らないが、OS再インストールしろって言うと、駄々こねる奴もいるよな 他の方法でお願いします、とかw でもOS再インストールは、それで解決することも多いし 少なくともハードウェア依存の問題か、ソフトウェア異存の問題かを判別する 一番手っ取り早い方法 普段からバックアップとかしてないと、いろいろ手間掛かるが OS再インストールが極端に面倒になるような使い方自体、色々と問題を孕んでいるので 根本から見直す良い機会だと思えばいいさ
インストールして終わりじゃないし あらゆるソフトをカスタマイズして使ってるから、設定を何もかも元に戻すのに何日もかかる
>>828 ワード、ブラウザ、メーラの設定を戻すのに何日もかかるってすごいな・・・
それこそOSクリーンインストールしてExcelだけでまずは使ってみたら?
>>829 おまえがOfficeとメールとブラウザしか使ってないことはわかった
俺は50本以上の色々なソフトをインストールしてるから、再インストールだけで大仕事
カスタマイズはもっと大変
>826 OSもOffice2013もプリインストールで PCも最近購入したばかりですが、OSの再インストールしかないでしょうか? Office2013の再インストールではダメでしょうか?
834 :
名無しさん@そうだ選挙にいこう :2013/08/22(木) 09:56:42.75
【1 OSの種類 .】 WindowsXP・7・8 【2 Excelのバージョン 】 Excel2007・2010・2013 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 宜しくお願いします。 A列に日付形式で「平成25年8月15日」と連続して入ってるのを、 B列に250815という形で抜き出して整理していきたいのですがどのようにしたら良いでしょうか? A1 平成25年8月15日 B1 250815 A2 平成24年12月2日 B2 241202 といった以降行も同様に。
>>834 B1=TEXT(A1,"emmd")
あとはフィルハンドルで
ごめんこっちか =TEXT(A1,"emmdd") 値だけならフィルしたあと値のみ貼り付けするか 最初からVBAでやらないと無理
>>834 ちょっと変化球
B1 セル書式設定→ユーザー設定→「yymmdd」
更にB1へ下記数式を入力
=A1+4383
839 :
名無しさん@そうだ選挙にいこう :2013/08/22(木) 11:31:37.51
>>810 ですが度々申し訳ないのですが質問です。=sumif($B:$B,"1".$D:$D)-sum($F:$F)という式にindirectでB2:F10の範囲を適応させるという組み合わせを作りたいのですがどうやっても出来ません‥すいませんが教えて下さい。よろしくお願いします。
>>828 ,
>>830 それ、全部手動でやってるの?
そりゃ大変だw
俺は設定ファイルやレジストリをバックアップしてあるので、
「解凍するだけ」みたいなのを除いても100本はソフト入れるが
開始から完了まで3時間、その中で実際に作業するのは計1時間程度で
OSクリーンインストール&後入れソフトインストール&OSとソフトのカスタマイズまで完了する
835-838 ありがとうございました^^無事処理ができました。
最初のOSとOfficeとVisual StudioのWindowsアップデートだけで1時間かかるは… ほっとけばいいと思ってたら、なんか確認ダイアログとか出て止まってるし あと電子地図がインスコに1時間かかる 途中4回DVDの入れ替えが必要だし
経験上、パソコンが得意な人の「1時間で終わるよ」が本当に1時間でできたためしがない
最低でも3倍、ヘタするとその日に終わらないことも少なくない
>>840 いっぺん3時間でできるか測ってみ
「今回はたまたまネットが重くてパッチがなかなか落ちてこなかった」みたいな言い訳はもう聞き飽きたわ
そういうトラブルも織り込んだ見積もりが出せないやつは素人認定だからな
>>842 仮想化しておいたほうがいいんじゃないか。
VSは死ぬほど時間かかるよな。これが一番邪魔臭い
Adobe Creative Suiteも死ねるぜ
どんなに効率よくやったとしても、再インストールと環境構築がたった3時間なんて、よっぽど簡単な使い方しかしてないんだな
>>843 再インストールに当ってネットから落とす物など何もないけど?
アップデートとかはネットワークインストールが主流になっているが
ローカル用も配布しているので、それを用意しておけば良いだけだし
時間については、待たされる時に飯食ったり外出したりすることも多いので
必ず3時間で終しているわけではないが、ずっとパソコンの前にいて、本でも読みながら
パソコン側の応答があったらすぐに次の作業に移れば確実に3時間以内で終る
再インストール時間を計ったというか、用事があって、3時間弱で終らなかったら
帰ってきてから続きをやろうと思っていたら、その用事の前に終せたってことがあったので間違いない
それと、君の知り合いがどんだけヘタレなのかは知った事じゃないので、紹介してくれなくていいよ
>>846 うん、ソフトのインストールと設定復元をバッチスクリプトで自動化するなど、かなり簡単にできるようにしてる
良かったね。
嫉妬しすぎだろw
>>847 用意するには落とす必要があるんじゃないの?
まっさらな仮想環境を用意している俺に隙はない
>>850 アップデートが出た時に、ローカルアップデートファイルをDドライブに落としてインストールする
すると、今後CドライブのOSをクリーンインストールしても、Dドライブには前回使った
ローカルアップデートファイルが残っているので、改めて落とす必要なんて無い
たまたま再インストールを始めた直後に最新版が公開されるという罠が…
その分だけなら+数分程度じゃね?
855 :
829 :2013/08/22(木) 22:15:11.92
あー、なんかゴメンな
俺が
>>825 と
>>828 を同じ人だと思っちゃったのが原因みたいだね
無駄なソフトのインストール自慢は誰も興味ないしスレチなので止めてくださって結構です
ホント申し訳ない
精一杯の負け惜しみ、乙
857 :
名無しさん@そうだ選挙にいこう :2013/08/22(木) 22:23:51.20
バカが盛るからこんな事になるんだよ。ほんと使えねーな。
【1 OSの種類 .】 Windows XP
【2 Excelのバージョン 】 Excel 2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 不可
重複しない整の乱数を返したいと思いまして
検索して下記のサイトに辿り着きました。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1053921050 作業列を二つ作り一つにRAND、もう一つにRANK関数を
用いるというもの何ですが疑問に思いました。
RANDによる乱数は重複する事はないんでしょうか?
確率は低そうですが重複する確率は0じゃない様に思って質問させて頂きました。
もし、重複するなら他の方法を教えて頂ければ幸いです。
>>858 「乱数」ってのは「重複する可能性のある物」だから、そもそも「重複しない乱数」というのが定義に反している、矛盾している
敢えて言うなら「乱数から重複を取り除いた物が欲しい」などのように書くべき
もちろんExcelのRANDも重複する
ただしExcelのRANDは本物の乱数じゃない
人間には乱数のように見えるけど、実際には一定の計算式で計算した結果なので
式を知っていれば次の数字は100%予測できてしまう。これは乱数の定義に反する
ユーザーは知らないふり、気付かないふりをして乱数だと思い込むのがお約束になっているだけのこと
で、元の質問に戻るけど、「乱数から重複を取り除いた物が欲しい」のなら、
「RANDで数字を出し、重複があったらやり直す」とか、
範囲が決まってるなら先に数列を用意して、RANDを使って順番を入れ替えていく、などの方法がある
ついでに言うと、その知恵遅れの回答、乱数を100倍する必要がないしAの前の$も必要ない
整の乱数って整数の書き間違い?正の数?どっち? いくつ欲しいの?
>>859 回答ありがとうございます。
やはりRANDも重複しますよね。
excelに完全な乱数を期待すること自体が間違いなんですね。
>>860 整数の中からダンダムで数を取り出すという意味でした。
数字の範囲と個数は?
>>863 1〜10の正数の中から重複しない5個を取り出したいです。
>>864 知恵袋の方法で10まで出してから、上から5個を採用、とか
>>865 その方法でもRANDが重複した場合には結局同じじゃないですか?
>>858 エクセルのRAND関数では65535だっけかな?それぐらいしか作れない
で、リンク先はA列が間違っている
=INT(RAND()*100)+ROW()/1000
これなら100%重複することがない。
1000を超える個数でやりたいなら最後の1000を100000なりなんなりにしてくれ
ただし、あまり多くなると今度は小数誤差(エクセルの仕様。詳細はググってね)が発生するから
=INT(round(RAND()*100000,-3))+ROW()
こんな感じになったりしてめんどくさい
>>867 ありがとうございました。
解決致しました。
> excelに完全な乱数を期待すること自体が間違いなんですね。 そもそも、君の求めているものが「自分の目的通りの数列」であって「乱数」じゃない Excelの乱数は完全な乱数ではないけど、重複は完全な乱数でも出るので 君の望みに合わないのは、Excelの乱数の不備ではなく、 乱数という物を理解していないことによるもの
870 :
名無しさん@そうだ選挙にいこう :2013/08/23(金) 09:53:37.88
>>870 どこのセルにどういう数値があって、どういう結果を出したいか言ってくれればその式を1から作るよ
なんか根本的にやり方が間違ってる気がする
>>870 スクリーンショットや図解AAを駆使して何をどうしたいか説明して
みればどうよ?
>>867 それRANDが重複した際に
行の数が大きい列程、RANKの順位が上がりやすくなるじゃん
874 :
名無しさん@そうだ選挙にいこう :2013/08/23(金) 13:05:30.74
>>871 まずB列には1から3までの設備番号が順不同に並んでいて、D列には各設備での製品の処理枚数が入っていてさらにF列には各号機で処理した枚数からマイナスとなる不良数が入っている。
これが各行にだんだん増えていくという表があり、ここからある一定でない連続した範囲での設備別の合計処理枚数を出したいのです。
1号機 200枚
2号機 100枚
3号機 150枚 といったふうに…
この計算をその都度行う方法はわかるのですがそれでは凄く手間がかかるので例えば対象の範囲をマウスでアクティブな状態に
することでA1〜A3セルに合計が簡単に表示されるような数式がしりたいのです。ちなみにC列、E列にはこの計算には無関係な情報が入っています。
おそらくマクロを使わないと実現できないような気がしますがまず手順がさっぱりです…
ある連続した範囲って日付?ピボットテーブルでいんじゃないの
876 :
名無しさん@そうだ選挙にいこう :2013/08/23(金) 13:35:59.61
日付というか三交代勤務の一勤で集計、二勤で集計というような勤務ごとの範囲です。ピポッドテーブル難しそうですね‥調べてみます。
じゃあその勤務区分も列に入力しておかないと ピボットでなくても集計できない
>>867 >エクセルのRAND関数では65535だっけかな?それぐらいしか作れない
嘘も程々にしとけよ
ふ〜(^▽^)
お前等、頭悪いなw 乱数から重複を除いた物を抜き出す簡単な方法があるだろ IFとCOUNTIFとRANDを組み合わせればいいだけw
881 :
名無しさん@そうだ選挙にいこう :2013/08/23(金) 15:59:11.05
>>881 >俺の言ってることが嘘ってソースあるのー?
ソースなんていらないだろ
RANDで5桁を有に超える少数を扱えるのに
65536個しか乱数を作れないってなんだよwww
65536種類の系列って書いてあるとおり
Excelで扱える列数の数は最大65536って事だろ
A…Z…列はA…Z…65536までしか扱えないとういうこと
>>867 >=INT(RAND()*100)+ROW()/1000
>これなら100%重複することがない。
もう一つ突っ込ませてもらうと
それをやっても重複する可能性は全く変わらない。
列番号を足したものが他と重複すれば結局意味が無い
やるんならROUNDDOWNをつかって
=ROUNDDOWN(INT(RAND()*100000),0)+ROW()/100
としないとね
884 :
名無しさん@そうだ選挙にいこう :2013/08/23(金) 17:28:09.03
>>881 >>882 どっちも誤り。
系列とは65536種類の乱数の出し方と思っていればいい。
最終的な乱数の数は16777216個。
886 :
名無しさん@そうだ選挙にいこう :2013/08/23(金) 17:56:17.70
自己紹介、乙w
間違えてVBA質問スレに書いてしまいましたのであちら取り消しの上こちらに失礼します シートAに以下のようなものがあるとします A B 1/1 10 1/2 20 1/3 30 1/4 40 1/5 50 このとき別のシートBに日付を2つ入力し、その2点間の平均を求める関数を書きたいです (例えばシートBのA1に1/2、A2に1/4と記入したらA5には20,30,40の平均=40が出力される) それについて以下のように考えました =AVERAGE(INDIRECT(ADDRESS(MATCH(シートB!A1,シートA!A:A,0),2,4,1,"シートA")):INDIRECT(ADDRESS(MATCH(シートB!A2,シートA!A:A,0),2,4,1,"シートA"))) または =AVERAGE(INDIRECT("シートA!A"&MATCH(シートB!A1,シートA!A:A,0)):INDIRECT("シートA!A"&MATCH(シートB!A2,シートA!A:A,0))) このとき、AVERAGEの真ん中にあるコロン( : )が コンマ( , )の場合動きましたがコロンの場合どうしても動きませんでした 上記の方法では2点間の範囲という選び方はできないのでしょうか? また、このほかにもっと良い方法ありましたら教えていただければ幸いです
シートA a b 1月1日 10 1月2日 20 1月3日 30 1月4日 40 1月5日 50 シートB a b c 1月1日 1月2日 15 1月3日 1月3日 30 1月2日 1月4日 30 1月4日 1月5日 45 1月5日 1月1日 30 c1に =(VLOOKUP(A1,a!$A$1:$B$5,2)+VLOOKUP(B1,a!$A$1:$B$5,2))/2 後はc5までオートフィル
あっそw
?
893 :
名無しさん@そうだ選挙にいこう :2013/08/24(土) 15:01:10.63
>>877 さん
ピポッドテーブルで正解でした!ありがとうございます。さらに質問があります‥B2:F10の範囲で集計したピポッドテーブルに適応セル範囲を変更させてB11:F20の範囲を当てはめたいのですが方法がわかりません。そんな事できますかね?
集計したい行とそうでない行を区別する列をつくらないと集計できない
895 :
名無しさん@そうだ選挙にいこう :2013/08/24(土) 21:28:17.74
基礎を習ってない人って結構多いんだね。
職業訓練でただで習っちゃった♪
>>893 セルの選択範囲を変更するのではなくて、
一行ずつをグループ化してアウトラインにして、欲しい行だけを表示するってのはいかが?
>>889 日付が文字列でなくシリアル値なら
=AVERAGEIFS(A!B1:B5, A!A1:A5, ">="&A1, A!A1:A5, "<="&A2)
excel2003とか後出しは無しね。
Excel2000を使ってます。 VBA不可でお願いします。 作業列を用いずに、例えば1〜10の間の中からランダムで 一つ正数を取り出したいんですが、この時数が大きくなるほど出づらいというようにしたいのです。 良い方法を教えてください。 =(RAND()+RAND()+RAND()+RAND()+RAND()+RAND()+RAND()+RAND()+RAND()+RAND()) これであってますかね?
出にくいってことは確率を小さくすればいいんだろう 通常はどの数字も10%だから10の確率は1%にするとか。そういう式をつくればいいよ
>>898 例えばどんな式になりますか?
IFを複数組合せたり、作業列を作らずに
できるだけ簡単に式で対応したいと思ってます。
ご指導お願いします。
1なら50% 2なら30%とかにしたいんじゃないの? IF文の入れ子じゃないと無理だよ
ありがとうございます。 やはりIFを入れ子にしないとダメなんですね。。。 数が1から10ならそれでいいですが、 例えば1から1000で確率を細かく設定したい場合は式が長くなりすぎて 入らないですよね? その場合方法はないんでしょうか?
作業列使うが、例えばX列に 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% として =MATCH(RAND(),X:X,1) 1を大きくしたいなら10%?30%とか調節しる
文字化けした ?じゃなくて矢印→
>>902 ありがとうございます。
今回、作業列を使う方法をで対応させて頂きます。
求めたいのは10%とかの数値じゃなくて、その確率で得た1−10の整数だろ
>>907 1の出る確率を上げたい場合、
作業列で10%の数を増やして調整するって事でしょうか?
畜生!騙されてた事に気づいた。。。。 でもMATCHって新しい関数を覚えたのでよしとします。
たとえば1を50%、2を30%、3を20%で出したいときはこんな方法がある A B 1 1 2 1 3 1 4 1 5 1 6 2 7 2 8 2 9 3 10 3 =VLOOKUP(INT(RAND()*10+1,A1:B10,2,0)
>>910 VBA可ならSelect caseで、乱数のとる値の範囲を割合に応じて配布すればいける
なと思ってたがそれをシート上に展開してるわけか
>>910 ありがとうございます
その方法とIFを組み合わせれば1から1000でも対応できそうですね。
y=ax^2使えばxが大きいほどyが拡散して 実質xとyが少ない側が多くなる
int((RAND()*10)^2/10)とか
>>908 なぜやってみない;
rand():0 から 1までの乱数
0%: rand()が0から0.1までだったらマッチ、このとき1が帰る →1が出る確率10%
10%: rand()が0.1から0.2までだったらマッチ、このとき2が帰る →2が出る確率10%
20%: rand()が0.2から0.3までだったらマッチ、このとき3が帰る →3が出る確率10%
90%: rand()が0.9から1までだったらマッチ、このとき10が帰る →10が出る確率10%
10%のとこを30%にしてみ
0%: rand()が0から0.3までだったらマッチ、このとき1が帰る→1が出る確率30%
>>902 のX列を
0%
30%
50%
65%
75%
83%
88%
91%
95%
98%
とでもしたら
1: 30%
2: 20%
3: 15%
4: 10%
5: 8%
6: 5%
7: 3%
8: 4%
9: 3%
10: 2%
>>914 指数部分を分数にする時はカッコがいるぜ
int((RAND()*10)^(2/10))
と思ったらそういう意味じゃなかったのか、スマン
>>916 すいません。
やっと意味が分かりました。
%の間を開けて確率を調節するって事だったんですね!
ありがとうございます。
>>889 「数式の検証」使ってみ。なぜコロンがだめでコンマでいけてるかわかるよ。
シート名違うけど、一つ目の式を修正するならこれでいけるよ。
=AVERAGE(INDIRECT("Sheet1!"&ADDRESS(MATCH(A1,Sheet1!A:A,0),2,4,1)&":"&ADDRESS(MATCH(A2,Sheet1!A:A,0),2,4,1)))
コロンも含めてINDIRECTしてないからあなたの式は最終的にAVERAGE(20:40)になってます。こういうのは「数式の検証」使えば理解しやすいよ。
やべ勉強が勉教になってる恥ずかしい死にたい
日時をテキストで扱うとか糞
ふぇぇわかんないよぉ
leftで2取って配列数式って出来たっけか。無理か
一般的な話をすればSUMPRODUCTは完全一致
「4月」という文字列に完全一致するB列のセルはない
部分一致させるには
>>926 等の他の関数を使って切り出してやる必要がある
また、
>>924 の言うように日時として扱えばSUMPRODUCTだけでいけるはず
寧ろ文字列を数式に変換する関数や方法方ってない? 例えば =A1+A2 って文字列を数式にすることってできる?
>>927 物凄く分かりました!
テキストではなく日時を表す方法、leftをググってきます!
>>931 おお、こんなことができるんだ!
ありがとう。
そ、そうか ちなみに逆はformulatext関数とか言うやつで2013から導入されたらしい 俺はどっちも使わないけど、需要あるんかな
ランダムでセルを選んでそれを更に式に組み込むなんて使い方ができる
子供用に数学の問題を作って後から解答する時に使える
どういたしましゅた(^▽^)
本人、勘違いしてるんだから、聞いてもしゃーないよ
>>941 俺にはどちらも似たような内容にしか見えない
不安ならcountifで常に同じものが2つあるかどうか監視するといいんでない
943 :
名無しさん@そうだ選挙にいこう :2013/08/26(月) 21:03:35.52
=AVERAGE(SUMPRODUCT((RIGHT(A4:A22,4)="ブレンド")*(LEFT(C4:C22,3)="保管庫")*(D4:J22)),((SUMPRODUCT((RIGHT(A4:A22,4)="ブレンド"))))) ブレンドを含むコーヒーの在庫数の平均を出すときに 知ってる関数 AVERAGE SUMPRODUCT LEFT RIGHT だけを使って平均を出しました プロの皆さん どの関数を使えばスマートに表すことができるんですか! そしてどうやって関数覚えていけばいいかもアドバイスくださいお願いします
>>943 あぁ、質問する時は>>1-
>>10 ぐらい読もうな。あとテンプレ使え
それとどの列にどんな内容が入ってるか分からん。全部教えてくれ
最後に、スマートに出す必要は特にない。間違っていなければそれでok。
重いとか結果がおかしいなら見るよ
あともしかするとピボットテーブルを使ったほうがいいかもしれない。使わなくていいかもしれない
945 :
名無しさん@そうだ選挙にいこう :2013/08/26(月) 22:00:08.71
>>944 申し訳ありませんでした・・・
【1 OSの種類 .】 Windows7 64bit home
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
スクリーンショットになります
ピボットテーブルは関数をある程度覚えて使ってみたいです 理解するまではフィルタもあまり使いたくありません
http://www.dotup.org/uploda/www.dotup.org4438052.jpg できればスマートに表せるようになりたいです
こういう泥くさいコード書いていけばスマートなコードかけるようになれますか
みなさんはどのように覚えていったのですか?
できれば課題というか道のりを知りたいです
>>945 平均って何のどういう平均?
D25はD24を2で割っただけに見えるんだけど
イマイチその数値になる根拠が分からない
単純に合計の列を足したほうがいい気がする
949 :
名無しさん@そうだ選挙にいこう :2013/08/26(月) 22:47:31.58
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 セルA1:300 セルB1:800 セルC1:=A1+B1 セルC1でA1とB1の合計を出す時、上記の演算にしてます A1とB1の両方に数字が入力された時のみC1で合計値が出る様にするには どうしたらいいですか? 私はMOS2010でSPしか持ってないレベルです。
え、間違えてるの…よくわからないっす…エクセルよくわかんねぇっす
>>943 の後半、
((SUMPRODUCT((RIGHT(A4:A22,4)="ブレンド")))))
これの結果はどうやっても0にしかならない。
>>945 で、平均は多分これが正しいと思う。知らんけど
=(SUMPRODUCT((RIGHT(A4:A22,4)="ブレンド")*(LEFT(C4:C22,3)="保管庫")*(D4:J22)))/SUMPRODUCT((RIGHT(A4:A22,4)="ブレンド")*(LEFT(C4:C22,3)="保管庫")*(D4:J22>1))
>>948 合計は合ってるけど色塗ってるとこが間違ってる
>>950 エクセルが分からんなら自分で計算しないと。
足し算と平均出すぐらいは電卓で出して、合わせた方がいい。
さすがにそれもできないなら、悪いけど死んだほうがいいと思う
>>949 =IF(0<COUNT(A1:B1),A1+B1,"")
ごめん 訂正 =IF(COUNTA(A1:B1)>1,A1+B1,"")
954 :
名無しさん@そうだ選挙にいこう :2013/08/26(月) 23:02:45.59
>>951 泣き事言ってすみませんでした
今書き起こしてもらった数式を検証して理解しているところです
本当に有難うございます!
>>954 ブレンドって文字の判定をしたいんなら普通に作業列を作ればいいのに
>>953 ありがとう
そういう組み合わせは全く浮かばなかった
>>958 まだ勉強し始めたばかりなんで手当たり次第にテンプレ落としては自分で問題を作って
この関数はどんな事が出来るのか、この関数と組み合わせて見ようとか
そういう事をしてるだけです
過程しか考えてないです
高校卒業までにオフィスマスターになりたい
(なんだそりゃ!)
まあ、がんばれ
あの、本当に答えていただきたいんですけど、皆さんはどういうやり方で関数を覚えたんですか? 今のやり方だとすぐ壁にぶち当たるんです
仕事で使ってたら誰でも覚える。一日8時間近く使うわけだからな 小数誤差なんて見本とにらめっこしててもまず気づかない。 それに、全部覚えても仕方ないよ。dsumとか個人的には全然使わない、グラフも棒グラフぐらいしか知らん。データの整形ばっかりやってる。 MOSなんて絶対無理。 何がいいたいかって言うと、使う分野を極めた方が役に立つってことだ。 試験に受かりたいだけなら過去問延々やってればいい。
必要なものは以下の3つ ・日本語や基礎数学に対する理解力 ・すぐに安直に匿名掲示板等での他人頼りに逃げない根気 ・資格みたいな、それだけでは無意味なものではなく、 それを以て具体的に何を成し遂げたいのかという目標や熱意 以上
>>962 壁にぶち当たったらここにまた来ればいいさ
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 A1〜A5にはどの計算式を使うか B1〜B5には計算させたい数値 C1〜C5にそれぞれ別の計算式を入れて D1〜B5に計算結果を表示させたいのですが 具体的には下図のABを入れるとDが出るようにしたいのですが Cの式の[?]とDにはどんな式を入れたら良いのでしょうか? A B C D 1 C1 12 [?]*3+2 38(←B1をA1にある、”C1”の*3+2で計算した結果) 2 C1 5 [?]*2+6 17(←B2をA2にある、”C1”の*3+2で計算した結果) 3 C4 6 [?]*3.5+5 6(←B3をA3にある、”C4”の*1で計算した結果) 4 C2 8 [?]*1 22(←B4をA4にある、”C2”の*2+6で計算した結果) 5 C5 2 [?]*1-1 1(←B5をA5にある、”C5”の*1-1で計算した結果)
変な方法だけど文字列を数式扱いにするのはvba抜きだとこれぐらいしか無い、と補足しておく
>>966 数パターンの数式の結果をだすだけなのに、見た目に分かりにくく、文字列を数式に変換するのにも手間がかかる
数式群の数がそんなにないのであれば、単純に横1列に全数式の解を出す
値 *3+2 *2+6 *3.5+5
12 38 30 47
5 17 16 22.5
シンプルでわかりやすく、データの追加、管理もしやすい
どうしても最初の方法でやりたいなら、文字列の数式をsubstituteかなんかでオペレータごとに分解して、値を代入して計算させる。
しかもその数式はA列のアドレス指定をindirectしてmatchさせて指定しておくと、、めんどくせ;
【1 OSの種類 .】 Windows xp 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 A B C 1 名前 特技 趣味 2 鈴木 剣道 音楽 3 山田 数学 映画 4 高橋 物理 剣道 5 小林 国語 料理 6 7 剣道 こんな感じで名前、特技、趣味の表がある時、 A7に入力された文字と一致する、趣味あるいは特技を持つ者の名前を B7に並べて表示させたいです。 「鈴木、高橋」というように表示させる方法を教えてください。
数式ってのは1つの結果を返すものなので 不定件数の結果を返そうとすると、ものすごく面倒になる 出来ないことはないが、数式でやるのは面倒すぎ不適切すぎなので 冗長な数式書くのが好きな人にパスする フィルタやVBAなどの適した手段で結果を出せれば良いってならアドバイスするが
>>972 VBAを使えない環境でも使えるものを作りたいです。
フィルタを使った方法をアドバイスお願いします。
E列を作業列としてE1に =IF(COUNTIF(C3:D3,$B$8)>=1,B3,"") と入れてE6までオートフィルしてC8に =+E2&"、"&E3&"、"&E4&"、"&E5&"、"&E6 と入れる方法を考えたんですが 「、鈴木、、高橋、」となって読点が不格好になってしまい 困ってます。 この方法の解決策でも分かる方がいたらアドバイスお願いします。
975 :
971 :2013/08/27(火) 15:49:19.75
すいません。
>>974 の読点の乱れは事故解決しました。。。
他によい方法があったらアドバイスお願いします。
>>974 D2=IF($A$7=B2,A2&",","")
E2=E1&D2
下にオートフィル
最後にleftとlenを使って最後の点を取り除く
b7=left(e7,len(e7)-1
ピボットテーブルで
979 :
名無しさん@そうだ選挙にいこう :2013/08/27(火) 22:53:19.37
数値(時刻)を読み込んだら、その数値を返し、アルファベットを読み込んだら、それにあうVLOOKUP関数を返す。 誰かで着ませんか?
日本語でおk
久しぶりに強力なエスパーの出番が必要そうだ
>>979 a1=if(istext(vlookup(この中は知らん)),vlookup(この中は知らん),a1)
こういうことがしたいのだと予想
>>959 解りました
では屏風の中の虎を追い出して下さい
フン捕まえてご覧にいれましょう
984 :
名無しさん@そうだ選挙にいこう :2013/08/28(水) 01:47:34.99
>>983 すみません・・・
平均を出したかったのはそうなんですが、なんの平均が欲しかったのかと言われると
AVERAGEIFSやSUMPRODUCTで何ができるのか勉強していただけなので うまく答えられませんでした
日本語が変ですみませんでした
【1 OSの種類 .】 Windows ビスタ 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 Excelを使って自動的に文章を作りたいです。 例えばA1に「男」B1に「7月」C1に「23時」と入力されてる時に こんばんは。 俺の趣味はゲームです。 しかし、昨日は海水浴に行ってきました。 A1の性別を判定して第一人称→「俺」 B1の季節を判定して→「海水浴に行ってきました」 C1の時間を判定して→「こんばんは」 こんな具合に一行目に筆者と、日時の設定をすると 自動的にランダムで設定に合った自然な文章を作れるようにしたいです。 できるだけ長文で自然な文章を作る方法を教えて下さい。
>>985 vbaなしのエクセル単体では無理すぎる。
人工無能でググった方がいい。多分lispを使うことになるが、vbaも使えないんじゃ無理。諦めよう
ありがとうございます。 VBAをまなべばいいのですね。
あ
き
990 :
名無しさん@そうだ選挙にいこう :2013/08/28(水) 17:52:34.49
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 MOS2010SP資格保有程度の知識しかありません B1に文字を入力した時に、A1へ日付が自動入力されるようにするにはどうしたらいいですか? TODAYだとデータを開くたびに現在の日付へと自動更新されてしまうので困ってます
そういうのはVBA使わないと無理じゃないかな。 VBA嫌なら手作業でA1選んで[Ctrl]+[;]とか。
あれ、スペシャリストはVBAやらないんだっけ? VBAはその上のエキスパートからか?
993 :
990 :2013/08/28(水) 19:05:18.50
ワードのExpで少しVBAやったけど、範囲が狭かったから忘れてしまった。 最近エクセルExpの勉強始めたばかりだから、VBA使えるようになるにはもうちょっと時間かかりそう。 VBAで出来るのであれば、回答ください。 明日参考書見て試したいです。
>>990 a1ha tekito-ni syosikisetteisiteoite
Private Sub Worksheet_Change(ByVal Target As Range)
If (Target.Row = 1 And Target.Column = 2) Then
Cells(1, 1) = Now()
End If
End Sub
う
め
ら
999 :
銀河鉄道 :2013/08/28(水) 21:00:43.73
999
(^▽^)
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。