Excel総合相談所 132
レス数が950を超えています。1000を超えると書き込みができなくなります。
▼━質問テンプレ (出来れば使ってね) ━━━
【1 OSの種類 .】 Windows**
【2 Excelのバージョン 】 Excel**
【3 VBAが使えるか .】 はい・いいえ
【4 VBAでの回答の可否】 可・否
▼━関連スレ━━━━━━━━━━━━
前スレ
Excel総合相談所 131
https://find.5ch.net/search?q=excel
Excel VBA 質問スレ Part51(1000到達済み)
https://find.5ch.net/search?q=excel+vba
【質問不可】Excel総合相談所スレの雑談・議論スレ4
https://find.5ch.net/search?q=excel+%E3%80%80%E7%9B%B8%E8%AB%87%E6%89%80 >>844
いや、843は問題がある
大文字かどうかの判別ができてない =AND(
LEN(TRIM(MID(A2,4,4)))=4,
TEXT(VALUE(MID(A2,4,4)),"#")=MID(A2,4,4),
TEXT(INT(MID(A2,4,4)),"#")=MID(A2,4,4),
TEXT(ABS(MID(A2,4,4)),"#")=MID(A2,4,4)
)
>>840が一番だよパトラッシュ・・抜け道あるかもわからん =AND(LEN(MID(A1,4,4))=LENB(MID(A1,4,4)),ISNUMBER(MID(A1,4,4)*1)) =AND(LENB(MID(A1,4,4))=4,ISNUMBER(MID(A1,4,4)*1)) >>851
よく気づくねぇこんな事。内部的にどういう処理してるんだろ
>>852
AAZ0001
でだめだった
>>853-854
それは
AAA-234
でも通るって上に出てるじゃん
正規表現使いたい・・・使いたくない?
まぁあんまりテクニカルな事すると漏れが出てくるね >>855
マイナス問題はabs関数に入れるっていうのはどうかな? >>856
どうかな?と言われても。検証は自分でやって
そこまでテクニカルにすると逆にしんどくなるだけだとは思う。俺ならしない 今気づいたけど、840も問題あるね
数字が5文字以上でも○になる >>858
あーlen()いるのか
もうやだー
=
IFERROR(
IF(
AND(
len(a1)=7,
AND(CODE(MID(A1,1,1))>64,CODE(MID(A1,1,1))<91),
AND(CODE(MID(A1,2,1))>64,CODE(MID(A1,2,1))<91),
AND(CODE(MID(A1,3,1))>64,CODE(MID(A1,3,1))<91),
AND(CODE(MID(A1,4,1))>47,CODE(MID(A1,4,1))<58),
AND(CODE(MID(A1,5,1))>47,CODE(MID(A1,5,1))<58),
AND(CODE(MID(A1,6,1))>47,CODE(MID(A1,6,1))<58),
AND(CODE(MID(A1,7,1))>47,CODE(MID(A1,7,1))<58)
),"○","×"),
"×") 文字列判定なんて普通は1行のもんで
飲み会二時間盛り上がれそうな奴が揃ってるな >>837
作業セルを2つ作って、一つはアルファベット、もうひとつは数字を入れておく
それを使って1文字ずつfind関数に入れていって、全部足したのがエラーになるか判定する
どうかな? いいな、いっそ桁ごとに、7セル有効文字データを持つ方が好き
桁不足と全角文字入りを突破すれば行けそう 大文字と小文字の問題がなあ、無視してくれる関数があるから
UPPERして同じかどうか判定するか
AAA〜ZZZはセルの列アドレスに変換してどうにかならんかな
あと、元の質問はB列の判定だから、サンプル上げるやつはA1じゃなくてB1と書いた方が
>>859
ANDを入れ子にする必要はないだろ 後ろ4文字が数字かどうか
思ったほど短くならんかった
=IFERROR(RIGHT(B1,4)=TEXT(RIGHT(B1,4)*1,"0000"),FALSE) =IF(AND(
LEN(B1)=7,
CODE(MID("AAA0000",{1,2,3,4,5,6,7},1))<=CODE(MID(B1,{1,2,3,4,5,6,7},1)),
CODE(MID(B1,{1,2,3,4,5,6,7},1))<=CODE(MID("ZZZ9999",{1,2,3,4,5,6,7},1))
),"○","×")
=IF(IFERROR(AND(
LEN(B1)=7,
FIND(MID(B1,{1,2,3},1),"ABCDEFGHIJKLMNOPQRSTUVWXYZ"),
FIND(MID(B1,{4,5,6,7},1),"0123456789")
),),"○","×") 865の下段が完成形ぽいね
より短くするならfind()をひとつにできるけど、それだと可読性が下がる 何がすごいってめちゃくちゃテクニカルなのに可読性が全く損なわれてない事
(もちろん配列が読める前提)
正規表現なしでここまで出来るとは恐れ入った >>866
これは配列定数だよ
配列数式は
{=max()}
みたいに全体が括弧でくくられる奴 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2017
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
VBAについての相談です。
『現在の選択セルがA〜C列の、何れか1セルである』 時に、
キーボードのZ, X, C のそれぞれのキーを押した際、通常の文字入力を行わずに
『Zキーを押したら現在選択中のセルと同じ行のA列のセルを選択し、"〇"を入力して1つ下のセルを選択』
X、C についても同様に
『Xキーを押したらB列のセルに"×"を入力して1つ下に』
『Cキーを押したらC列のセルに"△"を入力して1つ下に』
としたいのですが、どういうコードを書けばいいのでしょうか?
以上、詳しい方ご教授ください・・・ 単純な1キーの監視はAPI使わないと無理じゃないかな
[ctrl]+[x]とかでいいならOnKeyメソッドでいけるんじゃない
位置判定はActivecellのaddressやcolumnで 【1 OSの種類 .】 Windows10と7
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
教えてください。
一般的に、モジュールの名前やフォームの名前を、全角の日本語にするのはリスクがあるのでしょうか?
現在、module1などのデフォルト名と、フォームはF01などの半角英数字のみの名前にしているのですが。
数が増えてくると半角数字+日本語という名前にしたいな、と思っています。 ぶっちゃけ自由ですが
1に判りやすさ 2に使いやすさ 3に判りやすさ
mod各種定義 frm01メニュー画面 frm11処理1メイン画面 mod○○系演算処理
VBAコード内で頻繁に使うのであれば、英字オブジェクトのほうが良いですかね、
PG畑の人は育った畑のネーミングルールになると思いますが
プレフィクスに前3文字で種類ぐらいあるといいかな
先頭数字は無理です >>872
シートモジュールに
Sub Sample2()
Application.MacroOptions Macro:="Sample1", ShortcutKey:="j"
End Sub
標準モジュールに
Sub Sample1()
MsgBox "aaa"
End Sub
これでctrl+Jでメッセージボックスが出る
どうでもいいけどこれ、「1」「2」「3」
とか入力してあとで置換した方が早くない??
作ってる途中で無意味な気がしてきたんだけど
>>875
一年ぐらい前。accessのVBAで、functionかフォームの
先頭の文字が日本語だとマクロが動かなくなるという絶望的なアプデがあった
他の人が使うファイルなら、避けれるなら避けたほうが良いと思う
自分が使うものならその場で書き換えればいいだけなので、まぁなんとでもなるからどっちでも良いと思う 自分で入力するリストとかは、○と×はoとxで入力しちゃうな。 あとはooやmやら決めて
キー入力に余計なことやると、文字入力しても影響受けるからお勧めできない 入力は0と1
後は書式設定で反映させるってのをやったことがあるけど、特に意味が無いことに気づいた >>881
sumとかsumproductに使えるからたまに使う 【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2013
【3 VBAが使えるか .】 いいえ (上司に相談したら駄目だと言われた)
【4 VBAでの回答の可否】 否
口で説明するのが難しい場合、グーグルのスプレッドシートを貼り付けても大丈夫でしょうか? >>884
ありがとうございます
https://docs.google.com/spreadsheets/d/1xhIJYvPHB1Th8T28FMbjN527rmZhTbz_lsW-yVEtUUE/edit?usp=sharing
シートを跨いで、データを入れて、最終的には表にしたかったのですが
参照方法を忘れてしまい、処理が出来ません
条件
・実際には1万件近くのデータがあり、来月には更に1万件、来年の今頃にまた1万件来るので
データのシートに情報を投げ入れて、少し弄る程度で表が横に増やせるようにしたい
・該当する月に取引がない場合は、0を入れたい(nullでも可)
お願いします sumproductってテーブルを参照できましたっけ? >>883
よくわからんけど
> 【3 VBAが使えるか .】 いいえ
> 【4 VBAでの回答の可否】 否(上司に相談したら駄目だと言われた)
じゃねーの? >>885
sumifsを使う。所要時間10分
http://fast-uploader.com/file/7096969940696/
ってか、ピボットなら一瞬でできる。所要時間1分
後、シート名風流でいいね。
うんこちんこ書いてる無能には見習って欲しい >>888
自力でやれそうです! ありがとうございます! sumifs、完全に忘れてた…… >>878
エクセルでも起きたよ。ファイルが破損して完全に死ぬから古いエクセル残してない人は積んだ。
ちなみにモジューム名の末尾全角がアウト 【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2013
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
すみません、式を教えてください。
例えば商品があって
A列 B列
商品 合計
にんじん 0
バナナ 0
りんご 0
味噌汁 0
にんじん 1
団子 0
バナナ 1
にんじん 2
以下同じように続く・・・
というように同じ商品が出たら合計が1つずつ加算される関数を教えてください。
最初は0にしたいんです。次が1で同じのを入力すれば1ずつ増えるようにしたい。
よろしくお願いします。 >>891
B2=COUNTIF($A$1:A1,A2) >>893
B2セルに
=COUNTIF($A$1:A1,A2)
を入れるって意味DAYO >>894
上手く行きました。
ご親切にどうもありがとう!! >>890
も・・モジュール名だけだよな、きっと、
personalのプロシージャはめっちゃ日本語だらけだ。 mac背景色赤()とか
モジュール名は気を付けよう。 普通に使う
無理に下手な英語やローマ字にするよりよほどわかりやすい 漢字で書ける内容なら文字数(バイト数)が減って行が短くできるのが日本語のメリットだな
カタカナで書くぐらいなら英語使うけど ▼━質問テンプレ (出来れば使ってね) ━━━
【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
A1の文字列の中で部分一致vlookupで別表を使いC1に表示する文字列を変えてます
例 A1:係長 C1:賞与係長級
しかし、昇格が有った場合、その時のみ
A:1 係長→課長 C1:賞与課長
になるようにしたいです。
vlookupで使う表には係長も課長もそれぞれあるため、係長で一致して引っ張ってきちゃいます
条件付き書式のように上位、下位の優先度みたいな感じの設定は出来ないんでしょうか?
もしくは「部分一致で2つ以上マッチした場合、後者・2番目を使うとかできませんか
現状A1を分けることは出来ません >>901
たぶん文字どおりa1に係長→課長と入力されていて、
課長を検索値にしたいってことかと思われる >>906
役職ついてても手作業だと同じだろ?何言ってんだ? >>901
説明が拙くてすいません
>>903
ありがとうございます
仰る通りです
同じセルに設定された違う検索値が並んでる状態で
検索値を選べないのか、優先順位をつけれないのか、ということです
>>904
ありがとうございます
課長だけで特命課長、担当課長などあって、
係長も同様、主任、副主任と、とんでもないことになるんです(´Д`;)
>>905
ありがとうございます
はじめそれで作って部長に出したのですがそこを変えるなと言われました(´Д`;)
理由は謎です >>908
追記
課長だけで7つぐらいカテゴリが有ります
係長、主任、副主任と下がるごとにもっと増えていきます
他社との吸収合の歴史の名残だそうです・゚・(ノД`)・゚・。 >>908
>>905だけど、ファイル見た?
区切るって複数セルに入れるんじゃなく、計算式の途中でfind()で分解してるだけだよ
A3に「係長→課長」が入ってるけど、「課長」で検索するようになっている 最後に級 が付くのと付かないのとの差は何?
矢印がある時だけ 級 を最後につけないって事? 仕様はこうで良いのかな
・矢印で分割された最後の名称をキーにする
・賞与+キーをもとに、1番上の行を取得する。矢印の数は0または1のみ
匿名課長級があるなら課長の検索が出来ないので前付けた
課長代理もあったら、後ろもルール要る で、運用始めたらこんなデータもあるのがわかるんだよな、きっと
課長→暫定据え置き、課長→仮決定)部長級、課長(営業第一)
賞与特命課長補佐級、賞与課長補佐級、賞与課長級査定上
賞与特命課長級査定下、賞与冬課長級 >>915
ありそうで笑ったw
もう一個セパレータ作って、それを基準にするしかないかもね
賞与据え置きの場合
課長→部長☆課長 >>907
自分より年下がどんどん昇格していく情報を知るとつらいんだろ。
俺には経験が無いから分からんけど。 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2016
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】可
ものすごく大雑把で申し訳ありません。スクショしてあるような上記、横並びのデータを下記、3列の表に入れて印刷したい場合、どういった方法がよろしいでしょうか。
上記のデータは、いつも100程ありExcelデータでもらいます。そのため表だけのシートを別に作り、最終的には印刷して商品に貼り付けたいです。
https://i.imgur.com/pw3V7mJ.jpg >>918
列は縦並びのデータだよ
見本の場合、9業11列
何が100ほどあるかわからない 横1列で来るリストを
印刷しやすい数で複数行に並べたいってことでしょう
カレンダーを一覧から7日区切りに変更したいとか、あるある
折り返しの数が決まってるなら参照を用意したシートに貼り付けるだけ だが
縦並びにして行数が データ数/3てことになると・・・
手作業で三分割して行列変えて貼り付け(おいw >>918
100列のデータを34行×3列にしたいってこと?
100列固定なら
C7: =C3
D7: =D3
E7: =E3
C8: =F3
D8: =G3
E8: =H3
C9: =I3
D9: =J3
E9: =K3
…
とひたすら数式入れたシート作って、貰ったデータをC3からに値貼り付けすればいいかと 1列目:表示行が、INT((件数+2)/3)以下なら出力
データ1からOFFSETで、表示行-1分 列移動したデータ
2列目:表示行が、INT((件数+1)/3)以下なら出力
データ1からOFFSETで、INT((件数+2)/3) + 表示行-1分
3列目:表示行が、INT((件数)/3)以下なら出力
データ1からOFFSETで、件数 - INT((件数)/3) + 表示行-1分
計算式、これでいいのかな・・えーとうーんと。なんかExcel重いから作るのよろしく スレちかもしれんが1列づつ見出しつけてwordで差し込み印刷が手っ取り早い >>918
C7 =OFFSET($C$3,0,(ROW()-ROW($C$7))+((COLUMN()-COLUMN($C$7))*3)) >>918
vba可だから、条件さえしっかり提示されれば簡単そう。 >>918
Sub SubC3Right_to_C7vertical3Line()
Dim rSrc As Range '取得データ
Dim cntX As Long '1列の最大数
Set rSrc = Range(ActiveSheet.Range("C3"), ActiveSheet.Range("C3").End(xlToRight))
cntX = Fix((rSrc.Count + 2) / 3)
Dim N As Long
For N = 1 To rSrc.Count
ActiveSheet.Cells( _
7 + ((N - 1) Mod cntX), _
3 + Int((N - 1) / cntX)).Value = rSrc(N).Value
Next
End Sub 難しい質問ばかりの中、恥ずかしいのですが教えて下さい。
【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2016
【3 VBAが使えるか .】 ほんの少し
【4 VBAでの回答の可否】 可
データ入力したい行を画面の一番上にして作業をしたいのですが、
例えばC5セルを選択している時に、C5セルを画面の一番左上にするショートカットはありますか?左上が無理なら画面の一番上でもよいです。
スクロールバーのボタンをマウスで押すのが面倒なので、どなたかご存知の方がいらっしゃったら教えて下さい。宜しくお願い致しますm(._.)m >>930
・ウィンドウ枠の固定。AB列と1-4行目を非表示にすると良いかも
・新しいウィンドウを開く
どちらか好きな方で実現できるよ VBAが使えるなら、Application.Goto ActiveCell, Trueでいけるんじゃないかな
それにショートカットキー割り当てとけばいけるにはいける 皆さま早速色々教えて下さって
ありがとうございます!m(._.)m
色々試してみます!!! >>933
目から鱗!
思いつきませんでした、すごい! 教えてください。
エクセル2013です。
普段、クイックアクセスツールバーに「値の貼り付け」などを設定しており、alt+テンキーのショートカットキーで使っています。
同じようにクイックアクセスツールバーからショートカットキーで
・行列を入れ替えて値の貼り付け
・値を乗算して貼り付け
する方法はないでしょうか? >>936
alt→H→V→S→M(乗算貼り付け)
Alt→H→V→S→E(行列を入れ替えて貼り付け)
それかマクロにしてショートカット登録をするか。Undoができなくなるけど。 すいません、教えて下さい。
例えば
2018-11-09|
|朝食|Aさん
|昼食|Bさん
|夕食|Cさん
2018-11-10|
|朝食|Bさん
|夕食|Aさん
2018-11-11|
|朝食|Aさん
|昼食|Eさん
|夕食|Dさん
こういう表があるとします。
1年間続いています。
11-10の昼食がぬけてます。
ほかにも抜けているとして
その部分にセルを自動で挿入
して色付けする方法はないで
しょうか? >>938
vba使える?
あとサンプルファイルアップロードして欲しい VBA使わない方法としては
2018-11-09 朝食
2018-11-09 昼食
2018-11-09 夕食
2018-11-10 朝食
2018-11-10 昼食
2018-11-10 夕食
っていう抜けのない表をつくっておいて、そこに元の表からVLOOKUPで内容を持ってくる それは却下だな、元表の日付が各日1回しか入ってないもの た・・担当者か。 名前が別のなにかだと思ってしまった
日付に抜けが無いと仮定。
テーブルの挿入からピボットテーブルで集計
行を日付、列を食事、値をMAX(名前)。 にすると日毎の表になります >>941 おお、おれも見落とした。そういうことか すいません、再度
2018-11-09|
08:31|朝薬|Aさん
13:21|昼薬|Bさん
19:11|夕薬|Cさん
2018-11-10|
09:00|朝薬|Bさん
18:45|夕薬|Aさん
2018-11-11|
08:45|朝薬|Aさん
13:05|昼薬|Eさん
18:55|夕薬|Dさん
こういう表なんです。
何かといいますと、ある人に
薬を飲ませた時間と担当者の表です。
11-10の昼は飲ませてるですが入力
漏れです。漏れはほかにもありまし
て、それを見つけたい、と。 vba使えません。すんません。
サンプルあげかた調べます 今あげましたサンプルの最後に夕食後薬が二重で
入力してますが、それも間違いです。漏れと二重と
二種類の間違いがあるのです。 VBAなしでやれはツラたん、作れなくとも作って貰った物を使うことは出来るっしょ レス数が950を超えています。1000を超えると書き込みができなくなります。