Excel総合相談所 136
レス数が1000を超えています。これ以上書き込みはできません。
【1 OSの種類 .】 Windows**
【2 Excelのバージョン 】 Excel**
【3 VBAが使えるか .】 はい・いいえ
【4 VBAでの回答の可否】 可・否
▼━関連スレ━━━━━━━━━━━━
前スレ
Excel総合相談所
https://find.5ch.net/search?q=excel
Excel VBA 質問スレ
https://find.5ch.net/search?q=excel+vba
【質問不可】Excel総合相談所スレの雑談・議論スレ
https://find.5ch.net/search?q=excel+%E3%80%80%E7%9B%B8%E8%AB%87%E6%89%80 【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2013
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
https://dotup.org/uploda/dotup.org1909226.xlsx.html
パス:excel
相談させて下さい。
職場のシフト表なんですが、
今現在シート”1F”のようになっております
(実際には人数が3倍くらいですが)
これをシート”組み換え”のように出勤する
人だけを抽出する形にするにはどうしたら
よいでしょうか?
一々出勤する人を探すのが面倒なんですよ。 >>2
4枚のシートのあるブックを見ました。勤務指定が重複する(日が2個)のがやっかいですね。
A〜Pが従業員氏名で
早、日、公、遅、勤、1F早、1F日、1F遅が勤務指定で
1〜7は日付でしょうか。完成形は1〜31でしょ?
シートをまたぐ勤務指定もある(8/5のCと2FシートのHが1Fの遅勤務)ようで、
「組み換え」シートの方ではひとつのセルに複数の職員が並んでいる。
VBA可なら(自分ではない誰かが)つくってくれるかも、だろうけど、計算式だけでは自分には無理。
自分はボランティアとして関わっている福祉のNPOで「ヘルパー週間予定表」なるものを
VBAを駆使してつくった経験はあります。
一覧表形式(※)の情報を1件1行に展開して別シートに累積しておいて、元の表形式に再構成したり、
勤務時間やサービスの種類別に集計したりと活用してもらってます。
※横方向には1週間分、縦方向にはヘルパー数十人分の枠があり、ヘルパー一人1日あたり9件の
スケジュール(開始時刻、終了時刻、サービス区分、利用者氏名)を入力。 やっぱりVBA必要ですかー
すんません、ありがとうございます 散布図のグラフの元の表は
以下のようなマトリクスだとダメなのでしょうか
どういう持ち方じゃないとダメかわかりません。
x y z
a
b
c >>2
これって勤務形態ごとに二人まで入るの?
なんで日だけ2行? 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2016
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
ゲーム以外で、何か面白い使い方はありますか?
例えば、テレビのリモコンが壊れたから、
エクセルをリモコンの代わりに使うとか。 >>7
数独で解けない問題があるときに答えをだせるツールを作った。 以下の表を
a 2 4
b 5 1
c 3 5
下のようなグラフにするには
どのよう操作が必要ですか?
5 ⚫︎ ⚫︎
4 ⚫︎
3 ⚫︎
2 ⚫︎
1 ⚫︎
0
a b c 明日休みで今暇だから答えてあげたいけど意味が全く分からない 文字化けを直してみたけど、やっぱり意味がわからない
5 ●□ ●□
4 ●□
3 ●□
2 ●□
1 ●□
0
a b c >>7
>エクセルをリモコンの代わり
物理的な赤外線は出せない
remoってスマートリモコンおすすめ >>10
countifを使えば良さそうだけどもう少しやりたい事を具体的に行ったほうが良いと思う >>6
その日によって日勤(0800 出社)が2名欲しいときや3名欲しいときがあるんです >>7
ピッポッパと鳴らして (固定)電話をかけさせているよ 意味が全く分からない
まぁレポートも書いたことないような中学生からの質問なんだと思うが
またゲームの子かな >>15
表の形状やセルによって入力の仕方がまちまちだと表計算は難しくなる
表の見直しからやった方がいい気がする >>2,15
重複が生じない勤務指定の表なら計算式でなんとかできるんじゃないかな、と思う。
「重複が生じない」とは、
日が2個ではなく 日a、日bのように分けるとか(早、遅、公も同じ)、
階が異なる勤務指定(別シート)もすべてまとめてひとつのシートにしてしまうなどということです。
その代り、勤務指定に階の情報も含める必要があるので 1早a、2早aみたいに
細かく分けることになります。
計算式だけでちょっとつくってみました。見てもらったほうが早いので、画像をupします。パス:excel
https://dotup.org/uploda/dotup.org1911186.png.html
別シートの参照はまだ入れてません。 >>13
なんかこう、電気信号をスカラー波みたいなものに変えて…無理か。 >>21
ふむふむ、ありがとうございます
参考になります とても簡単な話なんでしょうが解決できません。
A1:AM9:00 B1翌AM9:30 C1にA1~B1の間の22:00〜5:00の時間数を抽出したいです。
17:00〜翌9:00ってのはできたんですが24時間超となるとできませんでした・・・
何度もさーせん・・・だめでした・・・教えてください。 >>24
時間軸に沿って並べると
ア 当日の09:00 A1セルに入力
イ 当日の22:00
ウ 翌日の05:00
エ 翌日の09:30 B1セルに入力
でいいんですよね? であれば、質問にあった「A1〜B1の間の」の部分は無視して
単純に上記イ〜ウの時間数の計算でいいのでは? >>27
ありがとうございます
そのように、セルを分けることができたらよいですが
膨大な人数及び入力者はそれぞれ、なので
入力してもらえるセルはA1とB1のみなんです。
せめてB1を33:30としてくれたら助かるんですが
それも望めません・・ >>28
当日の09:00 や 翌日09:30 が可変データで、当日の22:00と翌日の05:00が固定データということですか?
>>27で示した時間軸の並びが変わることもあるということ? >>29
9:00と翌9:30が可変データです。22:00と5:00は固定です。
時間軸の並びは変わらないです。 >>28
時刻として入力されたデータを「翌日の時刻」として扱いたいのであれば、+1するだけです。
当日の09:00から翌日の09:30までの時間は、=B1+1-A1 で計算できます。
B1+1 で、B1の時刻は”翌日の”という意味になるわけです。
ところが表示されるのは 0:30、そこでセル書式を h:mm から [h]:mm に変更します。
[h]は、24時間以上の時間数を 日 へ繰り上げずにそのまま表示する書式設定のこと。 >>31
ありがとうございます
+1まではわかりました。
=MAX(MIN(29/24,B1+(B1<A1))-MAX(22/24,A1),0)
これで深夜帯拾ってます。どこに+1すればよいですか? >>30
可変データであれば、時間軸の並びは変わる可能性があるってことですよ。
ア 当日の22:00
イ 当日の23:00 A1セルに入力
ウ 翌日の05:00
エ 翌日の09:30 B1セルに入力
A1セルに入力する時刻が当日の0:00〜23:59までの範囲の値をとる可能性があれば、
上記のように、A1セルの値(可変値)と当日の22:00(固定値)の並びが逆転することがある。
このとき、求めたい時間は当日の23:00〜翌日の05:00ということになる。
並びが逆転しないんであれば、当日の22:00(固定値)〜翌日の05:00(固定値)の時間は
7時間で一定、Excelの出番はない。 >>32
/24 の意味がわからない。
セルに時刻として入力したら、24時間を数字の1としてみなします。これをさらに24でわったらダメです。
時刻として入力したセルから時間数(2時間なら数字の2として)を求めたいのであれば、逆に ×24 すること。 >>34
勘違いしてた。時刻としての22、29(翌日の5時)を24で割って時刻値にしてたのね。 >>32 の式をそのまま =MAX(MIN(29/24,B1+(B1<A1))-MAX(22/24,A1),0)
改良した式 =MAX(MIN(29/24,B1+1+((B1+1)<A1))-MAX(22/24,A1),0)
>>31に
B1+1 で、B1の時刻は”翌日の”という意味になる
と書いたとおりです。 >>24
=TEXT((IF(A1>TIMEVALUE("22:00"),A1,"22:00"))+IF(B1>TIMEVALUE("5:00"),"5:00",B1),"hh:mm") すまんちょっと抜けてた
=TEXT((1-IF(A1>TIMEVALUE("22:00"),A1,"22:00"))+IF(B1>TIMEVALUE("5:00"),"5:00",B1),"hh:mm") アンティルとドゥーンを組み合わせた全く新しいループを発見した 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2019
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
もとから入っているユーザー設定リストを削除、もしくは無視させる方法はありませんか? どなたかExcelの神髄ってサイトの総合練習問題2を解説していただけないでしょうか? https://excel-ubara.com/excelvba1/EXCELVBA326.html
特にわからないところがなぜ合計を初期化するのか?
数値型への変換、指定数値以上合計に加算の3つのコードの意味です。 >>46
カスみたいなサイト。もう見るな
lngIn = strIn '数値型への変換
変換しても何の意味もない
数値型の「確認」にして数値型でなければ終了という処理にしなければならない
lngTotal = 0 '合計を初期化
これは必要
明示的にやっておいて損はない、というかやらないと大抵良くない事になる。俺も絶対にする >>36 37
ありがとう。
早速試してみたよ
しかしながら問題が・・
A1:AM9:00 B1:翌AM9:30
この時は、お二人が教えてくれたのでできました。
でも
A1:9:00 B1:18:00
という場合にも、深夜帯が無いのにC1:7:00となってしまう。
ここはC1:0:00となってほしい。
>>37
のはtextは要らなかったので消してやってみたけど、上の問題が生じます。 >>50
>>27,33 をよく見てほしい。 A1セルには当日の時刻、B1セルには翌日の時刻として書いています。
>>36にも B1+1 で、B1の時刻は”翌日の”という意味になる と書いています。
B1の時刻は翌日であるという前提なので、18:00の場合は 翌日の18時 とみなして計算してるので、
当日の9時〜翌日の18時の間の22時〜翌日の5時である7時間を返すのは当然。
B1も当日の時刻が入力されるのであれば、当日と翌日の境の時刻を明示する必要があります。
例えば、勤務開始時刻は9時、かつ
勤務開始時刻から24時間を超える終了時刻(B1)はありえない、ということであれば、
B1がとりうる当日の時刻は 9:01〜23:59 で、翌日の時刻は 0:00〜8:59 ということになります。
計算式の中の B1+1 の +1 の部分をB1の値によって +1 するかしないかを調整すればいいです。
計算式の中に2か所ある B1+1 を B1+(B1<TIMEVALUE("9:00"))*1 に変えてみてください。 >>51
当日9時〜翌日9時という24時間勤務がありうるのであれば、
>>51で書いた
B1がとりうる当日の時刻は 9:01〜23:59 で、翌日の時刻は 0:00〜8:59 ということになります。 を
B1がとりうる当日の時刻は 9:01〜23:59 で、翌日の時刻は 0:00〜9:00 ということになります。 に変更し、
>>51の最後の行は
計算式の中に2か所ある B1+1 を B1+(B1<=TIMEVALUE("9:00"))*1 に変えてみてください。 に変更します。 >>50
念のため、A1(開始時刻)はかならず当日の時刻になりますか?
ありえるのかどうかわかりませんが、深夜0時以降の開始時刻を指定した場合、
現在の計算式では、当日でのA1の時刻〜終了時刻(B1)の時間で計算してしまいます。
例えばA1に1:00、B1に6:00と入力すると、本来なら5:00となるべきところ、7:00という
計算結果になります。 >>48
返信ありがとうございました。
まだVBAをかじり出した程度なので手探り状態です。構文を段階的に学べるおすすめのサイト、書籍などはありますか? >>53
何度も詳細にありがとうございます
A1は確実に当日です。 >>53
=MAX(MIN(29/24,B1+(B1<=TIMEVALUE("9:00"))*1+((B1+(B1<=TIMEVALUE("9:00"))*1)<A1))-MAX(22/24,A1),0)
この式に変えてみましたが、c1は0:00になりますね・・・
また、これは始業を9:00に固定した場合だと思うのですが
始業は当日の範囲で0:01〜23:59までばらばらです。 >>53
新しいシートで実験するとできました。
すいません。 >>53
いや・・・9:00から翌9:30だとできないですね・・
9:00から翌6:00とかだとできるんですが。
何度も申し訳ないので整理させてください
A1に入るのは0:00〜23:59
B1に入るのは0:01〜翌17:00
例えば
8/1の0:00から23:59までの間に始業
終業は8/1の0:01から8/2の17:00の間
という場合に、一つの関数で8/1の22:00から8/2の5:00
までの時間数を抽出する、というこです。 >>58
A1に9:00、B1に9:30と入力して、B1は当日の場合もあるんであれば、
当日の9時から9時半までの30分勤務の場合と
当日の9時から翌日9時半までの24時間30分勤務の場合という
2通りが考えられます。よって、どちらになるのかの条件を指定する必要があります。
もう一度>>51をみてください。B1に入力された時刻を当日と翌日のどちらで判定するかの
閾(しきい)値をしてしなければなりません。
たとえば、終了時刻が当日の12時より前はありえないのであれば、
2か所の TIMEVALUE("9:00") を TIMEVALUE("12:00") に変更すればいいはず。 >>50
>>38はAが当日、Bが翌日の前提で作った式だからそりゃできないよ
Bが当日になったり翌日以降になったりするのなら、それが判別できる何かがないと計算のしようがない
日付用のセル作るとか、時刻のセルを日時にするとかね
てかそれ人間が見る表としてもいつの時間なのか入力した人しかはっきりわからなくね? >>59
やってみます
>>60
出勤簿なんで、前提として58の範囲に収まるので
人間は判断つきます >>61
5時 - 8時 だと3時間か27時間か人間でもわからないが 33:30と入力させるのは無理かもしらんが、
「翌」チェックボックスとか日付の入力は
逆に普通に入力させるべき事項じゃねーのこれw >>64
チェックボックスが良いね
当日と翌日のふたつ作りどちらかチェックしないと退出時刻を入力出来ないようにすればいい 当日退勤の列と翌日退勤の列をつくればいいんじゃない? 退勤の列を分けると誤入力が増え修正が面倒になる気がするな チェックボックスって連続コピーで計算式が出来なさそうなイメージ チェックボックスと言うよりオプションボタンだな
たとえば男か女のどちらかを押さないと氏名を入力出来ないように入力規則を設定し記入もれを防ぐのと同じ
動作はリンクさせたセルの値が変化するだけ
押されてない状態は空白、当日を押せば1、翌日を押せば2って具合だ 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2016
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
計算式の連続コピーに関する質問です
◯のところのシートに計算式A1/B1、一つシート開けてその下の◎のシートに計算式A2/B2を入力し、また一つ空白にしてその下にA3/B3…っていう連続の計算式を入力をしたいです。
しかしオートフィルを利用すると、A3/B3としたいシートがA5/B5に、A4/B4としたいシートがA6/B6、A5/B5としたいシートがA9/B9…といった感じになります。
もちろん空白をなくせばしっかり連続の計算式が入力できますが、空白を1シート作った上で連続の計算式を入力する方法はありますか?(オートフィルを使わなくても大丈夫です)
>>74
あ、間違えた
わかりにくくしてしまいました、すいません >>71
方法1
A10に
=OFFSET($A$1,(ROW()-ROW($A$10))/2,0)
A10:A11を選択してずらずらっと下に連続コピー
方法2
A10に0を入れる
A10:A11を選択して下にずらずらっと連続コピー。これで一つ飛ばしの連番ができる。
B10に
=OFFSET($A$1,$A10,0)
B10:B11を選択してずらずらっと下に連続コピー
ということかな?
あとは工夫で >>76
回答ありがとうございます、OFFSET利用しようと思うのですが、A10とA11はどこから出てきたのでしょうか? >>71
単純にコピーするだけでいいんだな?
仮にC1〜C10に式を入れるとして、D列を作業列とする
@C1〜C5にオートフィルで数式入れる
A = を☆とか数式に無い文字に置換
AD1〜D5に1〜5を入れる
BD6〜D10にAを貼る
CA〜D列をD列昇順で並べ替える
DD列削除
E☆を=に置換 >>77
>>73の画像の〇があるアドレスが不明だったのでA10と勝手に決めました >>79
なるほど
ただ上記のだと計算式A1÷B1の設定がない気がするのですが… >>78
最初にそれを考えたのですが、縦列1000近くあるので、星→=の置換が大変かなと >>80
>空白を1シートx(セル)作った上で連続の計算式を入力する方法はありますか?(オートフィルを使わなくても大丈夫です)
という要望だったのでわかりやすく原理の説明をしたわけです。
あとは工夫で
頭つかってね >>81
まさか手入力で置換してるのか?置換機能で置換するんだぞ… 一行おきに空白をセルを挿入するアドインがあるから
それを使っちゃうな 手っ取り早いしw >>83
あ、なるほど
ありがとうございます、ならできそうです
Manbowさんもありがとうございました 【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2016
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
A列からC列までの合計とE列からG列の合計が間違っていたら
メッセージを出す関数を作っています。
=If (SUM(A1:C1)=SUM(E1:G1),"","エラーメッセージ")
まではあっさり書けたのですが、
行が、例えば100くらいになった(A100:C100とE100:G100)場合、
どうすればいいのでしょう。
まさか、If関数のカッコを外側にどんどん追加して書くわけにはいかないし。
やっぱり、マクロの出番でしょうか?
ついでに、row関数で、どの行が間違っているかわかれば楽だと思って試行錯誤中です。
これも、=ROW()&"行目"まではあっさり書いたのですが、
if関数と合わせる関数が書けなくて。
長々とすみません。 >>87
H列に書くと思うから、
I1に=COUNTIF(H:H,"エラーメッセージ")
とかやるとか
まぁフィルタかマクロか、その辺はルーチン次第かね
自分でその場で治すならフィルタかけてぽちぽちやれば終わりだし、
数式触られたくないならマクロが良いだろう >>87
>=IF(SUM(A1:C1)=SUM(E1:G1),"","エラーメッセージ")
という計算式をどのセルに入力してますか?
”作業セル”というのを知ってますか?上記の例で言えばF1セルに上記の計算式を入力し、
F1セルを下方向へフィルコピーするだけで
F2セルの式 =IF(SUM(A2:C2)=SUM(E2:G2),"","エラーメッセージ")
F3セルの式 =IF(SUM(A3:C3)=SUM(E3:G3),"","エラーメッセージ")
のように、手間はかかりません。
もし、既存の表に作業セルを設定することが難しいのであれば、エラーメッセージの代わりに
”セルに着色”という手もあります。 >>89
アルファベットの順番間違えたorz
作業セルのF1 は H1 に読み替えてください。 >>87
全行を判定する式を1セルで済ませたいってこと? >>88-91
迅速なレスをありがとうございます。
そして、まとめてレスですみません。
H列やI列に、下に引っ張って結果を出したら
できれば特定のセルだけに結果を出してほしいと言われて。
〇行目が違う、という感じで。
今のところ、SUM関数で全体を見て、
どこが違うかはわからないけれど違う箇所がありますよ、
で妥協してもらっています。
ちなみに、1銭もお金は動いていません。
知り合いに頼まれて試行錯誤しているだけなので。 >>92
H1=IF(SUM(A1:C1)=SUM(E1:G1),"",ROW()&"行目が違う、")
I1=I2&H1
下にオートフィル >>92
相違がある行の(行全体でもA列だけでもいいけど)セルの着色じゃダメなの? >>92
それは間違ってる箇所は1つって前提?
1つでも複数でも、チェック用の列作ってそこから答えを出すってのが一般的なんだがその列を作るのもNGなん?
でないと無駄に複雑になるが 【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2016
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 否
@UCL・LCLのある管理図(グラフ)でエリアごとに色分けする事は可能でしょうか?
規格外のエリアは赤、UCL・LCLのエリアは黄色、規格内のエリアは緑といった感じです
(紙にプリントしてプロットするので薄い赤、黄色、緑です)
今は管理図の各エリアにテキストボックスを貼り付けて色付けしていますが、
規格値の見直しがあった際にテキストボックスの位置を調整するのが何かと面倒くさいので・・・
A規格値が100+35/-20(80〜135)でUCLが120、LCLが90の時に規格外の時はセルを赤にして黒字でNG、
UCL・LCL外れの時はセルを黄色にして文字は黒字で管理値NG、規格内のときはセルを緑にして黒字でOK
と表示させる方法を教えて下さい >>96
UCL・LCLはどうでもよくて、
単にグラフの既定値に色分けするってこと?
標準機能では無理だ
vbaでも結構めんどくさい気がする。おそらく最初の高さ等は手動で算出することになる >>96
@はこのサイト参考にしてみるといいかもね
https://www.waenavi.com/entry/20190124/1548275841#1折れ線グラフの場合-1
A
>「規格外の時はセルを赤にして黒字でNG」
>「UCL・LCL外れの時はセルを黄色にして文字は黒字で管理値NG」
>「規格内のときはセルを緑にして黒字でOK」
・これはグラフじゃなくリストの方?
・具体的に「セル」がどこのセルを指しているの?この説明では分からん
・ちなみに何かを書いているセルに、色を付けるのは可能だけれど、文字を上書きするのは関数では無理 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2019
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 否
文書を上書き保存するたびにOneDriveにアップロードするようになってしまったのですが
これをやめさせる方法はありますか? 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 少し
【4 VBAでの回答の可否】 否
よろしくお願いいたします。
あるセルへの入力で、
基本的にはダウンリストからの選択だけど直接入力も可能にしたい、
というような場合は、どういう設定にするのが一般的なんでしょうか?
例えば、性別欄で、基本的にはダウンリストから「男」「女」を選ばせたいのだけど、
直接入力で「どちらでもない」とか「答えたくない」「秘密」など、自由に入力することも
可能にしたいです。
実務で使い込んでおられる方は、こういう場合はどうしてますか? >>99
エクスプローラー、OneDriveのローカルにあるファイルを読みに行くとどうなる? >>97>>98
@は諦めます
Aの質問はA1のセルの値に対してB1に「OK」「管理値NG」「NG」と表示&セルを色付けです(厳密にはA1自体は別途計算された値が入ります) >>100
入力規則のドロップダウンリストは任意の値は入力できないから
フォームのボタン使うしかないんじゃない? こんな風に2列になっていて、日付と項目があり、最後に合計が書いてあるシートがあるのですが
https://i.imgur.com/keGTaW5.png
日付 金額 日付 金額
項目 XXX 項目 XXX
項目 XXX 項目 XXX
項目 XXX 項目 XXX
項目 XXX 項目 XXX
合計 ZZZ 合計 ZZZ
※項目の数は可変
これを ↓ こんな風に変換するにはどうすればいいのでしょうか?
日付 ZZZ
日付 ZZZ
日付 ZZZ
日付 ZZZ >>104
各日にちの合計にある数式をK列のセルにコピー >>105
すいません、JK列はこちらの画像を作るために手動で作りました。
質問としては、JK列をどうやって作ればいいのかってことになります・・・ VBAで2行目以降の、列Oと列AFが同じ値の行を削除して、行を詰める場合のコードを教えてください >>104
あとあとのこと考えると、元帳をさっさと
日付 項目 金額
で正規化・DB化して、
ピボットテーブルで日付別に集計した方が
良さそうだけど・・・ >>106
各日付と合計セルをJKから参照すればいんじゃないの?もっと複雑な話?
>>108
dim i as long
with 対象シート
for i=2 to 最終行
if .cells(i, "O").value = .cells(i, "AF").value then .rows(i).delete
next
end with
※速度無視の単純コードなので行数増えれば増えるほど遅い 遅くなってすみません。
>>93-95
何度もありがとうございます。
着色で妥協していただくか、マクロを組むか…。
チェック用のシートを作って動かしていたんですが
違う場所をわかるようにして! Excelで作れないの?
となってしまって困っていました。
皆様のレスを見せて妥協していただきます。 >>111
チェック列作ってオートフィルタかけるってのがとってもシンプルで結果も一目瞭然なんだがな…
何がそんなに嫌なんだろうな… >>99
保存オプションの中に、そんな設定見つからんぞ。
どうやってんだそれwwwww onedriveの共有フォルダにでも入ってるんじゃないか >>109
はい、そうなのですが、過去3年にわたって運用されていたので、手動で書き直すのは至難なんです・・・
>>110
項目数が可変なので、JKからは簡単に参照できないんです・・・ >>115
可変てどうやって変えてんの?行挿入削除程度なら相対参照利かんか? >>101
ありがとう、ローカルからだと大丈夫でした
>>113
ネット上にあるファイルを直接開くと保存もネット上へ行うようになっているみたいです みんなほんとにExcel詳しいなあ。うらやましいわ。 >>117
上書き保存してるんだからそりゃそうだよね… 【1 OSの種類 .】 Android**
【2 Excelのバージョン 】 最新
【3 VBAが使えるか .】
【4 VBAでの回答の可否】
Androidでシートを縮小しても、ほぼほぼ見える範囲が変わらないんですが、何かいい方法ないですか 【1 OSの種類 .】 Windows2010
【2 Excelのバージョン 】 Excel2019
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
振り仮名表示してる漢字が、直前に平仮名・カタカナ・漢字を入力すると消えてしまい、どうしたら解決するでしょうか?
英字は大丈夫なので、編集するときは直前に英小文字を挟んで、その小文字の前から入力してます
ググっても同じ症状が出てこないです >>110
↓だと「コンパイルエラー Sub または Function が定義されていません。」になります
Sub Macro_test()
Dim i As Long
whis Sheets("tanka")
For i = Cells(Rows.Count, "i").End(xlUp).Row To 2 Step -1
If .Cells(i, "O").Value = .Cells(i, "AF").Value Then .Rows(i).Delete
Next
End whis
End Sub 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2016
【3 VBAが使えるか .】 多少
【4 VBAでの回答の可否】 可
https://imgur.com/nlK46RG
このような形に簡単に並べ替えてまとめたいのですが、どのような方法があるでしょうか?
どんな方法でも構わないので教えていただければ よろしくお願いします。 ↑
すみません
@〜D 1〜10 はそれぞれ関数でリンクしているのでそこを消さずに表示できるようにしたいです。 >>125
ピボットで出来る
数式でもできるけど必要かね? >>127
出来れば両方教えていただきたいです。
勉強の為色々な方法を知りたく お願いします。 説明しにくいから画像には行番号列番号もいれたほうがいいよ https://imgur.com/cXDcxbP
行と列入れました ややこしくなってしまいましたが Excel画面標準の行と列のラベルのつもりだったがそうきたか
まぁ全く問題ないけどね H18に =sum(H1:H6) でいいんじゃないの? select f1, f2, f3, f4, min(f5) as f5, min(f6) as f6, null as f7,
max(@) as @, max(A) as A, max(B) as B,
max(C) as C, max(D) as D
from [Sheet1$]
group by f1, f2, f3, f4
こうじゃね?wwwww >>129
数式なら単純にSUMで範囲を足すだけ
単純な表だからピボットもウィザード通りにやるだけでできる程度だが、SUMで事足り過ぎるから敢えてピボットでややこしくすることはない… 【1 OSの種類】 Windows10
【2 Excelのバージョン】 Excel office365
【3 VBAが使えるか】 はい(多少程度)
【4 VBAでの回答の可否】 否
webからの情報取り込みをしてexcelでリストを作成したい
取り込みたいのは文字と数字のみ
webの情報は表になっておらず形態はてんでバラバラ
webクエリ機能を使って取り込み可能かどうか、また他に何か方法はあるか?
手間など経験値がある人いたら教えてください >>138
情報が少なすぎる
せめて3,4は例を上げて欲しい >>138
補足
ロケーションリストを作成する
例えば下記のように地図からインフォを開けないとアドレスが出てこないものもあれば
https://www.starbucks.co.uk/store-locator?map=51.508866,-0.125227,12z&place=london
ページごとのLocation
http://espressovivace.com/retail/brix/
1ページにLocation一覧
http://www.caffevita.com/location
ここにある名称/住所を取得してロケーション一覧を作る
事後作業として住所から緯度経度を調べる
各企業ごとにページの作りはバラバラという状態だがそこはさておき最終的にexcelで加工して一覧に出来れば良い
まず取り込む方法を調べたいというところ >>138
タグに法則があればどうにでも。
まあ動的に作ってるから、法則性があるに決まってるか。 >>138
表として取り込めないならVBA案件じゃないなかなぁ >>141
うん
コード読み込んでこのタグで切るとか
企業ごとの規則性を把握して処理するかというところなんだけど
ただそこにこだわらずwebクエリというのを使ったことがないので誰か知ってたら教えて欲しいなと
ネックは地図からしかロケーションを見られない企業があること
どこが取得済みかのチェックができない…
あとはロケーションごとにページが分かれているところ
数が多くて大変
ここはVBAで全パラメーター終えるまで処理とか方法あるだろうか?と想像している
ただ単純取り込みはVBAじゃなくてwebクエリでできるならやりたい >>143
便宜上ロケーションリストを例に出したが実際作るのは気象情報に関すること
かなりのページ数あるからそこはやはりVBAか
ちょっと調べてみる >>138
webクエリは表面に見えている情報しか取り込めない。まぁ無理だと思う
vbaならhttpで簡単に取得できる
スターバックスの場合、114行目にjson形式で全店舗格納されてるからパースすれば楽勝 よろしくお願いいたします。
A1セルにいくつかのセルの合計数値が入っています。
B1に、="合計は" & A1 & "円です" と表示させたいです。
しかも、A1の部分を、 \**,***,***のような、一般的な通貨表示の形式にしたいです。
B1にどう書けばいいでしょうか? >>146
B1=TEXT(A1,"合計は\#,##0円です") 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Googleスプレッドシート
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
配列数式ArrayFormulaを使って複数行に関数を反映させたいのですが
同じ列の特定の行から下は別のデータが入っていて上書きエラーになります。
配列数式ArrayFormulaを特定の行までという指定をすることは可能でしょうか。 >>152
GoogleスプレッドシートとExcelは別物 >>153
別物なのは知っています。
このスレは過去Googleスプレッドシートの質問も受け付けていましたが
ルールが変更されたのでしょうか。 >>154
ここは昔からExcelの質スレだよ
スレチの質問でも多めに見てくれる人はいるよ
でもそれは当然じゃないよ >>154
分かった、答える。答えるから…
だからそういう態度やめて…
基本的にみんな善意で答えてくれてるんだから
あんまり答えてもらって当然、みたいな態度はね…
別にスプレッドシートの質問に答えちゃ駄目とかいう
ルールもないし、かといって質問してもいいルールも
あるワケじゃないけど、ここが何のスレなのかご存知のハズ。
回答してくれる人達みんな機械的なルールに則って
答えてるワケじゃないんだから…たまにはwordの
質問なんかにも答えてくれることだってあるかもしれない。
でもそれを当然の様に思っちゃダメですよ、それは
親切な人が偶々(たまたま)答えてくれたに過ぎないんですから。
前スレでは確かに、スプレッドシートの話しがチラホラ出ていたし
質問もあったね、アナタと同じテンプレの方で
その質問には回答が付いてなかったように思います。
いやもちろんアナタが、回答も付かないのにスレ違いの質問を
2回繰り返すような愚を犯すなんて私は思ってないから…
すいません、質問のお返事でしたね…
答えは可能です。これでよろしいでしょうか? 一応、スプレッドシート関連はこんなスレあった
Google総合★27
https://mevius.5ch.net/test/read.cgi/google/1541933815/
Google Docs & Spreadsheets
https://mevius.5ch.net/test/read.cgi/esite/1174514457/
スプレッドシートはExcelの関数と微妙に違ったり出来ること出来ないことが違ったりするから俺には回答出来ないわ 【1 OSの種類 】 Windows10
【2 Excelのバージョン 】 WPS Spreadsheets
【3 VBAが使えるか】いいえ
【4 VBAでの回答の可否】否
数量が変化する表から2つの条件を満たした指定列のセルの文字を返したいのですが同じものが複数存在します
A B C
1 1 あ
1 1 あ
1 2 い
2 1 あ
2 1 い
2 1 い
2 1 い
A列=1 B列=1 ならば「あ」
A列=1 B列=2 ならば「い」
A列=2 B列=1 ならば「い」
みたいに出来る方法を教えて下さい >>158
間違いました
A B C
1 1 あ
1 1 あ
1 2 い
2 1 あ
2 2 い
2 2 い
2 2 い
A列=1 B列=1 ならば「あ」
A列=1 B列=2 ならば「い」
A列=2 B列=2 ならば「い」 間違ってるのはここだろ
>【2 Excelのバージョン 】 WPS Spreadsheets >>158-159
D1=(A1&B1)*1
E1=22
※調べたい数
F1=INDEX(C:C,MATCH(E1,D:D,0))
キングソフトは止めたほうが良いよ >>161
言葉足らずで申し訳ない
別のシートのセル
A1=1 B1=1 C1=取り出したい文字列
A2=1 B2=2 C2=
A3=2 B3=1 C3=
てな感じで条件に合った文字だけ排出したいんです
各条件が1個しかない場合は分かるのですが複数の場合はエラーが出ます
条件が一致してる文字は常に同じなので一度纏めてからの方が良いのでしょうが纏めずに排出したいです >>160
EXCEL 2007 もあります
どちらでも良いですが新しい方がと思い類似品をあげてしまいました >>162
>各条件が1個しかない場合は分かるのですが複数の場合はエラー
これキングソフトの独自仕様。Excel、googleスプレッドシートではエラーが出ない
せめてgogleスプレッドシートを使った方が良い
あと、キーをまとめずにやる方法はvbaしかない
作業列を作ればキーをまとめなくてもいい方法もあるけど
キングソフトの独自仕様までは付き合えないかな >>164
なるほど
EXCEL 2007で作ります
=VLOOKUP(A1&B1',sheet2!A:C,3,0)だとエラーになります
答えが同じ文字でも複数存在するからですよね
良い方法をご教授下さい >>165
=VLOOKUP(A1&B1,sheet2!A:C,3,0)でした >>168
NAは見つからないエラー
>>165
>答えが同じ文字でも複数存在するからですよね
違う
存在しないからエラーが返っている 複数存在する場合は最初の行が返ってくるのでエラーにはならない 検索条件のセルは検索範囲と別途シートで別行にあるのが問題なんでしょうか?
K3=1 A3=1
=VLOOKUP(K3&A5,sheet2!A:C,3,0)
実際はこんな感じです >>171
どういう構成なのかよくわからんが、
K3&A5
が
sheet2!A列
にないからエラーになっている
暇だからブックごとアップしてくれれば見るよ >>172
残念ですが会社のなんであげられらないっす
一度sheet2のAとB列を結合させてC行に表示させ検索範囲をC:Dにして2行目の値を返したら複数あっても最初のセルが返りました
作業行を作らず出来る方法があるのでしょうか? 無ければ作業行を入れて使用します >>172
とりあえず解説して頂いて違いが分かりました
凄く助かります >>173
作業列な
列は縦、行は横
作業列は必須
どうしても嫌ならフィルタを使うぐらいしかない >>175
列でしたw
フィルタは使用したくないので作業列を設けてやります
色々助かりました 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel 2016
ジョーシン電気で、エクセルのシリアル買いました Win10はノートPC付属の正規品です
エクセルを開くと必ず「3日以内にライセンス認証しろやゴルァ」の画面が表示されます
認証の画面でシリアルを入れると、「すでに登録されたシリアルです」みたいに表示されて
手詰まりになりました どうすれば、この問題を解決できますか? よろぴこ >>177 追記です スマソ
エクセルは2年ほど前にシリアルを登録して、2年ほどは普通に使えていました >>177
人によっては回答する気無くすから普通に質問した方が良いと思う 日付を入力する際、「30125」と入れれば「H30.1.25」.「31815」と入れれば「R1.8.15」と変換されるようなセルの書式設定等ありませんか? >>183
6桁にしないと
31125などが判別付かない
ってわけで6桁用
=DATE(LEFT(A1,2)+1988,MID(A1,3,2)*1,RIGHT(A1,2)*1)
>>184
日本語で 関数が知りたいんじゃなくて書式設定で表示する方法が知りたいんじゃない?
俺にはわからんけど >>187
俺に言われましても…>>183に言ってやれよ MOS受けようと思って365solo買ったのですが、これって2019ですよね?
試験は2016みたいだけど、もしかして自分やらかしちゃったかんじ? >>189
365は常に最新版
2019と2016はそんなに変わらないから問題ない。全然余裕 >>185
ありがとうございます、実現できれば関数でも大丈夫です
31125などは0入れて6桁にすればいいんですよね?
それと別件の質問ですが、VBAでIEを操作するために既に開いている画面のHTMLを取得した後、リンククリックで遷移した先の画面で、更にその画面のHTMLを取得する工程は必要ですか?
うまく伝わらなかったらすみません MOSの資格を持っているのですが本当に基本的なことしかできません
名前だけ聞いてすごくできると思われるといろいろ困ることがあるのですが
一応取った資格なのに隠すのも損な気がします
この程度の資格は表に出さないほうがいいのでしょうか?
たいしたことはないわりに名前は立派なのも困ります MOSはマイクロソフトの資格の中では評価される方だと思う >>192
Documentメソッドが失敗するときとうまく行くときの違いはなんですか・・ >>193
持ってることをアピールするってことはその知識があるってことをアピールすることになるわけだから、そう思われて困るなら敢えて出す必要なくない >>192
>VBAでIEを操作するために既に開いている画面のHTMLを取得した後、リンククリックで遷移した先の画面で、更にその画面のHTMLを取得する工程は必要ですか?
うむ、よくわからん
>>193
面接で勉強して資格はとってますが実務未経験ですって言えばいいだけ
隠すのは変だよ >>197
わかりにくくてすみません、少し質問を変えます
VBAでページ@内のリンクをクリックし、別窓でページAが開きました
この場合ページAを更に操作するにはページAをVBAで操作できるように改めてHTMLに格納?する作業は必要ですか? >>198
確かtarget=_blankは行けるけどwindow.openは無理とか微妙な違いがあったはず
そのページを見てみないと分からない
vba ie 別窓 操作
とかで検索してみて
ちなみに格納するのは変数
個人的にはhrefを取得してもう一回IEオブジェクト作り直した方が手っ取り早いとは思う >>196
面接とか履歴書で少しでもアピールするために
とりあえず持っている資格を書いてしまうと
誤解される原因となってしまうことがあります
>>197
一応実務が全く未経験ってわけではないのですが
自分でマクロ作ったりとかそういうのはできないので
実力的には普通の人と変わらないので
その辺がいろいろややこしいです >>200
なるほど・・調べてみますね
さらに別件ですがダウンロードウィンドウをVBAで操作するにはどうしたらいいですか?
sendkey だとうまく行かないのですが・・ >>201
むしろ敢えて出すとしたら履歴書に書くときぐらいだと思うんだが >>191
ありがとうございます、バージョン書いてないので肝冷えて焦ってました >>203
別件じゃなくない?後はvbaスレでやってきて 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2013
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
セル内の改行を関数で\マークに置き換えたいのですがどうすればいいですか?
【例】
おはようございます。
今日の天気は晴れです。
明日は雨です。
↓
おはようございます。\今日の天気は晴れです。\明日は雨です。 置換機能で[Ctrl]+[J]を¥に置換でいけるんじゃない 置換じゃダメで関数に拘る理由がないと
これ以上はちょっと >>207
その工数を減らすのが目的です。
その後にするステップもあるので自動化したいんです。 >>210
置換じゃダメで関数じゃないとダメだから聞いておるのだ >>212
そうなのだ
これでいいのだ
バカボンのパパなのだ なんでそんなにExcelの関数やらVBAが出てくるの?エンジニアなの? 手作業でもできることを自動化したい時はマクロの記録をするんだ マクロの記録なんて実務で使ってる人見たことないな。 >>198
何か VBA で IE を操作する 本の一冊でも買っていますか? 一冊買ってしまったほうが早いですよ 本は悪手だと思う
サイトに書かれてるのですら最新のIEでは動作しなかったりする
最近勉強し始めた人は複数のサイト調べて自分なりにカスタマイズ出来るようでないとIE操作系は難しいと思うよ あ、 確かにネットのは動かないことも多いです。
原因のひとつが 大抵 バージョンとかも書いていないこと IEのバージョンも参照設定も書かれてないことが多いね
参照設定次第でコード変わるから同じ事やっててもサイトによって書いてるコードが違う コードは長くなるけどバージョンが違っても参照設定しなくても動くように書く方法もあるんで、あとは書く人の能力とか方針次第なんだよなあ 参考書なら個人の方針とか関係なくどう書かれたコードかという説明は書くべきじゃないかな >219
バリバリ使ってるぞ
ctrl+↑とかctrl+end、行列の削除辺りは割とよく使う 一つのプロシージャ内で複数のcallを記載する場合、変数の重複はカウントされますか? >変数の重複はカウントされますか?
ちょっと良く分からないですが、同じ名前の変数が混ざるかどうかって話しなら
スコープ、ローカル変数、グローバル変数で検索してみて下さい >>229
例えば
sub hoge()
call 1
call 2
end sub
で、call1.2の中に同じ変数宣言がある場合、その変数宣言は1で一旦解放されますか?
それとも解放されない=変数重複のエラーが出ますか? >>230
宣言を解放するの意味が分からない
変数にnothing入れて解放しても宣言が重複するとエラーになる
無理に分からない単語を使わない方が良い
ってか、試したほうが早いと思うけどエラーにはならない
ちなみにstaticだと変数の中身は継続するけど関係ないかな
Sub foo()
For i = 1 To 10
Call a
Call b
Next
End Sub
Static Sub a()
Dim ax
Dim bx
ax = ax + 1
Debug.Print ax
End Sub
Sub b()
Dim ax
Dim bx
bx = bx + 1
Debug.Print bx
End Sub >>230
プロシージャ内で宣言した変数はプロシージャ内だけのものなので被ってても関係ない
変数がstaticな場合初期化はされないが名前被りとは無関係 >>145
遅レスでたいへんスマン
見てるのはchrome?
sourceの中見てみたけど114行目に該当するところにアドレス全店仕込まれてるのが分からず
もう少し詳しくどこを見るか教えてくれるとありがたい >>234
たぶん>>145は早合点してると思われる
114行目のjsonに含まれるURLはショップのリストではない
こういう動的なサイトからデータを抜き出すには、パケットを解析してWeb APIを調べるぐらいしかないと思う
勝手なWeb API呼び出しが禁止されててデータの取り出しが絶対的に不可能なケースってのは、今のところあんまりないと思う
このあたりの話になるとExcelは関係なくなってくるし、VBAを使わないと難しいことも多いんで、あきらめるか方針を変えて貰うしかない >>235
だよね、いくら見てもないはずだw
たしかにもうexcelの範疇じゃないな
かといってvbaでないと、というものでもないから範囲広げて考えてみるわ
サンキューでした >>227
そういやあれ何だろな。
Cells(1, Rows.Count).End(xlUp).Rowって、最終行特定のテンプレみたいになってるけど、
フィルタ掛かってると使えないし、UsedRenge〜を使う応用編だと検索設定変わっちゃうし、
何かまともな方法無いんかな。
しょうがないから、俺、ADOのレコード件数で判定してるわ。 >>237
その方法でも途中に空白あったら使えなくない?
ループで1行ずつ見るのは時間がかかるし、一時的にフィルター解除するかなあ VBA初心者でこれから勉強を頑張りたいと思っているものですが、初心者で取っつきやすい書籍を数冊教えて欲しいです。今はExcelVBAのツボとコツがゼッタイわかる本の超入門とプログラミング実践編の2冊を読んで実際にVBEに入力してみた感じです。よろしくお願いします。 あとExcelVBAふりがなプログラミングとたった1秒で仕事が片付くExcel自動化の教科書の2冊も読みました。これから先の勉強法なども教えていただけると嬉しいです。 >>240
それだけ読めば十分初心者じゃなくなってると思う
VBAの機能を何もかも全部覚えるのは不可能だから、あとはVBAでやりたい仕事ができたら、目的に応じてネット検索すればいい >>241
ありがとうございます。
4冊を読んで『たった1秒。。。』は少し難しかったですが、後の3冊は特にわからないような箇所はなかったです。けど自分がイメージしているマクロをすぐに書けと言われても間違いなく書けません。
これからは書きたいマクロをExcel上でどの様な動きをするか箇条書きにして、それをネット、マクロの辞書などを頼りにして書いていくというやり方でいいでしょうか? そんな丸ごと3冊も本理解してるなら十分1人でできるんでは 参考書を読みながら実際に動かして試してみることが大事
読むだけでは無理 >>234
これショップのリストにしか見えないけど間違っていたのか
https://i.imgur.com/xBVseYa.png
>>237
そうか、入力と出力は絶対に分けるから気づかなかった
フィルタ掛けてると狂うのかこれ >>242
イメージするのはブックやシートの最終形だ。途中は変な事していなければベタ書きで良い
コードなんてずっと書いてればこなれてくる。vba質問スレかこのスレの過去ログ読んで、実戦形式で取り組んで見ると良い 質問に答えてくれた方々ありがとうございます。
地道にExcel上での動きを書き出して、それを一つ一つコードで書いてドッキングするという作業に徹したいと思います。確かに本を読むだけじゃなくて実際にコードを書かないと力はつきそうにないですね。先は長そうですが。。。
ありがとうございました! 【1 OSの種類 .】 Windows7、10
【2 Excelのバージョン 】 Excel2013
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
A1に数値を入力してB1に任意のコメントを表示させる方法を教えてください
A1に入力した値が25〜75ならB1にOK
A1に入力した値が26〜30、76〜80ならB1に注意
A1に入力した値が30未満、80より大きいならB1にNG
と表示させたいです >>248
B1=IF(AND(A1>=25,A1<=75),"ok","")
&IF(AND(A1>=26,A1<=30),"注意","")
&IF(AND(A1>=80),"NG","")
&IF(AND(A1<=30),"NG","")
27だとok注意ngとなったけどまぁええか
優先順位が良く分からん >>248
26や27は「25〜75」「26〜30」「30未満」の全部の条件に当てはまるけど、どうすんの? 間違えました
規格 50±30
ACT 50±25
になります
A1に数値を入力してB1に任意のコメントを表示させる方法を教えてください
A1に入力した値が25以上〜75以下ならB1にOK
A1に入力した値が25未満〜20以上、75より大きい〜80以下ならB1に注意
A1に入力した値が20未満、80より大きいならB1にNG
と表示させたいです >>251
規格とかactの行は読み飛ばすとして
B1=IF(AND(A1>=25,A1<=75),"ok","")
&IF(AND(A1>=20,A1<25),"注意","")
&IF(AND(A1>75,A1<=80),"注意","")
&IF(AND(A1>80),"NG","")
&IF(AND(A1<20),"NG","") >>238
上から下じゃなくて、下から上なら大丈夫、という話じゃなくて? >>252
ありがとうございます
IF関数の重ねがけ?がいまいち分らなかったので助かりました
>>253
2016以降だとIFS関数というのも使えるんですね
Win7のサポート切れに伴うPCの入れ替え時にVDI化するらしいですが、
その際にエクセルも2016以降になるかと思います
もっと勉強して自分で出来るようにしていきたいです 【1 OSの種類 .】 Window10
【2 Excelのバージョン 】 Excel2019
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
以下のコードは"あ","い","う","え","お" の5チームの総当たりのリーグ戦を示したものです。書籍からですのでところどころは変えてあります。(変数名など)
このコードを解読しようとしているのですが、どうしてもわかりません。お分かりになる方教えてください。よろしくお願い致します。
Sub リーグ戦 ()
Dim チーム,チーム1.チーム2.i
チーム=Array("あ","い","う","え","お")
チーム2=1
For Each チーム1 In チーム
For i =チーム2 To 4
Debug.Print チーム1 & "vs" & チーム(i)
Next
チーム2 = チーム2 + 1
Next
End Sub >>256
どの部分がどうわからないか書いてないぞ >>256
入力ミスがあったから直した
Sub リーグ戦()
Dim チーム, チーム1, チーム2, i
チーム = Array("あ", "い", "う", "え", "お")
チーム2 = 1
For Each チーム1 In チーム
For i = チーム2 To 4
Debug.Print チーム1 & "vs" & チーム(i)
Next
チーム2 = チーム2 + 1
Next
End Sub >>256
総当たりなので、2重ループでチーム名をすべて書き出してるだけ
ただし、外側のループはEachを使って全チーム
内側のループは重複する組み合わせを除くためにループの初期値を順番にずらしている
http://imgur.com/ikCmwOS.png >>245
あー単にソースコード見てたのか
たしかに114行目にストアリストはある
ただ100件しか表示されないんだよな…
てことでスレチだし終わりにするわ 皆様ありがとう。どこがわからないか整理するわ。
ぶっちゃけてどうわからないかもよくわからない。。。 上から順に読んでいって何行目で詰まったかじゃないんか 何なら分かるか(if文なら分かるとかArrayは分かるとかfor文は分かるとか)が分かれば教えようもあるけど全て分からないなら1行ごとの意味を調べた方が良いと思う
ロジックが分からないなら>>259の通り For のコードが二個あるじゃないですか?
それは分解して考えた方がいいですよね?すいません、的外れな質問で。。。 >>266
なるほど、内側からですね。少しねばって見てみます。 てか、コード読めないならいきなりバラバラに考えずまず1行ずつ追っていって何が行われてるか見ないと意味がわからないんじゃないのか >>265
>>259の表を例にとると縦軸のforと横軸のfor
縦軸はArrayに格納されてるあ、い、う、え、お を順番に回す
横軸はArrayに格納されてる2〜4番目を回す
ただ、チーム1が「あ」の時は2〜4番目を回すけど、「い」の時も2〜4番目を回すと いvsい が出来てしまうので
チーム1が「い」の時は3〜4番目を回したい
なので開始の番目を3にする為にチーム2+1をしてる forだって順に追っていけば自然と内側から理解していくことになるはずだ みなさんありがとうございます。明日にまたレス頂いた文章を参考に考えます。今日はちょっと自分の中で答えが出そうにないです。それにしてもVBAは奥が深いです。プログラミングを全くしたことない人間はキツイのかなって思いますね。。。 for each と普通のforを混在させているのは学習用の教材のため?
学習用にしてはあまりよい例とは思えない。
実用的にはfor eachを使わずに普通のforで統一したほうが構造が理解しやすい Each in使う時はシート回したい時くらいしか使わないわ SplitとかArrayみたいな配列を返す関数を使った時は、配列の範囲をいちいちLBoundとUBoundで調べるのが面倒だからEachで回すけどなあ
慣れるとすごく便利だよ split関数って普通のexcel365にはないんだよね?
vbaかスプレッドシートのみか このスレの中でスクールなどに通わないで、書籍、ネットのみでVBAを使いこなせるようになった方々の勉強法、またどれくらいの期間勉強しているかなど教えてもらえると嬉しいです。私は上記の本を4冊読んだだけの完全なるど素人です。 >>282
始めたのは中学の時、最初は友達と一緒にベーマガとか読みながら勉強して、学校の先生や先輩にも色々教えて貰った
高校に入ってからはプログラムを作るバイトを紹介してもらって、仕事しながら覚えた感じ チーム
って単語ずっと見てたら変な言葉に思えてきた for i〜は定数や順序が必要な場合かな
特に特定の条件で行削除などはstep-1が必要になるのでforeachで処理しないほうが良い。見辛い
>>256の場合は両方foeachでいいぞ
Sub リーグ戦()
Dim チーム, チーム1, チーム2, i
チーム = Array("あ", "い", "う", "え", "お")
For Each チーム1 In チーム
For Each チーム2 In チーム
If チーム1 <> チーム2 Then Debug.Print チーム1 & "vs" & チーム2
Next
Next
End Sub >>282
必要になるたび随時調べて使ってたら覚えた
VBAに限らず本読んだだけで技術を身に付けるなんて一般人には無理だぞ
4冊読むだけより1冊実際に動かして何か作りながら読む方が圧倒的に身に付く https://i.imgur.com/FgTjXv5.jpg
数式で可能ですが項目1(A列)のように入力したいです。
項目2(b列)にはすでに値が入力されています。
100
1
2
スペース
101
1
2
3
スペース
これを隣の列に
100-100
100-1
100-2
101-101
101-1
101-2
101-3
と入力したいです。
数式でなおかつオートフィルが条件。 数式で可能ですがって言うからVBAがいいのかと思ったらやっぱり数式がいいのか?
>>291
なんだ、せっかく作ったのに >>291
教えてる奴に対して「ガイジ」ってマジモンだな 返信をしていただいた方ありがとうございました。
今日も今からは答えが出そうにないです。
明日以降に考えたいと思います。
ありがとうございました。 >>296
>>256のコードは間違っている。そんなもん考える必要はない
正解は>>286 >>296
間違っているわけではなかったわ。
ただ、慣れてない人が書いた無駄の多いコードなので読みにくくて当然
慣れない内からこんなものを参考にするもんじゃない >>299
答えといいますか、コードを読み解くことです。
今日は暑気払いで体調を崩したのでまた明日以降に考えたいと思います。 コードを読み解くって具体的にどういうことを言っているんだろうな
やってることがよくわからんなぁ… >>286は間違ってる
「あvsい」と「いvsあ」はどちらか片方だけにしたいんだよ >>298だけど、ごめん俺が間違えてた
>>256で良い
vbaはpushとか無いから超めんどい書き方にするしかない この場合はFor Eachなんか使わない方が分かりやすいって
という僕が通りますよ
Sub リーグ戦2()
Dim チーム, i1, i2, i2初期値
チーム = Array("あ", "い", "う", "え", "お")
i2初期値 = 1
For i1 = 0 To 4
For i2 = i2初期値 To 4
Debug.Print チーム(i1) & "vs" & チーム(i2)
Next
i2初期値 = i2初期値 + 1
Next
End Sub 実用じゃなくてForの説明のための例文だからじゃね? >>306
配列の範囲を決め打ちするなら、こう書けば変数が一つ減らせる
For i1 = 0 To 3
For i2 = i1 + 1 To 4 そのうちほのぴが石田ばりにシャウトしてくれることを夢見てるよ 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel365
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
やりたいことはハイパーリンクからchromeを開いてhtml取得して保存してchromeは閉じるというループ処理
【詳細】
excelシートA列にあるハイパーリンクをchromeで開く
開いたWebサイト上で右クリックのソースコードを表示させ、htmlを取得しテキストまたはexcelシートに貼り付け保存
chromeを閉じる
(htmlの保存はできれば開いている同じexcelファイルにシートを増やしていきたい)
もし該当しないurlの場合は次のハイパーリンクを開くエラー回避処理も入れたい
この動作をA列にあるハイパーリンク全部に対してループ処理したい
chromeだと厄介であればIEを使うことも検討してます
よろしくお願いします >>310
とりあえず
スクレイピング vba
とかで検索してみては?
まるなげすぎてさすがに面倒 >>312
たしかにwすまんです
早朝過ぎてPC開けてなかった
ハイパーリンクを開くところまではわかっていてその後のhtml取得ループをこれから作ろうと思っている
あとで途中までコード書く >>310
いちいちブラウザを開かなくても、URLからページのソースを直接ダウンロードできるよ >>315
どもです
ググったらその方法もあったのでそれも合わせて検討中です
Pythonでやるか?考えてるのでvbaでやることになって詰まったら具体的に書きます >ハイパーリンクを開くところまではわかっていて…
ウケる
とっとと死ね丸ハゲ野郎
あ、丸投げ野郎 >>317
あまりわたしを怒らせないほうがいいぞ
このハゲ!
とりあえずhtmlのbody要素のinnerHTMLを取得するのは分かったが
chromeで開かずにする方法やリンクが存在しないときなどのエラー処置に悩む。 おらよ
Sub HAGE()
Dim Hage
Hage:
Hage = MsgBox("私はハゲです", 4)
If Hage = vbNo Then GoTo Hage
End Sub
感謝しろよハゲ >>319
このハゲー!違うだろ!
この書き方には問題がたくさんある。
(1) 変数定義で型はちゃんと明示しろ→"As VbMsgBoxStyle"を足した
(2) 4という意味不明のマジックナンバーは混乱のため不可→"vbYesNo)"にした
(3) GoTo文はスパゲティプログラムの温床。→"Do Loop文"にした。
もう一度言う。
こ の ハ ゲ ー !
https://youtu.be/7lxqO9oV9dY
--------------------------------------------
Sub Hage()
Dim Hage As VbMsgBoxStyle
Do
Hage = MsgBox("このハゲー!", vbYesNo)
Loop While Hage = vbNo
End Sub この場合はWhileではなくUntilを使わないとマーの意図が読み取りづらくなる
あと変数にいちいち代入するのは無駄
Sub Tumaran()
Do
Loop Until MsgBox("つまらん", vbYesNo) = vbYes
End Sub >>319,320
キャンセルされた時の判定がないからダメ >>324
VBAでもPythonでもいいけど
Chromeで表示させる意図が分からない
いちいち目検でチェックさせて閉じさせて、閉じたイベントハンドラ取得して、ロジック組みたいって事? 【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
画像のD列に合計を求めたいのですが、どのような式にすれば画像のような合計値が出せますか?
sumifとワイルドカードでは無理ですよね…
http://imgur.com/Rw10cuX.png >>326
作業列の追加はしない式ありましたらお願いします >>326
計算のルールがまったくわからん
何と何をどう足してるんだ >>326
E列を名前列として上からaaa、bbb、ccc、ccc、cccと入ってるとする
=SUMIF($B$3:$B$7,"*"&D3&"*",$C$3:$C$7) 間違えた
=SUMIF($B$3:$B$7,"*"&E3&"*",$C$3:$C$7) ずっとフリーソフトを使っていて最近になってエクセル2016を使い始めたんだが
画面右端のセルが少ししか見えてない状態で、そのセルをワンクリックしてもセルが左に自動的にズレてセル全体が見えるようにはならない仕様なのかな?
ダブルクリックすれば思うような動きはしてくれるけど、設定等とかで変更できるのなら知りたい マウスはひっくり返して、F1キーは外す。これ、外資系コンサルの常識だよ。 【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2010,2013
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 否
データを入力してEnterを押すと任意の場所にアクティブセルを移動させる方法はありますか?
A1にデータを入力してEnterを押すとデフォルト設定ではアクティブセルはA2に移動しますが、
A1にデータを入力してEnterを押すとD1に、D1にデータを入力してEnterを押すとB3に・・・といった感じです >>335
外資系コンサルはExcelなんて使いません >>338
無いが、
データを入力するところはA1,A2,A3にしておき、
データを出力するところは
A2=A1
D1=A2
B3=A3
のようにすることは可能
というか俺がやってる
>>339
これネタやぞ >>338
Ctrlキーを押しながらD1 B3 A1の順にクリック
データ入力Enterの繰り返しでその順番に移動する >>334
マウス禁止ならクイックアクセスなんたらショートカットもどきではなくて各コマンドをショートカットでカスタマイズできる仕様にして欲しいわ
某フリーソフトなら仕様でカスタマイズ可能なんだけどな >>338
VBAを使いこなせ。
対象のSheetモジュールに
Private Sub Worksheet_Change(ByVal Target As Range)
で書けばなんとでもなる。 IT系以外では、それなりに大きな会社であっても絶対マウス使うマンが概ね主流だよな
クイックアクセスツールバーにクイック印刷以外のデフォルトボタンなど邪魔でしょうがない(自宅PCでは外して他のを登録してます)けど、郷に入れば何とやらか
まあ、自分だけショートカット使って出来る限り差を付けるのがベターだな 事務作業の能率をチェックして個人の評価を決めてる会社なんてあるの?
処理した伝票の枚数とかいちいち調べてたら逆に怖いわ Excel使う雑用なんかどんだけ能率を上げてもダラダラやっても給料は変わらん >>347
レアケース
そんなルールの厳しい会社に務めてるやつは5chなんか見ない
ローカルルールを知らない他人の回答はまったく役に立たないから同僚に聞くしかない むしろ重くなるから関数使うなという所もあるしな
そういう時は白紙ブックにマクロを入れて裏から操作すればいいけど
マクロで操作出来るのは何もマクロ入りのブックだけではないし >>345
入力代行業とかだと普通にあるだろ
てかそう言うのを把握しておかないと作業時間の見積もりもできないし 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2010,2013
【3 VBAが使えるか .】 中級
【4 VBAでの回答の可否】 可
シートに表があります。
名前、ふりがな、注文品、個数という表です。
何百行もある表です。
あるフォームを開いた時そこのコンボボックスの選択肢に
シートのふりがなを用いたいのですが、表には同じ人が何回も登場するし
できればあいうえお順で.cmbboxにAddItemしたいです。
重複を避けあいうえお順にするのに何かいい方法ないでしょうか? >>351
さすがにそこまで単純な作業は歩合制かノルマ制が普通では >>352
どこか空いてるセルにふりがなの列をコピーして、重複の削除(RemoveDuplicate)と並び替え(sort)をすれば少ない手間で目的のデータが得られる 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2016
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 可(必要なら覚えます)
(機能の例としてのファイルなので、見なくても大丈夫です)
http://www.beec.or.jp/format/for_report.html
一般財団法人 日本建築設備・昇降機センターのサイトに繋がります。
このページの
「東京都 建築設備定期検査報告書+報告概要書 Excel2010【リンク版】2019.4.26」
のファイルの中にあるマクロ(?)のように、
「エクセルファイル1」の「ワークシート名」の「セル(仮にA1)」の内容を、
「エクセルファイル2」の「ワークシート名」の「セル(仮にA1)」に移す、
という作業を各入力セル(500セルくらいあります)に行う
マクロ(?)ってどのように作ればよいのでしょうか?
このサイトの書式に限らず、
「公式が配ってる書式が1年に1度くらいのペースで微妙に変えられるので
旧書式の入力内容を新書式に手作業でカタカタ頑張って打ち込む」みたいなことが多いので
マクロ(?)やプログラムで自動処理みたいなのができるなら頑張って作りたいです。 >>356
VBAならセルのコピーは1行で書けるけど、書式が変わってしまったら自動で対応するのはかなり難しいと思う
(例)
Workbooks("エクセルファイル2").Sheets("ワークシート名").Range("A1") = Workbooks("エクセルファイル1").Sheets("ワークシート名").Range("A1") >>357
書式が変わるのは頻繁ではない(多くて半年に1度程度)なので、
軽微な書式の変更は手作業のメンテナンスで対応していこうかと思っています。
(「A1をA1にコピー」を、「A1をA2にコピー」にする程度の書き換えを
十数ヶ所、程度の作業で大丈夫だと思いますので。)
Workbooks( )
Sheets()
Range()
=
を教えていただいたおかげで、方向性がわかって
検索もできるようになったので、ここからはコツコツと覚えていこうと思います。
ありがとうございました。 >>354
君が知らないだけで、世の中こういう単純作業って山ほどある
納期が厳しいものは作業員の能力を把握してないと即納期遅延になるので、ノルマとか歩合制では不安定過ぎる 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2013
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
1つのファイルでシート1にデータソース、シート2、3にピボットを組んでます
ピボットのデータ範囲は同一のテーブルを使用しているのですが、片方は全て集計されているのに、もう片方はデータ1行分が集計されません
単純なピボットなので、組み方は間違っていないと思います
見当がつく方いらっしゃいますか >>360
この手のミスを探すときはまず、間違っていないという思い込みを捨て、めんどくさがらず確認する >>360
色んな原因あるから見ないことにはなんとも
ちなみに総合計も不足してる? >>361
明日全てチェックするようにします
>>362
総合計が不足していたので気付きました
セキュリティが厳しい会社なので、ファイルの持ち出しは出来ないですね >>363
>セキュリティが厳しい会社なので、ファイルの持ち出しは出来ないですね
いやw普通でしょ >>360みたいな悩みって、見る人が見たら数秒で原因がわかり、数分で修正できてしまうものだと思う。
こういうのを遠隔操作でチャッチャと解決してくれるサービス、誰かはじめてください。 同じにしてるつもりが、データソースが1つずれてるんじゃないの? こういう些細なミスしてるやつってろくに確認しないで合ってると言い張るんだ
そして確認は他人に丸投げ VBA習いにパソコン教室いくわ。もう限界や。独学じゃわからへんわ。 >>370
教えてくれるとことかある?
VBAマスター?取りたいんだよね
エクセルエキスパートとアクセスは取った 無職の期間に職安の訓練校通ってExcel Access VBAのセットコース取ったけどVBAは触りだけって感じで業務に役に立つレベルには程遠かった >>371
いっぱいあるよ。パソコン教室はマジで吟味して決めた方がいいよ。周りの人たちがWordとかPhotoshopとかやってると質問とかしづらい。要は少人数の教室を探して行くのが1番いいよ。 【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2013
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
カーソルの位置を自動で適切な位置にしたいです
横列1の縦列のCまで入力したら自動で
横列2の縦列Aにカーソル移動
横列2の縦列Cまで入力したら自動で
横列3の縦列1にカーソル移動
って感じにしたいです >>374
たとえばマウスでA1からC3までドラッグして選択しとけば、その中だけで順番に動くようになる 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
B列からZ列くらいまで、10行の表があります。
B3の値が「出席」なら、B4のセルの背景色が青になるというように、
BからZ列までぜんぶ、「○3の値が出席なら○4の背景色を青」と
設定したいのですが、どのようにすればいいのでしょうか?
条件付き書式って、自分自身のセルのことしか無理っぽいです。
ひとつ上のセルを条件にするってことと、できればBからZまで一括設定がしたいのですが
何か方法あるでしょうか? >>374
毎回範囲を選択した状態にするのも面倒なら
入力したい範囲のセルの書式設定の保護タブで、ロックのチェックを外し
校閲タブのシートの保護で、ロックされたセル範囲の選択のチェックを外すと
ロックされていないセル範囲=入力したい範囲しかカーソルが動くことはなくなる。 >>376
1 B2:Z11のセル範囲を選択する
2 リボン→ホーム→条件付き書式→新しいルール→数式を使用して〜
3 数式を入れる枠に =B1="出席" を入力
4 [書式]ボタンをクリック
5 塗りつぶしのタブをクリック→塗りつぶす色を指定→[OK]をクリック
6 [OK]をクリック
B2:Z11を選択している状態で、数式にB1と指定したところがミソです。 >>376
B4セルの条件付き書式の条件の数式に
=B3=”出席”
でええんとちゃう?
なんでそのセルの値しか参照できないと思い込むのか分からん 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
条件で別領域に取り出すSMALL関数について質問があります。
B店舗夜間 25000
A店舗夜間 30000
Z店舗夜間 35000
Y店舗昼間 50000
Z店舗昼間 75000
A店舗昼間 100000
B店舗昼間 200000
上記のような売上表があって、
別セルに"A店舗夜間"を除外して、以下の式を別領域で計算していました。
={SMALL(IF(A$1:A$100<>"A店舗夜間",B$1:B$100),ROW(A1))}
条件に"B店舗夜間"も除外対象に追加したいのですが、うまくいかないのでご教示いただければ幸いです。 >>381
ご教示ありがとうございます。
確かにフィルターオプションでできました。
ただ、元の式から条件が追加になるだけだったので、式の軽微な修正でできるかと思ってました。 【1 OSの種類 .】 Windows8.1
【2 Excelのバージョン 】 Excel2013
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
初心者ですが、ここにながれつきました・・・
エクセルの式で、どのように作ればよいか分からず
悩んでいます。
セルA1が「1」ならB2を反映、A1が「2」ならC5を反映
としたいのですが、この場合どのような式になるのでしょうか。
ifsは2013では無理とやっと分かり、vlookupではとなりのセルしか
反映できない?みたいで、行き詰まっています・・・
すみませんが、どなたかご教授願います! >>383
=IF(A1=1,B2,IF(A1=2,C5,""))
これでいいのでは?最後の方の""は、セルA1の値が1でも2でもない場合の値となります。 >>383
=SWITCH(A1,1,B2,2,C5,C1)
A1が1ならB2の値、A1が2ならC5の値、それ以外ならC1の値を表示する >>383
=CHOOSE(A1,B1,C5)
2013ならこれ >>386
B1どこからでてきたw
初心者さんだと簡単なミスでも混乱するぞきっとw ご回答ありがとうございます!!
今晩、パソコンで試してみます!
色々とありがとうございます。 【1 OSの種類 .】 Windows 10
【2 Excelのバージョン 】 Excel 2010
【3 VBAが使えるか .】 初心者
【4 VBAでの回答の可否】 希望します
i = Int(100 * Rnd + 1)
変数 i に 1から100までのランダムな数値入れて
その内、NGとなる数字を30個、A1:A30に入力します。
そして i に A1:A30 の値を参照させて判定させたいのですが
複数のセルを参照することができません。
If i = Range("A1:A30") としても、参照されるのがA1だけになってしまいます。
If i = Range("A1,A2,A3…")としても、一緒でA1だけになります。
参照するセルが複数の場合、どのように指定すれば良いのでしょうか?
また、マクロではあまり、セルに入力されている値を参照するものでも
ないのでしょうか?分かりにくい説明ですみません、よろしくお願いします。 >>389
forで回すとか、WorksheetFunctionでやるとか
On Error Resume Next
hage = WorksheetFunction.Match(i, Range("A1:A30"), 0)
On Error GoTo 0
If hage > 0 Then
MsgBox "OK"
Else
MsgBox "NG"
End If findか何かを使えばいいんだろうけど構文を調べるのが面倒だから
ForEachで作ってしまう僕が通るだけで後はまかせますよ >>389
if range("A1:A30").find(i) is nothing then debug.print "NG" 間違えたわ
if range("A1:A30").find(i) is nothing then debug.print "OK" findは文字列・数値で見つからないのが微妙に怖い 見つからないことが困るか困らないかは仕様と目的による findって対象の値が二つ以上あったらどういう挙動なんだっけ? >>396
最初に見つけたところで検索終了
ただどこまで検索したのかの位置は内部的に記録してあって
それ以降のを検索するには
FindNextメソッド使って終わりまでループさせる
正直面倒な仕様だと思われ vbaでIEを動かす際、テキストボックスへのfocusが、成功するときと成功しない(で次の処理に移行しエラーが出る)ときがあります
安定させるのに何か方法はないでしょうか? エクセラーってちょっと響きかっこよいですよね
ワード… 【1 OSの種類 .】 Windows8.1
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
10シートのうち,「作業用」,「転記用」という名前が入っているシートがいくつかあります。
通常は非表示にしてあり,現在は,担当者が再表示する場合は「校閲」→「ブックの保護」→「パスワード入力」と行っています。
これを,例えば「シートの再表示」というマクロを実行すると,
1.「校閲」→「ブックの保護」→「パスワード入力」 まで自動で進む。
2.パスワードを入力する。
3.「作業用」,「転記用」という名前が入っているシートのみが再表示される。
また,逆に,
例えば「シートの非表示」というマクロを実行すると,
1.「校閲」→「ブックの保護」→「パスワード入力」 まで自動で進む。
2.パスワードを入力する。
3.「作業用」,「転記用」という名前が入っているシートのみが非表示される。
といいう動作にしたいです。
どのように記述したらよいか教えてください。 >>400
エクセラだとインスタントコーヒーになってしまうので、エクセリストが推奨されています >>401です。追記です。
パスワードなしの場合は,以下のように記述しています。
Sub 転記用シート一括非表示()
Dim s As Worksheet
For Each s In Worksheets
If InStr(s.Name, "転記用") > 0 Then
s.Visible = False
End If
Next s
End Sub
Sub 転記用シート一括再表示()
Dim s As Worksheet
For Each s In Worksheets
If InStr(s.Name, "転記用") > 0 Then
s.Visible = True
End If
Next s
End Sub アドバイスありがとうございました。
とても勉強させて頂きました。
私もいつかは回答者さん側になれるよう精進したいと思います。 A1をリスト入力に設定し、リスト候補をセル範囲指定に
している場合で、セル範囲(縦一列に入力)の下部セル
にリスト候補を追加入力しただけで、リスト候補として
追加される方法はありますか? >>406
C列に候補を入れているとした場合にデータの入力規則でリスト、
元の値のとこを↓にすれば出来る
=OFFSET(C1,0,0,COUNTA(C:C),1) 入力セルがA列、リスト候補の列が別のとこに設けている
ようにしています。
新しいリスト候補ができると、都度入力規則を設定し直
しているのを省略したいです。 >>406
リストの範囲を縦一列にしたらそうならんか? 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2016
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
Excelは計算量が多いと途中で計算をやめると聞きましたが、本当ですか?? >>411
ステータスバーに処理のパーセンテージが表示されてる時にEsc押すとキャンセルできる
って話? 本当
試しにA:Aに=1+1とか入れてみると良い
>413
キャンセルしなくても終わる事はあるよ vba で複数シートを一括印刷する際、A1セルに「××」という文字列があるシートは除外して印刷するような設定ないでしょうか? >>406
追加入力?
ちょっと後半の意味わかんない
画像つけてよ 【1 OSの種類 .】 Windows8.1
【2 Excelのバージョン 】 Excel2013
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
>>383 です。色々と試してうまくいきました!ありがとうございました!
2つ目の試練が出てきました・・・・
A1が1の時、 A3〜M3の範囲で「1であるセル」の下を選ぶ (例えばC3が1なら、C4)
という指定は可能なんでしょうか。 418の続きです。
カレンダーの日付で、●日の時のメニューを、別シート(配送表)に反映させたいんです。
カレンダー様式は曜日が固定されていて、月によって●日という位置が変わるんです・・・
月 火 水 木・・・
1 2 3 4 もあれば
月 火 水 木・・・
31 1 2 3 などもあり、
日付と一致するセルの下のメニューを引っ張りたいんですが、式で可能なんでしょうか。
何度もすみませんが、どなたかご教授願います。 ↓だと半分ぐらいが削除されるのですが、なぜか削除されない行もあります。
セルにはスペースも何も入っていないで。
原因と解決方法を教えてください。
Sub Macro2()
'シート名「***」のC列に空欄のセルがあれば、その行を行ごと削除して詰める
Sheets("***").Select
For r = Cells(Rows.Count, "C").End(xlUp).Row To 2 Step -1
If Cells(r, "C").Value = "" Then
Rows(r & ":" & r).Delete
End If
Next r
End Sub >>420
For r = Cells(Rows.Count, "C").End(xlUp).Row To 2 Step -1
If Cells(r, "C").Value = "" Then
debug.print r&"行目の中身:"&Cells(r, "C").Value
Rows(r & ":" & r).Delete
End If
Next r
って感じでコンソールに出力すると良いよ
他にもF8のステップインって機能がある
一行一行見ていけば、変な行がわかる >>383,418
これでどうでしょう。
=IF(A1=1,OFFSET(A3,1,MATCH(1,A3:M3,0)-1),"")
=IF(A1=1, ,"") の部分は説明不要ですね。
OFFSET(A3,1,MATCH(1,A3:M3,0)-1)の解説
OFFSET(A3,1,□) で、A3セルを基準に1行下、□列右のセルを指定したことになります。
□はどうやってもとめるか・・MATCH関数の出番です。
MATCH(1,A3:M3,0) で、A3:M3セル範囲(1行×13列)の中から値が1のセルが何番目に
あるかを求める関数です。例えば、D3セルが1だったらMATCH関数の値は4になります。
このままではA3セルを基準に1行下4列右のセル=E1セルを指定してしまうことになるので
MATCH( )-1 としています。
ただし、A3:M3に一致する値がない場合はエラー #N/A となります。
なお、>>419を見てみた限り、この方法がいいのかどうかはわかりません。表の全体がもう少し
詳しくわかればいいのですが・・・。
かといって、実際のファイルをアップすることはしないように。
週間カレンダー形式の表は私もいくつか作ったことがあります。 >>419
俺だったら、日付とその日のメニューを
左右2列に並べたシートを作り
それを元にカレンダー作るけどね
休業日のシートも作って
それもカレンダーに反映させればいいし
万年カレンダーでググればヒントになるの見つかるよ >422 ありがとうございます!自分の知らない関数でした!
確かに、これだといけますね!
範囲を複数にまたがる時ってどうしたらいいんでしょうか?
カレンダーなので、行が変わるんです。「A3:M3」だけでなく、
「A10:M10」も みたいなイメージです。
>423
横に書くデータ入力シートを作って、それを反映させるって意味ですね?
入力する素人おばちゃんが、縦と横、目を回さずに間違いなく入力できたら
いいんですが・・・一度話してみます!
色々とありがとうございます。 >>424
横じゃなくて縦並び
手帳と同じ
日付,メニュー
2019/8/28,オムライス
2019/8/29,ハンバーグ定食
って感じ カレンダー作る時
日付を“1”で入れるか“2019/9/1”で入れて
書式にd入れるのは見かけ同じで意味が違う
後者の方が応用させやすい 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 少し
【4 VBAでの回答の可否】 不可
あるシートのA5に、=IF(A50>0,"支払済","未") という関数が入っており、それがZ列まであります。
それぞれ、50行目に金額が入っていれば 支払済、なければ 未 と表示されるようになっています。
このA5からZ5に、「値が 支払済 なら背景色変更」という条件付き書式を設定しようとしているのですが、
うまくいきません。
なぜか「値が 未 なら背景色変更」というのはできます。
「支払済」という文字が間違っているとは思えません。「済」という文字のコードに問題が?とか思って
関数も「すみ」に変えてもダメです。「未」だけ判定できる条件付き書式なんてありえるのかと
わけがわかりません。
何かアドバイスください。お願いします。 >>427
それって、色を変える書式の条件を A50>0 にすればいいだけのような >>427
支払済を試しに半角英数字に変えてみては? >>427
絶対参照にしてたというオチはないだろうか >>427
条件式に間違いは無いのでは?
ただ、それに対応する書式がきちんとしていないとか?
>>428
普通はそうだよね。
強いて言えば、A50に"金額"という名前を付ける方が後で修正のときに迷わない。 細かいこというけど、A50が空白かどうかの判定は
A50>0,"支払済",“未”
じゃなくて
ISBLANK(A50),"未","支払済" >>427
結局、支払済と未でそれぞれの背景を何色にしたいねん?
それを書かないとなんともなあ。 >>424 簡単に作ってみました。
>>423さんが書いてるような、入力のためのシートと週間カレンダー形式のシートで構成しています。
両方のシートを画面イメージでアップしました。
https://i.imgur.com/kVRc5G6.png
曜日固定のカレンダーに日付を設定するのは第1週の最後の曜日の日付を求める計算式が要です。
B1セルとC1セルに入れた年と月とI4セルの計算式で求めています。
I4セルの計算式の説明は割愛します。C4:I4、C7:I7、・・・のセルは計算式で日付を出しています。
セルの書式で日付のうちの日部分だけ表示するようにしています。I4セルだけ年月日を出してます。
入力シートから日付をキーとして引用する計算式は、図の下の方のF5のセルの
=IFERROR(VLOOKUP(F4,入力!$A$2:$C$50,2,FALSE)&"","") です。
$A$2:$C$50という、49行×3列のセル範囲の先頭列が日付の検索範囲で、2 は該当したら
2列目(B列)のセルを返すようにしています。
項目2の欄であるF6セルの計算式は
=IFERROR(VLOOKUP(F4,入力!$A$2:$C$50,3,FALSE)&"","") です。違いはわかりますか? >>427
色変える条件式どう書いたか晒してみ?
>>432
それだと数字以外でも支払済みになる >>408
返事が遅くなってしまいましたが、できました!
ありがとうございます! 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 勉強中
【4 VBAでの回答の可否】 可
数式や関数がたくさん入っていて非表示になっているシート1があるとします。
VBAで、このシートのコピー(各セルの値はすべて値を貼り付け的な処理をして関数や数式は残さない)
を別ファイルとして保存することは可能でしょうか?
可能なのかどうか、また、できればそのコード(長くなるならヒントだけでも)を教えてください。 >>437
可能です。
マクロの記録でもできそう。 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2019
【3 VBAが使えるか .】 可
【4 VBAでの回答の可否】 可
特に質問はないので、一応テンプレだけ。 >>437
特殊な処理無いし書いてることそのまんまやるだけ >>437
ようは、マクロの記録でも出来る
そのマクロコードでオブジェクトやプロパティの意味を知りたければドラッグしてF1押せばマイクロソフトのサイトで解説してくれる >434
ありがとうございます!
まだパッと見てもわからないので(笑)
少し夜考えてから質問させてください!
写真まで丁寧にありがとうございます(^◇^) >434
何分か見比べてみました。何となくわかります!(笑)
画像つきで丁寧に教えていただきありがとうございます(^^)
VLOOKUP関数なるものは、検索してわかりました。(IFERRORも)
これを使うには、入力シートが、横に項目1・2と続く場合に
拾うというものですよね。縦のものを拾う関数は存在しないんでしょうか。
お弁当屋さんなんですが、結構デザートまで入れると6種目あって、
メニューの品名も長くて。縦に項目1・項目2として、それを反映する関数だと
一番入力する人間もわかりやすいのかなって思ってしまい・・・
でも、これが一番よいのかも!? >>443
一応、HLOOKUPというものもある
今年後半からXLOOKUPというのも出るそうだ
VLOOKUPよりindex+matchの方が使い勝手良いから使ってきたけどXLOOKUPの方が楽かもしれない >>443
まさか”メニュー”という言葉が出てくるとは!
自分は現在、福祉NPOに関わってて、ボランティアでパソコン関係の支援をしてます。
NPOの調理部門のメニュー表作成で以前作ったもののイメージをアップしたので参考にしてください。
https://i.imgur.com/rtRqHo9.png
左側のシートは”DB”シートです。同じ日付で4行あるのは、朝・昼・夕・おやつ の4種類のためです。
VLOOKUPの対象となるのはC列〜I列です。
出力側シートのC11セルの計算式が見えてますが、おもしろいことに「昼食」の欄(C9:C13)の計算式は
全て同一です。計算式中の ROW()-7 の部分で自動的に引用する列をずらしているからです。
C11セルなので ROW()-7 の結果は 11-7=4 → VLOOKUPの対象となるのはC列〜I列なので
4列目にあたるF列の値が引用されます。 vlookup をdisってようやくExcel上級者として認められる >>446
vlookupをindexとmatchで置き換えるのは中級レベル LOOKUPだと縦でも横でもいけるんじゃなかったっけ?
INDIRECTとMATCHが好きだけど vlookup 初級者
indexとmatchで 初級者+
vlookupmatch 中級者
実務で間違いが起こらないように数式を組み立てる事が出来る、これが一番大事
技術が幾ら凄くても間違ってたら駄目なんだ 実務では無駄に凝った数式作って後でメンテする人に迷惑かけない事が大事 >>453
しかし自分が使うとなると実装したくなる病気が発病するよね〜
楽したい〜 分かるマン
なんなら誰かが見つけて称賛されたいマン I列にゼロがあれば、そのセルをクリアにするようにしたいのですが
For Each c In Range("I:I")
If c <= 0 Then
c.Clear
End If
Next c
これだと結構時間がかかります。
早くするコードをおしえてください >>456
範囲の値を配列に入れてそれを処理したあとまた範囲に戻す >>456
オートフィルタかけたらいかんの?
range("a:i").autofilter field:=9,criteria1:="<=0"
range("i:i").clear
range("a:i").autofilter それか、「0を含む」ではなく「0固定」なら置換使った方が楽で速いんじゃね >>456
Sub Macro1()
列 = 9
最終行 = Cells(Rows.Count, 列).End(xlUp).Row
For i = 1 To 最終行
If Cells(i, 列) = 0 Then
Cells(i, 列).Clear
End If
Next
End Sub
>>457-459
お、お前等
シートの最終行まで見てる事が遅い原因だぞ >>460
いや、Rangeを使ってるのが原因
Rangeは遅いから大量セルを弄るのに使うのは向かない Excelの機能でできることはExcelの機能で実現しないと遅くなるよな 大量のセルを扱う時はRangeじゃなくて配列で処理したら一瞬だよ 【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
あいうえおおおかき(abcd)くけこさ(efef)しすせそた(gggg)ちつてと
上のようなパターンの文字列がありまして、いくつか(多くて5つくらい)のカッコで囲まれた文字列を除く計算式が知りたいです
結果こうなりたい
あいうえおおおかきくけこさしすせそたちつてと
置換Ctrl-Hじゃなくて計算式でよろしくおねがいします。 >>401 >>404ですが,いかがなものでしょうか? >>465
=substitute(a1,"あ","")
みたいな感じで
>>466
難c >>465
ユーザー定義関数使っていいなら出来るが
VBA否だからなあ VBA実行ファイルと同じフォルダ内に複数のCSVファイルがあり、そのCSVの各ファイルのA〜Gの2行目以降を
コピーしてVBAを実行するBookの“日報”と言うシートに張付けて、行を累積していくコードを教えてください。
それぞれのCSVファイルの最終行はA行の最後です。 >>471
何かの試験問題か?
>A行って何?
A~G言うから、これ列指定かと思ったら行と来たもんだ?
そもそも、どういう構造のCSVやねん? 複数のシート間で対応するセル同士を相互リンクするのって関数じゃ無理ですか?
どちらで更新しても全てに反映されるような >>472
すみません。A列でした
それぞれのCSVファイルはA列〜G列に文字が記入してあります。 >>471
そのCSVはExcelで開いても書式が崩れないやつ?001が1になったりとか >>471
CSVファイルの指定はどうやって行うの?
ダイヤログ?.csv全部?あと順番は?
フォルダへのCSVファイルの移動(またはコピー)は手動?重複チェックは必要? んなツール自体の仕様みたいな部分は本人があとから好きに付ければいい部分じゃね >>471
あと、素朴な疑問だけど、日報もCSVじゃダメなの?日報がCSVでよければコードは超簡単になるんだけど >>473
相互参照の必要性が全く無い
それが出来ないと不便なことがあるのか? >>465です
普通の関数だけではできないんですね
ユーザー定義関数ならできそうですか よろしくお願いします >>481
Range(置換する範囲).Replace "(*)","" >>477
・フォルダ内のCSV全てです
・CSVファイルは手動でフォルダに入れます
・重複チェックは必要ありません
・順番は不順です >>483
処理速度は考慮してない
--------------------
Const PATH = "フォルダパス\"
Dim cnt As Long
Dim fname As String
Dim buf As string
cnt = Cells(Rows.Count, 1).End(xlUp).Row
fname = Dir(PATH & "*.csv")
Do While fname <> ""
Open PATH & fname For Input As #1
Line Input #1, buf '※
Do Until EOF(1)
Line Input #1, buf
If Split(buf, ",")(1) = "" Then Exit Do
cnt = cnt + 1
Range(Cells(cnt, "A"),Cells(cnt, "G")).Value = Split(buf, ",")
Loop
Close #1
fname = Dir()
Loop
End Sub
--------------------
※は1行目が必ずある前提。無いなら別の処理がいる 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2007
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
列
A B
1 3
2 1
3 5
4 2
5 4
列Aと列Bを比べて3と5は2つ順位が上がったとして
列Aより列Bの数字が2つ以上順位が上がった事を見つける数式
また該当数字のセル色を変える方法はありますか?
よろしくお願いします >>481
作業列5列ぐらい使ったらできると思うよ >>485
同じ行同士比較するんであれば、条件付き書式(数式利用)で、作業列使わずにできますよ。
1行目からデータがあるのであれば、A1:A5(実際にはデータがあるところまで)のセル範囲を選択しておいて
ア リボン → ホーム → 条件付き書式 → 新しいルール → 数式を使用して、書式設定するセルを決定
イ 数式を入れる欄に =A1<=B1-2 と入力
ウ [書式]ボタンをクリック
エ 塗りつぶしのタブをクリック → 塗りつぶす色を指定 → [OK]をクリック
オ [OK]をクリック
A列の値 <= B列の値から2を引いた数字 が成り立てば「2以上順位が上がった」としています。
A列の値にゼロがありうる場合は、 =AND(A1>0,A1<=B1-2) でいいかも(試してません) >>487
ありがとございます
チャレンジしてみます このソフトを快適に動かせるPCのスペックってどこを重視すればいいんでしょうか?
IEとかも動作させたりするせいか
結構重いのです >>489
メモリー
CPUは基本的に食わない。VBA使ってて消費量が多ければコードを見直す方がいい Excel+IEは
・CPU 2コア4スレッド以上
・メモリ 12GB〜
あればほぼ大丈夫
8GBだとたまにスワッピング起こって重くなる感じ https://moripro.net/vbaie-gethtml/
こちら検索して出てきたもので、これをそのまま使って起動済み画面のHTMLを取得しています
しかし、目的の画面のHTMLを読み込んだ後、処理@〜B(リンクをクリックする、テキストボックスに記入するなど)を入れると、
Aを飛ばして@Bと遷移するときと@~Bとうまく遷移することがあります
この違いはなんでしょうか?回避方法ありませんか? 380で質問した者です。
質問に対し、フィルタオプションを使用してみては?
とご回答くださり、その場は対応できたのですが、質問に大事な事を書き忘れました。
売上表は複数シートからの抽出された、昇順並び替えをしている可変データになります。
そのため、フィルタオプションだと、データが変わるとフィルタオプションでは
設定した時の抽出状態なので、やはり式の修正が良いのではと思っています。
再度質問して申し訳ありませんが、式の修正で良い方法があったらご教示くださるとありがたいです。 >>496
{=SMALL(IF((A$1:A$100<>"A店舗夜間")*(A$1:A$100<>"B店舗夜間"),B$1:B$100),ROW(A1))} >>401 >>404 >>466です。
>>468
フォームを使う方法でかまいません。
>>404に追記する形でも,まるっきり0からでもよいので教えてください。 >>497
>>498
496です。498さんの式でできました。ありがとうございました。 >>499
ユーザフォーム一つ作ってパスワード入力用のテキストボックスを置く
保護ボタンとか解除ボタンとか付けて、それ押したらそのテキストでブック保護切り替え、シート表示切替やるだけ
シート上かメニューに呼び出し用ボタンか何か作ってそのマクロを呼び出す
但し、個人で使う用なら関係ないが、他人も使うなら運用でExcelのメニューにある「ブックの保護」を使わないようにしてもらう必要がある
XMLでリボンメニューも弄れるが、そこまでするほどのもんでもない気がするので興味あったらやればいいんじゃないかな >>499です。
>>501
ありがとうございました。
無事,目的のものができました。 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2012
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 不可
関数を教えてください。
セルのT2に「2019/8/19」のような日付の値が入っています。
そこで、毎月20日を締め日として
2019/8/19 なら 2019_8
2019/8/21 なら 2019_9 と返す関数として
=(YEAR(T2)-IF(MONTH(T2)*100+DAY(T2)<=220,1,0))&"_"&(IF(DAY(T2)>20,MOD(MONTH(T2),12)+1,MONTH(T2)))
を使っています。この関数に、「U2のセルが空欄ではなかった場合、1ヵ月繰り上げる」という条件を追加した式を教えてください。 >>503
念のため確認だけど、締め日は当月だよね?
2019/8/20 なら 2019_8 だよね? >>503
=TEXT(T2+IF(DAY(T2)>20,30,0)-IF(U2<>"",30,0),"yyyy""_""m") >>503
=TEXT(T2+((DAY(T2)>20)-(U2<>""))*30,"yyyy""_""m") こりゃだめだったわ
3月1日と3月2日におかしくなる
=TEXT(T2+((DAY(T2)>20)-(U2<>""))*21,"yyyy""_""m") こんどこそ
=TEXT(DATE(YEAR(T2),MONTH(T2)+(DAY(T2)>20)-(U2<>""),1),"yyyy""_""m") ありゃ、式をよく見たら年度初めは3月か
めんどくさいな もっと短くできそうなんだけど、俺にはこれが限界だった
=TEXT(DATE(YEAR(T2)-(MONTH(T2)+(DAY(T2)>20)-(U2<>"")<3),MONTH(T2)+(DAY(T2)>20)-(U2<>""),1),"yyyy""_""m") >>503
ひと月と20日前の年&20日前の翌月
=YEAR(EOMONTH(T2-20,(u2<>"")-1))&"_"&MONTH(EOMONTH(T2-20,(U2<>"")+1)) >>503
=YEAR(T2)&"_"&MONTH(EDATE(T2,IF(DAY(T2)>20,1,0)+IF(U2<>"",1,0))) >>503
訂正したわ
=TEXT(EDATE(T2,IF(DAY(T2)>20,1,0)+IF(U2<>"",1,0)),"yyyy""_""m") VBAのユーザー定義関数なら簡単なんだけどなあ
ワークシートの数式は途中経過からの分岐がめんどくさすぎる 一応できたけど、式が汚すぎる
=TEXT(DATE(YEAR(DATE(YEAR(T2),MONTH(T2)+(DAY(T2)>20)-(U2<>""),1))-(MONTH(DATE(YEAR(T2),MONTH(T2)+(DAY(T2)>20)-(U2<>""),1))<=2),
MONTH(DATE(YEAR(T2),MONTH(T2)+(DAY(T2)>20)-(U2<>""),1)),1),"yyyy""_""mm") 既に分かり易い答えがいくつか出てるのに何故そんな式を >>519
繰り上げって次の月にするって意味じゃないのか? え?時間や日付の繰り上げって数字が減る方向だよな? >>522
どれも間違ってるからだよ
質問の文章には書かれてないけど、例示された数式を見ると年度の変わり目が3月になってて、誰の回答もそれが反映されてない 訂正
正 "yyyy""_""m"
誤 "yyyy""_""mm" そうだったのか、じゃあ不等号か足し算を逆にしてくれ すまん
安価が無さすぎてどんな流れかサッパリわからん それどころかIDも無いから誰が連レスしてるかも分からん >>503
繰り下げ?を直して年度にしたわ、汚いわ
U2が空白でない場合、2019/8/19なら2019_7、2019/8/21なら2019_8と表示されるぞ
=YEAR(EDATE(T2,IF(DAY(T2)>20,1,0)+IF(U2<>"",-1,0)-2))&"_"&MONTH(EDATE(T2,IF(DAY(T2)>20,1,0)+IF(U2<>"",-1,0))) IDすら無いんだからせめて安価くらいちゃんとやらない? 質問です。
この知恵袋の人と同じことをやりたいのですが、
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1197141151
回答にある
B1=IF(A1="","",MAX(INDEX(Sheet1!$A$1:$A$10*(Sheet1!$B$1:$B$10=A1),)))
のアスタリスクは何をやっているのですか?
参照範囲の結合?なのでしょうか… >>530
IF関数の結果の片方が0の場合は式を短縮できるよ
=YEAR(EDATE(T2,(DAY(T2)>20)-(U2<>"")-2))&"_"&MONTH(EDATE(T2,(DAY(T2)>20)-(U2<>""))) >>536
式を短縮してるのではなく、論理式の結果がTrue(1)かFalse(0)になる 無意味な短縮ならまだできる
=YEAR(EDATE(T2,(DAY(T2)>20)+(U2="")-3))&"_"&MONTH(EDATE(T2,(DAY(T2)>20)-(U2<>""))) >>504
そうです。締め日は当月です
>>510
もし めんどくさいのであれば、年度の締め日を無視してもいいです
もしU2に値が入っていたら
2019/8/21 → 2019_10
2019/10/25 → 2019_12
2919/7/19 → 2019_8
2020/9/10 → 2019_10
2020/2/16 → 2020_3(年度ではなかった場合)
もしU2が空欄の場合
2019/8/21 → 2019_9
2019/10/25 → 2019_11
2919/7/19 → 2019_7
2020/9/10 → 2019_9
2020/2/16 → 2020_2
>>523
繰り上げは次の月(翌月)でお願いします。
>>525
"年度"ではなく"年"どちらでもよいです
>>534
2回目の書き込みです。どれが正解かわからず、いまさらのレスになってしまいました
>>539
U2に値が入っていたら、"翌月"でお願いします。 アンチウイルスソフトに下記のメッセージが出てきたのですが
どういうことか分かる人いますか?EXCEL2019です。
無効な証明書によるSSL接続を検知しました
*****.fp.measure.office.com
証明書の名前が無効です。
名前が許可リストに登録されていないか、明示的に除外されています。;Microsoft Excel >>541
年でいいなら>>518で、
=TEXT(EDATE(T2,(DAY(T2)>20)+(U2<>"")),"yyyy""_""m")
年度なら>>536かな
=YEAR(EDATE(T2,(DAY(T2)>20)+(U2<>"")-2))&"_"&MONTH(EDATE(T2,(DAY(T2)>20)+(U2<>"")))
繰り上げ部分は直した 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 少し
【4 VBAでの回答の可否】 可
シート上に設置したテキストボックスが、フォーカスがないときは中の字がやや
小さくなってにじんでおり、フォーカスを移して中の文字を編集状態にすると、
ほんの少し字が大きくなってきれいな表示になります。
これ、何かのプロパティをいじることで解消できる気がするのですが
何か方法ないでしょうか? >>545
ActiveXコントロールじゃなくてフォームコントロール? >>545
文字より枠を大きくすることで解消する場合があるけど、
他のPCで見るとダメだったり、外部データの取り込み使うと壊れたりで、
完治するかはわからない。 ActiveXをシートに張り付けるのは表示も動作もクソすぎてお勧めできない
前まではマクロが死ぬレベルだったけど、標準フォントが変わって表示も怪しくなってきた
フォームでいけるならフォームを使った方がいい つかWin10環境でOffice2010使ってるのがそもそもクソ なんだかんだ言って、2010は多数派でしょ。
たまたま購入したPCにバンドルされてたってのを別にして、
ちゃんと金を出してOfficeそのものを購入し毎日Office使ってるというレベルのユーザーだけだと、
2013が1位で、次が2010じゃないかという印象。 2年前のデータだが、古いバージョンを使い続ける人はかなり多い
https://i.imgur.com/xfim4zV.png 【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2013
【3 VBAが使えるか .】 既存コードを微修正する程度(行列範囲等)
【4 VBAでの回答の可否】 極力不可
https://imgur.com/o9jyjCw
上記左の表の様なデータを元に、右の表の様な一覧表を作りたい。
県・種類の値は元データにより変わる為、各項目は自動抽出したい。
県+種類の値が重複したデータがある場合は、どちらか一方の表示でも可。
ピボットテーブルを試してみたのですが、特定列の値そのものを
表示させる事が出来なくて困っています。
お知恵をお借りできませんでしょうか。 >>553
ピボットの値フィールドは集計したりカウント等するところだからそこにコード(文字列)
を表示は無理な気がする
VBAならできる >>553
Access2010のピボットで出来るがAccess2013ではその機能がなくなった
そのため俺はいまだにAccess2010を使い続けている 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
タイトル行内に画像データを張り付けて、その画像データを
1ページ目にだけ印刷させたいのですが、何か方法ありそうでしょうか。
例:横の印刷セル範囲がHまでとして、タイトル行に$1:$6を設定。
H4ぐらいに画像あり。 【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2007 or Excel2010
【3 VBAが使えるか .】 使えない
【4 VBAでの回答の可否】 不可
Excel2007かExcel2010が欲しいです
中古でいいのですがどうやって手に入れたらいいでしょうか
ヤフオクなどで3000円以下で売っていますが、信頼できないため、出来れば店舗のあるお店で購入したいです
よろしくお願いします。 B列
1行目=北海道
2行目=青森
3行目=秋田
4行目=秋田
5行目=岩手
6行目=宮城
7行目=山形
8行目=山形
9行目=山形
10行目=新潟
11行目=福島
12行目=福島
この時にA列に、隣のB列の値が「上から何種類目」にあたる値なのかを返す式を教えてください
A列 / B列
1行目=1 / 1行目=北海道
2行目=2 / 2行目=青森
3行目=3 / 3行目=秋田
4行目=3 / 4行目=秋田
5行目=4 / 5行目=岩手
6行目=5 / 6行目=宮城
7行目=6 / 7行目=山形
8行目=6 / 8行目=山形
9行目=6 / 9行目=山形
10行目=7 / 10行目=新潟
11行目=8 / 11行目=福島
12行目=8 / 12行目=福島 >>558
ん?
都道府県コードを振りたいの?
47しかなから、
総務省あたりのコード順で、重複なしリスト表を別に用意して
VLOOKUPあたりで参照するのじゃだめ? >>558
作業列を使っていいなら割と簡単です。C列を作業列に割り当てる場合・・・
C1セル なし
C2セル =(B2<>B1)*1 を入力して、下へフィルコピー
A1セル 1 を入力
A2セル =A1+C2 を入力して、下へフィルコピー
ただし、これが成立するためには、B列のデータは並べ替えが済んでいること。
離れたところに同一データが存在する場合はうまくいきません。C列の計算式は直上セルの値との比較だけなので。 >>558
元データをテーブルにしておいて(参照範囲が自動的に拡張される)
その範囲を参照するクエリーで、
重複削除とインデックス列追加で番号振って、
それを参照表にしたら?
元データに追加・削除があっても、
クエリーの更新ボタン一つで
あとはA列に入れたVLOOKUPかINDEX(MATCH())参照で
番号が振り直されるけど? >>556
1ページ目だけ印刷して画像非表示にして2ページ目から印刷するマクロを作る >>555
クロス集計、という機能ですね。これがやりたい事でした、ありがとうございます。
ACCESSか...会社で聞いてみようかなぁ。 >>561
自己レス 見直したら作業列いらなかった。C列の計算式をA列の計算式にくっつけるだけ。 >>553
「県」のセルをA1とする
{=IFNA(MATCH($G2&H$1,$A$2:$A$5&$B$2:$B$5,0),"")} >>553
肝心の抽出を忘れてましたわ
{=IFNA(INDEX($C$2:$C$5,MATCH($G2&H$1,$A$2:$A$5&$B$2:$B$5,0)),"")} 熟練者の方々はOnkeyメソッドって使われてますか?
便利なのは間違いないとは思うのですが… パワーピボットに関する日本語の解説書が
ぼちぼち出てきた模様。
どれを読もうかな? パワーピボットは弄りながら何となく使えたんだけど(かなり便利)パワークエリは分からなすぎた
本買わなきゃ 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2013
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 可
関数について教えてください
A B C
100 500
AかBのどちらかが空欄だったらCも空欄
AとBの両方に数値が入っていたら、CにB-Aの値を表示させるには
どういう数式を組み立てたらいいでしょうか?
↓みたにさせたいです
A B C
100 500 400
100 空欄
500 空欄 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Office 365 Education
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】否
私は学生でmosの2016年版の資格が取りたいと思っています
学生版無料Officeのexcelを最新から2016年にダウングレードすることはできますか?
もう2016年mosの本を買ってしまったのですが、最新版excelである程度やっていくというのはあまりよくないでしょうか?
最悪の場合2016年のexcelを今から買うしかないですよね >>579
大差ないからそのまま受ければok
ってか、あれ超簡単だからそんなに深く悩まなくてもいいよ
2010とか古いバージョンだとキツイけど >>579
FOM出版のCD‐ROMインストールする模擬試験だと、どうしても(ver.の違いが原因で、合っていても)不正解になってしまう問題もあるので、それだけ本の解答で確認すれば大丈夫かな。 >>580
>>581
>>582
ありがとうございます
現状あるもので勉強を始めたいと思います! 新規イオンカード発行で20%キャッシュバック祭り始まるぞ!増税前に大きい買い物するチャンス!
イオンカード決済で10%、イオン口座引き落とし設定で更に+10%
計20%最大10万円まで還元
https://i.imgur.com/0HjY856.jpg
入会時紹介コード1500P
https://i.imgur.com/TaIwhhO.jpg
※イオンカードセレクト(イオン銀行と一体型したクレカ)がオススメ 今までエクセルほとんど使ってなくて、イキナリ経理に移動になりバリバリ使うことになった。自習で使えるテキストでいいのあります?
緑色のFOMとか使ってた人います? オレもいきなり経理に異動したがExcelはあまり使わなかったぞ
金庫の現金を管理するくらいだった
税理士の指定した経理ソフト使ってたから 経理ならExcelより奉行とかMJSとかPCAとか弥生の使い方覚えた方が…
大手なら他のもあるけど突然経理に配置転換する規模の会社なら 経験者かどうかも確認せずに配置転換するぐらいの会社なら、必要な知識は行った先ですべて教えてくれると思って間違いないよ フィルタをかけた時のこの矢印はなんという名称なのでしょうか?
https://i.imgur.com/PJ4CZen.png >>590
プルダウンとかドロップダウンとか
といっても会社・・・というか人によって好きに呼んでたりする事も多いので、そこは臨機応変に。 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2016
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 可
初心者です、ググっても見つからなかったので教えて下さい。
Excelで複数のパターンの数値を特定の数値にしたいのですが条件の分け方がわかりません。
具体的には、あるセルAの数字が
10以下の時→1.0
11以上15以下の時→0.8
16以上20以下の時→0.6
21以上25以下の時→0.4
26以上30以下の時→0.2
31以上の時→0.1
の6パターンについて、
右側の数値をセルBに表示させたいのですが、If関数の説明などでは2〜3パターンの条件分岐例ばかり出てきます。
このような指定は可能でしょうか? >>585
真っ当な会社なら
会計システムを導入してる
不正行為防止で誰が操作したのかの記録もする
経理でのexcelの用途なんて
会計システムでサポートしていない統計グラフを
作る事ぐらいか
ただの収支表ならどの会計システムでも作れるし windows7
2013
いいえ
否
シート1のA1からA10に入力されている10個のデータを、シート2のB列に上から順番にコピーしたいです
ただ、コピー先はB1,B3,B10,B14....のように行番号が不規則なため、どうしようか悩んでおります
どうすればよいでしょうか >>596
シート2
A1,A3,A10,A14.... ○
B1 =IF($A1="○",INDEX(Sheet1!$A$1:$A$10, COUNTIF($A$1:$A1,"○")),"") >>593
=IF(A1<=10,1.0,IF(A1<=15,0.8,IF(A1<=20,0.6,IF(A1<=25,0.4,IF(A1<=30,0.2,0.1)))))
をB1セルに入れる
要するに入れ子構造(ネスト)にする
最初のIF関数で10以下かどうか判断し、yesなら1.0
Noなら次のIF関数で15以下かどうか判断
以下繰り返し
ということ
11以上かどうかは10以下ではないという判断が済んでるから不要
A1に入るのが整数ならこれでOK 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2016
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
"確認票"というシートと"集計表"というシートがあり
"確認票"はマクロ実行中に作るシートで、"集計表"はその"確認票"を参照した関数がたくさん入っているシートで、マクロ実行までは表示せず
マクロ実行の途中で表示させたいシートなのですが、"集計表"の各セルの値をVBAで書くのは大変なので、予め作っておきました。
しかし、"集計表"を作って"確認票"を削除してしまうと、"集計表"の関数もエラーになってしまいますので、"確認票"を削除しても記録しておく方法はないでしょうか? >>603
"確認票"はマクロ実行中にできるものなので、予め作った"集計表"はマクロ実行前は
計算前の関数だけ入ったシートです。 >>604
計算したら確認票を削除するんだろう?だから消す前に値貼り付けすればいいんじゃないのか >>603
参照元が消えるのだから#REF!エラーが起こるのは当然かと
参照するのではなくて、集計表に値をコピペするしかない。
マクロ組めるならその作業を自動化すればええねん。 安価ミス
>>603じゃんくて
>>602
>>604
この確認表というのはどういうの?
シートじゃなくてフォームで作るべきじゃね? 返事くれた人達ありがとうございました。うちの経理はまだまだExcelをふんだんに使うみたいです。システムなどはまだまだだと思います。
あとExcelを自己研鑽にもしたいと考えています。事務職だとExcelから逃げる事は出来ないですよね?
自分の武器にしたいと思います。 >>604
Excelでのフォームの作り方はググれば分かる。
単票フォームで「確認票」を作り直すのがオススメ
フォームで入力すれば集計表に値として保存される。 >>608
フォームを作るにしても、レポートを作れる点でも
Accessの方が遙かに役に立ちます。
実際、自分はAccessでデータベース作って経理の仕事してましたし。
月間集計、年間集計も、予めレポートを設計しておけばフォーム上のボタンをポチッとするだけで
出力できます。 >>610
社内で使うツールを個人で勝手に変えれないだろ… >>608
逆にExcelでないとなという用途は万年カレンダーだけですかね。 >>602,604
マクロ実行中に作る”確認表”シートは、最終的に削除してしまう。・・・ここを変えたらどうですか?
”確認表”シートを通常は非表示にしておいて、必要な時に再表示するとか。マクロで制御したら
操作する人にはパッと現れ、パッと消えるように見える。
シート自体は消えないからエラーにもならない。 集計後に参照元を削除するなら数式を残しておくこと自体無意味に思えるが… >>611
そういうならパッケージソフト入れるべき
Excelで経理うんぬんならAccessの方が楽という例
示しただけ >>604は参照と複写の違いを理解してないんだろな
クエリとテーブルを同一視するのと同じ >>602のいう確認票は集計表に保存したいデータを入力するためので、参照の意味を理解してないから
集計表に確認票のセルを参照する式を入れてる
実験としては興味深いが、それ以上に奇妙な作り
何でわざわざ確認票を毎回削除して生成してるのかは不明
ちなみにシートを削除した時点で
excelのシステムはそのシートにあったセルを参照する式に
#REF!を設定するするから、無意味なんだよね
何にせよかなり奇妙な事してる
もうレス無いから放置でええなと DF4とDU4の値のいずれか高い数値が1以下であれば
14行目〜15行目を削除
DF4とDU4の値のいずれか高い数値が2であれば何もしない
DF4とDU4の値のいずれか高い数値が3以上であれば、その値の回数を
14行目〜15行目をコピーして、16行目以降に2行づつ貼り付ける
というコードを教えてください<(_ _)> >>616
ツールの編集ではなく使用ツール変える権限の話をしとるんだが >>619 実際に試してません、あしからず。
Dim 値 as Integer ' DF4,DU4とも整数という前提です
Dim cnt as integer, セル as Range
With ActiveSheet ' 処理対象シートの指定
値 = .Range("DF4").Value
If 値 < .Range("DU4").Value Then 値 = .Range("DU4").Value
Select Case 値
Case Is <= 1
.Rows("14:15").Delete
Case Is = 2
' なにもしない
Case Is >= 3
.Rows("14:15").copy
Set セル = .Range("A16") ' 貼り付け開始位置
For cnt = 1 to 値 ' 3以上のときはその値回数分貼り付けを繰り返す
セル.PasteSpecial Paste:=xlPasteAll ' 貼り付ける種類はお好みで
Set セル = セル.Offset(2, 0) ' 貼り付け先を2行下へ
Next cnt
End Select
End With
もし、”高い数値”が3のときの貼り付けは1回 ということであれば For cnt = 3 to 値 に変更してください。 >>571-572
ありがとうございます
勉強させてもらってます >>621
ありがとうございます。勉強になりました<(_ _)> >>624
普通に考えてExcelの話してるのにAccessで良いじゃんて話して、いやExcel使ってるんだけどと言われてじゃあパッケージソフト入れれば良いって話通じてなさすぎじゃね
後から来た新入りがAccessに変えましょう!とかパッケージに入れ替えましょう!とか言えないでしょって話だろ >>625
そんな事知らんがな
Excelを万能ツールとでも思ってるの? シート"計算"のB1から最下行のCV列までコピーし、シート"累積"の最下行に貼り付ける。
最下行はシート「計算」・「累計」共にB〜CVまでのいずれかの最下行
このコードを教えてください。 >>599
>>601
こういうことです!
ありがとうございます! 「今年」シートのE列に「商品名」、G列に「製造日」、J列に「製造工場」が入っていて、
別の「指示書」シートのC列に商品名、E列に製造日、H列に製造工場を入力すると、
I列に「今年」シート商品名・製造工場が一致するなかでG列から今日の日付から最も近い前回製造日が表示される関数を組みたいです。
3つの条件のうち2つ一致する中から1つの近い条件の引っ張り方がこんがらがっています。
MATCHとかDGETとか調べてやっても返ってくるのはエラーばかり…
どなたかご教授をおねがいします! >>626
個人がどう思ってようが職場では用意された環境でやるしかないんだぞ
理屈の通じないやつだなぁ >>629
VBAマクロなしだと・・・ピボットテーブルとの組み合わせかなあ。
今年シート対象でピボットテーブルで行方向に商品名、列方向に製造工場、値フィールドに最大値を指定すると、
商品名と製造工場の組み合わせ別に最大値=最新の日付の表が出来上がる。
あとはINDEXlとMATCHを行方向、横方向で組み合わせればなんとかできそうですが。
ところで、指示書シートのE列(製造日)は、今回の質問には関係しませんよね? >>629
商品名と製造工場を文字列連結で繋げて(K2 = E2 & "-" & J2 みたいに)単独のキー列にしてしまえば後の処理が楽なんじゃないかな
それで、ソートが許されるなら製造日(G列)で降順でソートしたら、K列をキーにしてVlookupで拾える
vlookupだと製造日をK列より右側にコピーしないとならんけど >>629
=MAXIFS(今年!$G$2:$G$10,今年!$E$2:$E$10,C1,今年!$J$2:$J$10,H1,今年!$G$2:$G$10,"<"&now())
範囲は適当
該当日付が無かったら0になるから必要なら好きにエラー処理して >>631
629です。指示書シートは同一ファイル内にあります。
今年シートのデータベースから探してこの商品が前回いつ作ったかを指示書シートのI列に表示する目的でした。 エクセルのシートをスクロールしたら、途中からワードに変わっちゃうというのはどうでしょう? >>627
今日は調子いいから書いて上げる
Sub foo()
'前処理
Set 計算シート = Sheets("計算")
Set 累積シート = Sheets("累積")
With 計算シート.UsedRange
計算シートMaxRow = .Find("*", , xlFormulas, , xlByRows, xlPrevious).Row
MaxCol = .Find("*", , xlFormulas, , xlByColumns, xlPrevious).Column
End With
With 累積シート.UsedRange
累積シートMaxRow = .Find("*", , xlFormulas, , xlByRows, xlPrevious).Row
MaxCol = .Find("*", , xlFormulas, , xlByColumns, xlPrevious).Column
End With
'コピー
計算シート.Activate
Range("B1:CV" & 計算シートMaxRow).Copy
'貼り付け
累積シート.Activate
Range("B" & 累積シートMaxRow + 1).Select
Selection.PasteSpecial
End Sub >>633
自分が参考にしているエクセル関数の解説本(2007まで対応)に載ってなかったので調べたら
Excel2016からの新機能なんですね。まだ2010、2013を使ってる方も多いかと思うのでみなさんご注意を。
参考サイト ttps://dekiru.net/article/14292/ >>629 がそもそもテンプレ使ってないから
回答者が、最新版前提で回答しても仕方ない まぁみんな最初はバージョンの違いとかわからんもんだしね
多少はね? 【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2016
【3 VBAが使えるか .】 初歩
【4 VBAでの回答の可否】 否
毎月の売上商品ごとの構成比を積み上げ棒グラフで表したいのですが縦軸に金額を表示させ棒のラベルに構成比(%)の表記ってできますか?
(縦軸→金額 横軸→月 棒のラベル→構成比%)
上司からのこの見せ方で作ってくれとの指示で色々いじってみたのですか縦軸が金額だとラベルも金額って感じにしか出来ないっぽくて困っています 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
代金を入れたら佐川急便の代引手数料が出るようにしたいです
https://www.sagawa-exp.co.jp/service/e-collect/
代引金額 代引手数料(税別)
1万円以下 300円
3万円以下 400円
10万円以下 600円
30万円以下 1,000円
50万円以下 2,000円
60万円以下 6,000円
60万円超は10万円増す毎に 1,000円を加算(代引手数料例参照)
難しいのは「60万円超で10万円ごとに1,000円加算」のところです
なぜならここでいう「代引金額」には代引手数料自らが含まれるからです
=INT(([代金]+99999)/100000)*1100
でそれっぽいのは算出できるのですが、代金が「79万5千円」とかの場合に
9,900円ではなく8,800円となってしまいます 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2019
【3 VBAが使えるか .】 少し
【4 VBAでの回答の可否】 可
「シート"model2"のDE2に1を足して、"Sub MaCroG07()"を実行」を
DE2の値がDS2の値に達するまで繰り返し、DE2の値がDS2の値を超えたら処理を終了する
というコードをご教授願います。 【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】
629です。テンプレ無視しての質問失礼しました。
2010なので厳しそうですね >>650
MAXIFS関数が使えなければ、奥の手「配列数式」でなんとかなりそうです。>>633を参考にしました。
「指示書」シートのH1セルに
=MAX((今年!$E$2:$E$10=C1)*(今年!$J$2:$J$10=H1)*今年!$G$2:$G$10) まで入力したら
[Shift]キーと[Ctrl]キーを押しながら[Enter]キーを押す。
→{=MAX((今年!$E$2:$E$10=C1)*(今年!$J$2:$J$10=H1)*今年!$G$2:$G$10)} と表示される。
{ }で囲まれた状態が配列数式であることを示します。
注意1 >>633さんの式から 今年!$G$2:$G$10,"<"&now() 相当部分は省略しました。
注意2 H1セルを編集状態にすると { } が消えてしまいます。
その際は必ず [Shift]キーと[Ctrl]キーを押しながら[Enter]キー を入力してください。配列数式の注意事項です。
MAXIFS関数などの”IFS”がらみの新しい関数は、配列数式の取り扱いの難しさを解消するためなのかな? >>648
佐川に問い合わせるのが確実だと思います。
>>649
開始条件がちょっとあやふやなんだけど・・・ こんな感じでしょうか 試してません、あしからず
with WorkSheets("model2")
.Range("DE2").Value = .Range("DE2").Value + 1 ' 最初に+1を実行する?しない?
Do While(.Range("DE2").Value <= .Range("DS2").Value)
Call MaCroG07()
.Range("DE2").Value = .Range("DE2").Value + 1
Loop
End With
最初からDE2とDS2の値が同一からスタートすると、Do While文の直前にDE2に+1してるので
MaCroG07()を一度も実行せずに終了します。 計算できる範囲を超える高額取引なら「ask me」等でいいだろが >>648
=ROUNDUP(A1,-5)/100 【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2016
【3 VBAが使えるか .】 はい・いいえ
【4 VBAでの回答の可否】 可
PasteSpecial xlPasteAll
で貼り付けていますが、罫線が所々切れます。
解決策を教えてください。 >>647
セルを方眼紙みたいにするか、図形でグラフっぽいものを作ればいい。
無理にグラフ機能を使う必要はない。
そんなことを言ってくるような上司じゃ、どうせ違いなんかわかりゃしないから。 >>656
たとえば列10セル、行10セルに罫線を引いたとして、中心の数か所と、一番下の罫線が消えてしまいます。 >>658
セルの書式設定で罫線の設定見ても線消えてる?
セルに入ってる内容がセルからはみ出て線が見えなくなってるってことは? 一番下の罫線は11行目のセルの上罫線だからじゃないかな
中心はなんでだろうね 罫線込でコピペすると予期しない結果になることあるからフォーマット用意しておいて値だけハメ込むか、後から罫線引く方が確実だし楽 >>655
複写元がひとつのセルと仮定します。そのセルには上下左右に線があるように見えます。
しかし、そのセルに属する罫線とは限りません。なぜかと言うと・・・
当該セルの左隣の右縦線
当該セルの上隣の下罫線
当該セルの右隣の左罫線
当該セルの下隣の上罫線 かもしれないからです。
なので、当該セルだけを普通にコピペしても複写先には罫線が引かれないということもありえます。
>>659さんが書いてるように、複写元と複写先のセルの書式設定の罫線の設定を見比べるのが大事です。 >>655
まさかとは思うけど、Excel2016の制限に引っかかってるかも?
ttps://www.helpforest.com/excel/ex_list/ex110006.htm
ヘルプの森 というサイトの Excel2013,2016制限・仕様 一覧 のページの中に
セルの固有の書式設定/セルのスタイル 64,000
というのがありました。参考まで。 >>654
それだと「79万5千円」が8,000円になる 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2019
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
売上データをマクロで処理しています。シートの名前についてご質問です
元データをフィルタして
シート1にコピー(営業1部)、
さらにシート1をフィルタしてシート2にコピー(地域でフィルタ)、
という処理を行っています
この時シート1のシート名は
・営業一部
・営業一部_地域別
どちらが良いでしょうか? >>664
なります、だろ。
大筋の答えは出してもらってんだから
a1に+1なり,最後-1000なり、自分で調整しろや
馬鹿が >>655
御回答ありがとうございます!やってみますね! >>665
地域別はシート2じゃないのか?
>>664
8000円じゃないのか
その数式から自分で応用できないなら、正しい結果になる計算方法を書いてくれ >>670
シート1のフィルタ後と、シート2のフィルタ無しは同じ地域別になりますが
どちらの名称がいいかなと思いまして >>671
地域別で見られるようにしたのがシート2なら俺にはそれが地域別だと思えるが別に好きにすりゃいいんじゃね P列でセル中に"標準価格"という文字列が含まれていない行を削除
をVBAでおしえてください >>673
AutoFilterで "<>*標準価格}*" の条件で絞って一括削除とか、
if not セル文字列 like "*標準価格*" then 行削除 を削除したい範囲分回すとか
行数大量なら前者 E列〜Z列で1行目以外(2行目以降)で空白セルしかない列を削除するコードを教えてくださいm(_ _)m >>676
For i = Columns("E").Column to Columns("Z").Column
If WorksheetFunction.CountA(Range(Cells(2, i), Cells(10, i))) = 0 then Columns(i).Delete
Next >>677
1行目は必ず入っています。
>>678
ありがとうございますm(_ _)m マクロで、例えば
「Z55に"X"が入っていたらF55とG55のセルを黄色く塗りつぶす」
とか
「AD6に"X"が入っていたらY6を黄色く塗りつぶす」
をする書き方をお教えください >>679
うっかりしてた、Forのとこ逆だな
>>680
For i = Columns("Z").Column to Columns("E").Column Step -1 Columns("Z").ColumnはCells(,"Z").Columnとも書ける
1文字しか減らないけど、よく似た単語の連続よりは読みやすいと個人的に思って愛用してる >>683
あとで、"X"は消してしまうので、条件付き書式では"X"を消した後に色も元に戻ってしまいます Columns("Z")の方が明確だろw
まぁ俺はRange("Z:Z")派だけどな if [z55]="X" then
[f55:g55].interior.color =rgb(255,255,0)
end if 複数選択しているセル範囲のアドレスを
A1:A2,B3:B4,C5:C6のようにカンマ繋ぎで取得するコードを教えてください >>671
シート1はフィルタかけたまま放置?
そうでもない限り、シート名はフィルタをかける前の状態をもとにするのがセオリーでしょ >>688
今手元にExcel無いから確認できないけど、selection.address(false,false)じゃ無理? excel2013なんですけど、フォント変更の操作と半角英数入力の時だけやたら遅くなるんですが何故だかわかりますか?
オフィスの修復やらフォントキャッシュの削除やら調べてみては色々やってみたんですけど解決に至りません
wordやインターネットブラウザでは何の問題もなくexcelの時だけなんです >>692
書き忘れてましたがosはwindowsです >>692
googleIMEとか試してみてはどうかな >>694
google日本語入力もやってみましたがダメでした
他のオフィスソフトやインターネットブラウザなどは何の問題もなかったのでexcelに原因があるんじゃないかという気がしています
既存のファイルも新規のファイルも同じ現象が起きています >>686
文字列変数を使わずに列を直接書くのなら
[Z1].Column
とも書ける 人に教える時は自分の拘りの書き方ではなく明確で基本的な書き方で教えるもんだよ
あとはそこから本人が好きなように弄ればいい >>687
ありがとうございます。
もう一つIFを勉強するために↓を書いたのですが、動きません。
正しい文法を教えてください。
'GJ列の2行目以降が"X"であれば、同じ行のCG列のセルをを黄色く塗りつぶす
For r = Cells(Rows.Count, "GJ").End(xlUp).Row To 2 Step -1
If Cells(r, "GJ").Value = "X" Then
r.Offset(0, -107).Interior.Color = RGB(255, 255, 0)
End If
Next r >>701
rは行番号だろ?
r.OffsetではなくCells(r, "GJ").Offset >>690>>691
試して見たのですがカンマ区切りで返すのはうまく行きませんでした
もう少し試行錯誤してみます
ありがとうございました >>690
>false,false
マジか!
知らなかったから、ずっとreplaceで$取ってたわwwwww >>690
え パラメータの指定ができるプロパティなんてあったんだ >>703
dim a as object
dim r as range
dim s as string
set a = selection.areas
s = ""
for each r in a
s = s & r.address(false,false) & ","
next
s = left(s,len(s)-1)
これで変数sにカンマ区切りのアドレスが返るはず。自分は確認不能です >>704
$取るのは後処理のためだと思うけど、それならoffset使う方が楽じゃね? >>705
rangeのプロパティだけでもENDがあるし、他にもあったと思うけど思い出せない >>692です
再インストールやフォントの削除でもダメだったんで復元したら正常になりました
レスをありがとうございました >>707
いや、列番号から列のアルファベット調べるのに使ってた。
SQLで範囲指定する時、From [Sheet1$A:F] とか書かなきゃいけないんで。
数字で指定する方法があれば良いんだけど。 >>711
R1C1形式じゃいかんの?
add = range(columns(1),columns(6)).address(false,false)
addは"A:F"を返すはず VBAってどう勉強すればいいのですか?
アビバとかで教えてもらえるんでしょうか? >>702
ありがとうございます。この文でできました。
For r = Cells(Rows.Count, "GJ").End(xlUp).Row To 2 Step -1
If Cells(r, "GJ").Value = "X" Then
Cells(r, "GJ").Offset.(0, -107).Interior.Color = RGB(255, 255, 0)
End if
Next r
最後に、↑ではCGだけが対象でしたが、例えばCGとCHの2列を対象とした場合はどう書けばよいでしょうか >>714
並べて書けば良い
For r = Cells(Rows.Count, "GJ").End(xlUp).Row To 2 Step -1
If Cells(r, "GJ").Value = "X" Then
Cells(r, "GJ").Offset.(0, -107).Interior.Color = RGB(255, 255, 0)
Cells(r, "GJ").Offset.(0, -106).Interior.Color = RGB(255, 255, 0)
End if
Next r
ってかオフセットよりcolumn直接書いたほうが見やすい様な?まぁどっちでもいいけど
For r = Cells(Rows.Count, "GJ").End(xlUp).Row To 2 Step -1
If Cells(r, "GJ").Value = "X" Then
Cells(r, "CG").Interior.Color = RGB(255, 255, 0)
Cells(r, "CH").Interior.Color = RGB(255, 255, 0)
End if
Next r >>715
ありがとうございます。勉強になりました<(_ _)> A列に"行程"が入っていたら↓のマクロを実行するコードを教えてください
A列には数か所"行程"があります。
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
つづく・・・ つづき・・・
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlHairline
End With callで呼べば良いだけじゃないの
て、よく見たら罫線引いてるだけじゃないか >>706
上手く行きました!
ありがとうございました! >>712
こんな方法あったんだ
SQL使うときはわざわざ関数使ってA1形式に変換してたわ つか、シート全体がデータしかないならシート名だけで行ける 計算式の連続コピーに関する質問です
例えばB1にA1+A2+A3、B2にA4+A5+A6、B3にA7+A8+A9…
と言った感じにしたいのですが、B1とB2に上の計算式を入力してオートフィルをかけた場合にはB3にはA3+A4+A5、B4にはA6+A7+A8と思うようにコピーできないのですが、解決策はありますか? A1〜A3をA1B1C1にしてD1に計算結果、A4〜A6をA2B2C2にしてD2に計算結果…
という風にしたらオートフィルでできると思いますが、あくまでこれは例えなので、実際やる予定のものはA列が1000近くあるので横にするのがかなり面倒なので実質不可能です >>726
【1 OSの種類 .】 Windows**
【2 Excelのバージョン 】 Excel**
【3 VBAが使えるか .】 はい・いいえ
【4 VBAでの回答の可否】 可・否 power query 使えそうなんだけどどんな感じ テーブルが表でええ感じやん
データ処理、うぷでーとももvbaデカンタそう
よくわからんのがクーエリどれだけ構文できるかやな >>729
とにかく軽い
大量のデータを扱う時に超便利
まぁアクセスでもええけどな >>731
うちはアクセス保存禁止
vbaも
ひょうけいに直接入力なら使えるよな クエリにとくに制限はないのかや
ないなら期間システムにしたいんやわ
銀行勘定システム規模の >>726
OFFSET関数で可能です。
B1セルに =SUM(OFFSET($A$1,(ROW()-1)*3,0,3,1)) と入力してフィルコピーするだけ。
OFFSET関数の引数は左から 基準セル、縦方向にずらす行数、横方向にずらす列数、
セル範囲を指定するときの行数、列数 となります。
縦方向にずらす行数は1次方程式の考え方で (ROW()-1)*3
横方向はずらさないので 0
セル範囲は3行×1列なので 3、1 ということです。 サンクス
特定用途なら使えるし、開発は片手間レベルでできそう
大きいのは、別のえすくーえるつかつえばええよな
エクセルの帳票作成がそのまま利用がええな
久々にやる気出るわ
なんでもかんでも禁止なんだもん
関数、バワークエリーで通常業務しながら片手間で開発できるな >>736
パワークエリーめっちゃ便利だよ
用途は違うけどピボットみたいな存在。絶対に覚えて置いた方が良い
ガンバレー! PQは引っ張る専門
更新・蓄積は専門外
だからPQあればDBがいらいというわけじゃない >>720
罫線を書くマクロ記録で作ったものです。しかし自動で繰り返しをしたいので、コードをおしえてください。 >>737
ありがとう
ピボツトともかくえすくーえるはしってるから
あんまり壁は感じない
これでアクセスなしでも闘えるわな
アクセスはメンテナンスも面倒だわ
リモートディスプレーだと頻繁に物壊れるし、おにもつかしとる >>738
わかっているが
更新はセル書き換えるだけじゃん
もちろんvba使えば普通に書き換えれるが
マクロ使えんのだわ
さいこうのかいひほうほうやとおもう >>739
速度無視単純さ重視
dim r as range
for each r in range("a1:a10")
if r.value like "*行程*" then
>>719のSelection.をr.に変えたやつ
end if
next もちろんうぷでーと構文使えんわな
他は使えるんだね joinとか出来るんか?
seelctしか使えないと思っていた PQはキー使った結合系は一通りできて、複数テーブルの統一もできる
計算フィールドも入れ込めるし、スクリプト書ければ動的に空のダミーテーブルとサンプリング用のダミーデータを作って
簡易のクエリ代わりにすることもできる
条件分岐もループもできる
コード書けるピボットという感じ
あと、ピボット状態のデータのテーブル化もできて、見たいデータを取り出す部分に関してはクソ便利 データは自ブックが保存さえしてあれば、自ブック内のテーブルのデータソースに使えるようになって手軽になった
勝手にクエリの定義が残るから、ワンメイクで取り出したいだけの場合はVBAで消すコード書く必要があるのは相変わらず パワーピボットは、PowerBIっていうExcelとは別の独立したアプリの1機能じゃなかったかな
PQは、ベースはPowerBIの仕組みで、Excelからそれを利用できるようにした豪華なアドイン、といった位置づけ BIにはBIでグラフとかフォームとかの機能が別にあるんだけど、
PQはBIの中のデータを引っ張る所だけを利用できる感じ そんな事情でPQでの処理を各コードとはVBAとは別の専用言語。通称「M言語」ってやつ。
PQだったらPQエディタ内で書けるし、書いたコードをVBAから実行したい場合は文字列の形で専用のオブジェクトに渡す
WorkbookQueryオブジェクトだったかな。今までのSQLを文字列で渡すのと同じような感覚 >>747
ピボットからクエリ発行できるのか
それいいな >>753
その場で動的に作ったダミーのテーブルと結合できるんだよ
Excelのフィルターオプション機能を全部コード上でやる感じかな 本格的に調べたわけじゃないけど、ざっと見た感じ、365環境ならこれあればいいじゃん、って感じだった
問題は未だに2010使ってますとか言うクソみたいな環境が多い事だけ >>754
直接やるわけじゃないのね
若干手間だけど、まぁそれぐらいなら十分ぽい。今度使ってみるべ >>756
単純に既存のデータ引っ張りたいんだったら、SQLと同じ感覚でMでクエリ書けばOKだよ
それに加えて、その場で独自の拡張したい(商品コードに合わせてDB内には無い商品名の略称を入れ込みたい、等)の
部分があれば、ダミーテーブル作ってPQ内で結合するだけで一気にできる感じ
いろいろ小回りが利くようになってる やはり最近のエクセルからなんだな
かいせつぼんはないのかな sumproductだけは覚えてからここに書き込んで欲しい
この関数だけで解決する問題が多すぎる @配列覚える
Asumproduct覚える
Bsumif/indexとかsumif/offsetとか覚える
Cピボットは捨てる >>761
sumproductみたいな応用的な関数はあとからでいい
応用的な関数は基本的の組み合わせで実現できる事が多い
基本的な関数が使いこなせなければsumproductで解決なんて無理 >>729
>>729
例えば、簡易なWebスクレイピング
例) 東京電力の停電情報の、マップがない「市区町村内地区別一覧表」のデータ取得
http://teideninfo.tepco.co.jp/html/12234000000.html
※ 県内の「市区町村別のマップ」までは東電サイトにある。
http://teideninfo.tepco.co.jp/flash/index-j.html
A. 9/12 21:39現在の南房総市のページスクショ
https://i.imgur.com/QqdoY4c.png
↓
B. これをExcelの「メニュー−データの取得と変換−Webから」でPower Queryが起動し、
URLを指定するとExcelにはこんなふうに取り込める。
https://i.imgur.com/sYPh5s2.png
(続く) >>729
(続き)
※ Power Query内の、1つのクエリー内であれば、
列を追加、番号を振る、重複を削除、値の置換、列を追加しての簡単な計算・・・
等をそれぞれマクロのようにして順番に処理することが可能。
2つ以上のクエリーやテーブル(範囲)を合体させることも可能。
※ Power Queryの関数は "M function" まだ、英語版の説明しかない模様。
https://docs.microsoft.com/ja-jp/powerquery-m/power-query-m-function-reference
・PQエディターを開いたところ
https://i.imgur.com/0pC3TPn.png
右側の「適用したステップ」の一覧が、個別のマクロみたいなもの。
・「詳細クエリー」画面の中身
https://i.imgur.com/vBHPEEr.png
エディターのボタンメニューで操作した内容が、スクリプトになっている。
ステップの途中で列名を変更を挿入したりするとエラーが出るので、
ここで直接修正したり、とか。
(続く) >>729
(続き)
C. この表の場合は、「地区」と「停電軒数」を1セットとして2列になっているので、
Excelのsheetの範囲を元にして再度PQで分割・合体したテーブルを作ってみた。
D. 後は文字列を数値化するのにはExcelの文字列関数の方が得意そうなので、
sheet内のC.のテーブルの右に列を追加してExcel関数処理とか。
こんな感じ。(深緑の列がsheet内で作業列を追加してExcel関数で処理した部分)
https://i.imgur.com/1eQdwu2.png
後はExcelの3Dマップ使って棒グラフ作るとか。
こんなのとか。
https://i.imgur.com/Lj9hgtb.png
3Dマップも脚注などはまだ手動入力するしかなさそうだけど。
(続く) >>729
(続き)
Power Pivotの方はまだ使ってみていないけれど
https://i.imgur.com/Izmfl2c.png
自己流の手探りでPQだけ使ってみた
Power Queryの泣き所は、
1. Webスクレイピング機能はあくまで簡易で、html記述まで入り込んでの指定は出来なさそう。
東電停電情報の場合は、一覧表の外の「データ更新日時」や「合計停電軒数」を指定出来ないため、手入力した。
→ このあたりはPythonの方が得意か?
2. 1つのbook内で複数のクエリーがある場合、シーケンシャルに更新できない。
作った各クエリーは計算手順上、順番に再計算させたいのに、
個別のクエリーを指定して更新するか、全てのクエリーを更新するか、しかない。
後者の場合は同時並行で再計算してしまう模様。
→ 確実にシーケンシャルに再計算させるには、今のところVBAかますしかないのかな?
(終わり) エクセルで、やりたいことを調べるときってどうしてる?
例えば、この列に日付を表示させるとか >>769
「日付」って、>>767 の最初間画像の、「更新時刻」のこと? >>769
Excel 日付 表示
上から10来ぐらい検索結果開いて流し読み、無理ならここで聞く
まぁもう聞くことはなくなったけどな >>764
=SUMPRODUCT((A2=A10:A20)*(B1=B9:G9),B10:G20)
みたいなの覚えるだけでいいんだけどな >>772
それを自分で考え出せるようになるにはって話だ >>768
サンクス
うちはvba禁止だからな
許可得たもの以外
新規はほぼ確実に無理と言われている
バワークエリは禁止になるようそあるかな SUMPRODUCTって便利だってよく聞くから覚えようと思いつつ応用のさせ方がイマイチ分からず後回しになってる
この機に覚えます! >>775
うーん・・・
VBAが出来ること全てをPQで出来るわけではなさそうだけど、
「VBAのようなプログラミング言語の文法を覚えなくても、作れるマクロ/いじれるマクロ」
という意味では、いけるかも?
大容量データを全て関数処理したら重くなる。
PQだと、小分けにしてステップを切れるのが良いところ。
ただし、今のところ更新は、手動で1つ1つ実行だし、
各ステップの分岐判断やループは出来なさそう。
他のbookからリンク参照するのは、ファイルのディレクトリや名前をいじるとすぐリンク切れるから、
それよりはPQでの修正はしやすい。
リンクだと、基本1セル。
PQだと、他のbookのテーブル/範囲まるごと、コピーしてくる感じ。
ただし、参照先のbookの最終更新時刻なんかのファイル属性を参照する関数が、
PQのそれには見当らないのは頂けない。 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2013
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
seleniumVBAを使ってchromeを操作しようとしたのですが、あるところでNot found elementエラーが起き、原因が不明です。
基本的に 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2013
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
seleniumVBAを使ってchromeを操作しようとしているのですが、あるところでNot found elementエラーが起き、原因が不明です
・F12でデベロッパーツールを表示して、操作したい要素のidやnameやXpathをコピーしているので、ここの誤入力はないと思います
・iframeやframeの中の要素でないことも確認しました
・フォーカスしているchromeのタブが間違っていないことも確認しました
・.wait()メソッドでwebページが表示しきるまで待機しました
何かアドバイスを頂ければと思います。 上記の質問に関連してなのですが、
Aframe
Bframe-Cframe
-Dframe
以上のような階層のframeがあったとして、A,B,Cframeの要素は、SwitchToFrameメソッドでframeを指定して取得することができました。
しかし、Dframe内の要素が取得できません。(element not found for・・・)
このページに遷移する前に、ほぼ同じことをして、そこではうまく取得できているのですが・・・ 何故でしょうか
連投申し訳ございません。 >>779
seleniumはもう死んだのだ…
seleniumはほぼ回答付かないので恐らく回答来ないと思う
知恵袋の方が回答付くかもよ >>782
seleniumが死んだというと、どういうことなのでしょうか・・・
単純に古いということですか? >>770-771
サンクス
あたいはEXELについてる皆で編集してるっぽいQ&Aしか見る機会無いから皆はネットで検索してるんですね 今時ネットで検索の仕方判らないってやばいぞ…
つーかみんなで編集してるっぽいQ&Aってネットにあるやつじゃないのか >>768
> 1. Webスクレイピング機能はあくまで簡易で、html記述まで入り込んでの指定は出来なさそう。
> 東電停電情報の場合は、一覧表の外の「データ更新日時」や「合計停電軒数」を指定出来ないため、手入力した。
> → このあたりはPythonの方が得意か?
このあたり、Power Queryの「HTML ページ」形式での読込み設定では
「地区ごとの一覧表」しか読み込めなかったんだけど、
あれから「もしや?」と思って、
PQの「Webから」の読込みで
・URLを指定するのは同じで
・「形式を指定してファイルを開く」を「テキスト ファイル」
・「元のファイル」はどうやらエンコード指定みたいで、東電停電情報の場合、「10001: 日本語 (Mac)」だと、漢字が文字化けせず、よさげ。
https://i.imgur.com/JHHgcOm.png
で取り込むと、htmlのスクリプトを各行Text形式で読めた。
https://i.imgur.com/9zYJHsP.png
スクリプトの行番号等が改変されなければ、Pythonまで使わなくても、PQで同時に取り込めるかも。 B2〜L2を結合させたセルがあり、シートのF列だけを削除することはできるのですが、
マクロ記録で作った構文
Columns("F:F").Select
Selection.Delete Shift:=xlToLeft
を実行させると、B列からL列が消えていしまいます。
F列だけ削除するにはどうすればよいでしょうか >>788
Columns("F:F").Delete
それとColumnsなら"F"だけでいい
"F:F"とするならRangeでいい >>725
そうなんだけどね、シートに書き出したデータをもう一度テーブルとして使う時に、
範囲指定が必要になる場合があるんですよ。 自動的にセル名を定義する方法はありますか。
例えばA1セルに「野菜」と入力したら、
自動的にA1:A10の範囲が「野菜」セルと
してセル名設定され、A1を「果物」変更
するとセル名も自動で変わるようにしたいです。 ブックAのシート1〜iまでのA1セルの数字を合計した数字をブックBのA1セルに転記したいです
vbaでなんとかならないでしょうか? D2〜Gの4列中に含まれる"株式会社"・"有限会社"・"支店"を消す下の構文を作ったのですが
効果が同じシートの全てのセルに適応されてしまいます。D〜Gの範囲内に収めるにはどう書くのが正しいのでしょうか
i = Cells(Rows.Count, 1).End(xlUp).Row
Range("D2:G" & i).Select
Cells.Replace What:="株式会社", Replacement:=""
Range("D2:G" & i).Select
Cells.Replace What:="有限会社", Replacement:=""
Range("D2:G" & i).Select
Cells.Replace What:="有限会社", Replacement:="" >>792
VBAでできる
>>795
Cells.は全選択という意味
選択範囲はSelection. >>796
勉強になりました ありがとうございます >>796
>>792です
VBAじゃないと無理なんですね、ありがとうございました。 A列〜J列に空白のセルがあれば、そのセルの1つ上のセルをコピーする
(A列の最終行まで繰り返す)ができるコードを教えてください。
*1行目と2行めは必ず値が入っています a列だけhttps://docs.microsoft.com/ja-jp/office/vba/excel/concepts/cells-and-ranges/fill-a-value-down-into-blank-cells-in-a-column
Sub FillCellsFromAbove()
' Turn off screen updating to improve performance
Application.ScreenUpdating = False
On Error Resume Next
' Look in column A
With Columns(1)
' For blank cells, set them to equal the cell above
.SpecialCells(xlCellTypeBlanks).Formula = "=R[-1]C"
'Convert the formula to a value
.Value = .Value
End With
Err.Clear
Application.ScreenUpdating = True
End Sub 最初のwithの後ろのcolumns(1)を
range("a1:j200")みたいに操作したい範囲にすれば良いはず >>799
もう1列使えば、数式だけでいける
A列が元データで、B列が空白を埋めたデータの場合
b2に"=if(IsEmpty(a2),b1,a2)"を入力して下向きにフィル >>803
>もう1列使えば
そういうの回答として無意味 https://dotup.org/uploda/dotup.org1948859.zip.html
このファイルでマクロを実行すると、自分の理解では「if k=3 and m=1 and Range(E10).Value <= m(=1)」となる瞬間が来て、、
G10セルはAになるはずなのですが、どうしてもすべてBになります
どこが間違っているのでしょうか? >>805
一度Aになったあと、ループが進んで次の瞬間にBに書き換えられてる 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2019
【3 VBAが使えるか .】 コピペだけできます。
【4 VBAでの回答の可否】 可
"元帳"というマクロを実行するBookの中に"請求一覧"というシートがあります
そしてそのBook"元帳"と同じフォルダ内に、さらに"請求書"と言うフォルダがあり、その中に複数の.XLSファイルがあります。
その複数の.XLSファイルのそれぞれの"Sheet1"のA列〜K列の2行目から最終行(A列)までをコピーして
シート"請求一覧"の最終行(A列)に貼り付けて追加していくコードをおしえてください。
また、マクロを実行する"元帳"bookが入っているフォルダアドレスは変動しますので、自動取得できるようにしていただけると助かります。 >>807
コピペだけを「使える」とは言わない
Dim path As String
Dim ws1 As Worksheet
Dim wb As Workbook
Dim ws2 As Worksheet
With ThisWorkbook
path = Dir(.path & "\請求書\*.xls")
Set ws1 = .Worksheets("請求一覧")
End With
Do While path <> ""
Set wb = Workbooks.Open(path)
set ws2 = wb.Sheets("Sheet1")
ws2.Range("a2:k" & ws2.Cells(Rows.Count, 1).End(xlUp).Row).Copy ws1.Range("a" & ws1.Cells(Rows.Count, 1).End(xlUp).Row + 1)
End With
wb.Close (False)
path = Dir()
Loop >>808
Dim path As String
Dim ws1 As Worksheet
Dim wb As Workbook
Dim ws2 As Worksheet
With ThisWorkbook
path = Dir(.path & "\請求書\*.xls")
Set ws1 = .Worksheets("請求一覧")
End With
Do While path <> ""
Set wb = Workbooks.Open(path)
Set ws2 = wb.Sheets("Sheet1")
ws2.Range("a2:k" & ws2.Cells(Rows.Count, 1).End(xlUp).Row).Copy ws1.Range("a" & ws1.Cells(Rows.Count, 1).End(xlUp).Row + 1)
wb.Close (False)
path = Dir()
Loop
試しに"請求書"フォルダに"20"・"25"・"30"というXLSファイルを入れて試したのですが
実行時エラー'1004':
申し訳ございません。20.XLSが見つかりません。名前が変更されたか、移動や削除が行われた可能性があります。
がでて処理が止まります。 >>810
pathの中身はファイル名で、Workbooks.Openでpathの前にフォルダパス付け忘れてるわ xlsxは圧縮されているので、速度的に複数ファイルの読み取りには向いてないと思うんすよ。
代わりにxmlが良いんじゃないかと思うんすけど、どうっすかねぇ?
そんなの気にするのは少数派? >>768 の
> 2. 1つのbook内で複数のクエリーがある場合、シーケンシャルに更新できない。
について、どうやらそれらしい設定方法が分かったので報告。
各クエリーに設定される「接続のプロパティ (クエリ プロパティ)」のうち、
「バックグランドで更新する」
がデフォではONになっているので、
これをクエリーそれぞれで外せば、上から順番に計算しているっぽい。
https://i.imgur.com/K2oCmYx.png
メニューの「データ−クエリと接続−すべての更新▼」リボンボタンの中にある
「接続のプロパティ」からアクセス。
紛らわしいが、「データ−プロパティ」からでない。
(こっちは「列幅を調整する」「新しいデータのセルを挿入し、使用されていないセルを削除する」などの設定)
これで「すべての更新」ボタン押し一発(記録されたマクロ一回)で、
Excel関数で追加した計算も含めて、希望どおりシーケンシャルに結果が出た。 サンクス
まず、うちのパソコンでエクセルを入れるとこからやってみるわ マクロでって言っているのにそれ以外の方法を示すのってなんなの? マクロでやる必要性が謎い質問だと関数でもできるが、というアドバイスは増えがち >>819
そんなハゲは発言をひかえていただきたい 質問者は基本的に言葉足らずなので関数を知らないのか敢えてのマクロなのか他人には判らない
回答者が多少気を遣ってアドバイスするとそうなってしまうのは仕方がない 蛇足だけど、
>>787 の
「Webから」データ取得して、html自体をテキストで取得する
には、ちょっとコツが必要だった。
「Webから」で素直に表示されるダイアログ画面は、imgur画像の1枚目のような、
・「形式を指定してファイルを開く」
・「元のファイル」 (実質「エンコード」)
のプルダウンメニューは含まれていない。
ところが、
1. 一度URLだけ入力して、PQが自動認識出来るクエリーをそのまま作らせる。
2. このクエリーのステップのうち、一番上の「ソース」を再度「編集」で開くと、1枚目の画像のようなダイアログが現れる。
一応、MSには「最初から選ばせてくれ」との改善要望を出しといた。 しつけーなPQが想定してる形態じゃねーんだよ
自分でコードかけクソが なんでweb上からテキストデータ取って来て解析までしなきゃなんねーんだよアホか 本当にこういう自分の思う通りじゃないからクソとかいってクレーム入れてくるクソ全員死なねーかな
クソテキストでデータ提供する奴と一緒にはやく死滅してくれ クソに対応するためにMSに要望送れるとか神経疑うわ
自分がやべーことに全然気づいてないクソ中のクソ >>808
>>811
どの部分を直せばよいでしょうか? >>828
そこに書いてあるそのまんまなんだが…
継ぎ接ぎで悪いがWorkbooks.Open(ThisWorkbook.Path & "\請求書\" & path) 出版がどうこうとか完全に頭湧いてるな
出版社に迷惑かける前に病院行ってこい。精神科のあるデカいとこいけよ >>831
どこが頭わいてんだ
みんな利用するようになると困るだろ もっとみんなのためになる話しよう!!VBAとか関数とか!! 「みんなのためになる」だろうと思って
PQ話をしたつもりだったんだけどな。
別に既存のVBAや関数と排他ではない、追加機能だし。 IPも安価も無いから誰が誰に言ってるのか全然わからない ああ、萎えたわ。
たかが5chのスレの中で、
マウンティングしてポジション取りしか考えてない
田吾作相手じゃ、やってられんわ。 内閣府ウェブサイトの祝日csvっていつから1955年〜2020年になってたんだろう >>844
2019/10/22が祝日に決まったタイミングで変わった 【1 OSの種類】 Windows10
【2 Excelのバージョン 】 Excel 2016
【3 VBAが使えるか】いいえ
【4 VBAでの回答の可否】 否(VBAが必要そうなら勉強します)
セルに4桁の銘柄コードを入力すると、別のセルに株価が表示できるようにしたいです
http://enjoyjob.net/wp/2018/04/27/excelformula01/
が使えるかと思ったのですが、
このサイトの通りA2に銘柄コード、B2〜D2に数式をいれても、
「この数式には問題があります」というメッセージが出るだけでした >>847
例文は"が全角になってるが半角で入ってる? >>848
ありがとうございます
まさか例文が間違っていたとは…
B列、C列については、ご指摘の部分の修正で動作しました
肝心のD列はやはり「この数式には問題があります」と出ます
ダブルクォーテーションマークは全てチェックしたつもりですが…
正直、関数の内容はあまり理解出来てないのですが、そもそもB列で所得した情報にsummary-numberが含まれていない気がします >>849
D列でその野村のページのどの数値を取りたいん? >>850
株価の現在値です
B2で>>849の修正をしたとして、A2に「8698」を入力すると
D2にはB2に含まれる「335」を抽出したいです すいません、自己解決しました
C列のやり方を参考に、株価の現在値の前後の固有の単語から何文字を抜き出す、
というやり方で出来ました
教えて頂いた方、ありがとうございました ヘッダーに日付を入れたいのですが、このページ数の文字を大きくする(20くらい)
にはどう書けばよいでしょうか?
.LeftHeader = "&P/&N" あるブックの「=A1&"aaa"」と入ったセルをvba で別ブックにcopyするとaaaと転記されてしまいます
=A1の部分も反映させるにはどうしたらいいでしょうか? >>858
コピーせずにそのセルのFormulaに入れる GI列の最終行の値を、下に向かってコピー
A列の最終行と同じ行までコピーするVBAをお願いします。
A GI
***.....**
***.....**
***.....**
***.....
***.....
***.....
***.....
***.....
↓↓↓↓↓↓↓↓
A GI
***.....**
***.....**
***.....**
***.....**
***.....**
***.....**
***.....**
***.....** >>860
GI列の最終行の値を、下に向かってコピー
A列の最終行と同じ行までコピーする
dim cnt
cnt =[a10000].end(xlup).row-[GI10000].end(xlup).row
if cnt>1 then
[GI10000].end(xlup).offset(1).resize(cnt).value = _
[GI10000].end(xlup).value
end if すでにIEのダウンロードダイアログが開いた状態で、VBAで任意のフォルダを選択して保存するにはどうしたらいいでしょうか? 任意のフォルダなんか選択しなくていい。
ファイル名書く所に、パスごと書き込む。
WindowsAPIでね。 >>864
Windows APIがよくわかっていなくて、みんな大嫌いsendkeysしか思いつかないのですが・・ >>865
sendkeyでどうにかしようとする方がよっぽど難しくて不安定だから >>866
よくわかっていなくて恐縮ですが、ファイル名を書くところにsendmessageでパスごと書き込むということでしょうか? そう。
全然違うフォルダを選択していても、パスごと書き込めば、その場所に保存可能。 俺が小学生だったら、絶対変数名は「たこ焼きラーメン」とか「悪魔超人」にしてるわwwww >>868
名前をつけて保存のキャプションからウィンドウハンドル?を取得するところまではなんとなくわかったのですが、ファイル名の入力、保存ボタンの押下まで辿り着けません・・ 【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2013
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
セルを右クリックした時に出てくるミニツールバーに、Σや右より表示などのコマンドを
登録する方法は有るのでしょうか? 【1 OSの種類 .】 Windows*7
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
参照範囲の中に日付と文字列と空欄が混在しており、エラーを吐いてしまいます。
E列とJ列は文字列でG列から日付などが混在しています。最新の日付だけを引っ張りたいです。
試しにG列を全て日付にしてみたら通ったので、文字列と空欄を置き換えなどでごまかす方法があったら教えて頂きたいです。
以下の式まで組みました。
{=MAX(('18〜'!E3:INDIRECT("'18〜'!E"&COUNTA('18〜'!A:A)+1)=C7)*('18〜'!J3:INDIRECT("'18〜'!J"&COUNTA('18〜'!A:A)+1)=H7)*'18〜'!G3:INDIRECT("'18〜'!G"&COUNTA('18〜'!A:A)+1))}
御回答よろしくお願いします。 >>870
SendMessageのWM_SETTEXTで文字を送るところまで行った?
その前のFindwindowExで子ハンドル探すあたり?
WM_SETTEXTとかBM_CLICKの正体(実はただの定数)がわからないとか? >>873
{=MAX(〜)}の代わりに=AGGREGATE(14,6,〜,1) 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2013
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 可
AD列の最終行の1つ下の行から、1233行までを削除するVBAを教えてくださいm(_ _)m >>877
range("ad1233", cells(cells(rows.count,"ad").end(xlup).row+1,"ad")).delete
細かい作業一つ一つ聞くよりマクロの自動登録使う方が手っ取り早いと思うんだが public Declare Function MessageBox Lib "user32.dll" Alias "MessageBoxA" (ByVal hWnd As Long, ByVal lpText As String,ByVal uType As Long) As Long
'OKボタンを保有するフラグ
Public Const MB_OK = &H0
'最前面フラグ
Public Const MB_TOPMOST = &H40000
'呼び出し
Public Sub TestTopMostMsgBox()
Dim lpText As String
Dim lpCaption As String
lpText = "テスト"
MessageBox 0, lpText, lpCaption, MB_OK Or MB_TOPMOST
End Sub
これを実行すると必ずexcelが落ちるのですが何がいけないのでしょうか・・ >>880
public Declare Function MessageBox Lib "user32.dll" Alias "MessageBoxA" (ByVal hWnd As Long, ByVal lpText As String,ByVal uType As Long) As Long
↓
Public Declare Function MessageBox Lib "user32.dll" Alias "MessageBoxA" ( _
ByVal hWnd As Long, _
ByVal lpText As String, _
ByVal lpCaption As String, _
ByVal uType As Long) As Long >>882
行全体ならdeleteをentirerow.deleteに変更 >>881
なぜそんな簡単なことで解決したのかわからないくらい簡単に治りました、ありがとうございました 引数が足りなかったのか。
改行すれば直るのかと思ったわ。 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2019
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 不可
A1に日本って打ったらB1に東京と表示され
同じくA1にアメリカと入力したらB1にワシントン
ロシアならモスクワ、何も入力しない場合は空欄が
表示されるようにしたいんだけどやり方を教えて下さい >>886
表示させたい国と首都の全リストの表を別に作っておいてVLOOKUPで引っ張ってくる >>886
=IF(A1="日本","東京",IF(A1="アメリカ","ワシントン",IF(A1="ロシア","モスクワ",IF(A1="","","?")))) >>886
B1⇒ =IFERROR(INDEX(E:E,MATCH(A1,D:D,0)),"")
D1⇒ 日本
E1⇒ 東京
D2⇒ アメリカ
E2⇒ ワシントン
D3⇒ ロシア
E3⇒ モスクワ >>886
=SWITCH(A1,"日本","東京","アメリカ","ワシントン","ロシア","モスクワ","") >>892
このハゲ!
一つじゃなくてもベストな方法は一つだ 絶対参照と複合参照、相対参照だったかな?
このあたりがわからん。
mosの資格をとりたい >>894
「絶対参照」とかで検索した方が早い
MOSなら資格板に言ったほうが良い。一週間も模試うけまくればまず落ちることはない >>894
出るものって結構決まってるから模試やればいける
やらないと無理かも
ただ本番の方が日本語が拙い時があって悩むw
問題数は模試のが多いな オプション設定の設問やピボットの細かい機能求められるので、模試やらないと絶対に受からんと思う >>894
絶対参照と相対参照は、超簡単。
まずはそれを理解して、複合参照を理解すれば大丈夫。
複合参照は実務だと、条件付き書式でよく使う。 条件付き書式は$つけないでいけることも多いから
やってみてずれたら行と列とどっち固定かなって考えてつける VBAとか関数とか最初にちょろっと打って予測か出てくるの選んで、とやってるとテストだと忘れててきつい 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel1601192920300
先頭、末尾に移動するのにCtrl + Home、Ctrl + Endはわかっているのですが
ツールバーでありませんか? sub ○○() は本来
(Public) sub ○○() が省略されてるもの
で合っていますか?
Cells(1, 1).Value = が Cells(1, 1) = でいけるのと同じで 【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 不可
A1に
S15がAならB A以外は空欄
で
Bは別シートの別シートC12
と表示するにはどうしたらいいですか? 空欄は""
別シートのセル指定は=の後に別のシートのセルクリックして
実際にどうなっているか見ればいいでしょ >>906
そういうこと
Private,Friend等指定が無い場合そうなる
>>907
if(s15="A",hage!c12,"") >>910
詳しく書いていただき
ありがとうございます 集合横棒グラフは、目盛(値軸)を上下2つ付けることできないんでしょうか? グラフをコピーして2個作って上下に並べればいいよ
片方の横メモリラベルは消せばいい 【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 不可
A1
=IF(S12="日","",'計画 '!C12)
だと
で別シート'計画 '!C12が空欄の場合
A1が0になってしまいます
で別シート'計画 '!C12が空欄の場合
A1が空欄になるにはどのようにすれば良いですか? >>914
if('計画 '!C12="","",'計画 '!C12) >>914
=IF(OR(S12="日",'計画 '!C12=""),"",'計画 '!C12) >>916
ありがとうございます
複雑すぎて意味わからないですが
上手くいきました
大変助かります 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 可
・あるセルに数値を書き込む
・数値入力時点での日付、時刻を隣接セルに書く
というようなことをやっていて、日時入力の手間を減らしたい
イメージを作ってみたがこんな感じ
https://i.imgur.com/2HVxrLE.jpg
「ctrl+;」「ctrl+:」でもいいんだけどかなり頻繁に入力するからなるべく手間を減らしたいんだ
こういうのはVBAでやらなきゃ無理かな?
now関数とかは入力するたび変わっていっちゃうからうまい具合にやる方法が思いつかない >>919
一応聞いておきますけれども 、1日に何個くらいデータ入力するのですか? B2は二回目の入力データでいいの?一回目のデータは要らないの? 金額のまえに?がついてしまい、置換で消そうとしても?は特別な意味のある記号らしく、全てを空白に置換するとセルが全部消えてしまいます。
https://i.imgur.com/gkoRlOj.png 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2016
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
>>923の状態は、むしろどうやって作るのでしょうか? >>926
ありがとうございました。
文字化けですか。 最近よく見るけど、¥記号、〜記号、ハイフン、半角スペースなど一部の記号だけがなぜかユニコード文字になってるWEBサイトやデータがけっこうあって、コピペやエクスポートすると必ず文字化けするんだよなあ
スマホやタブレットからデータ入力すると、日本語入力エンジンのデフォルトの優先順位の関係でユニコードが選ばれてしまうらしいんだけど、修正の手間が増えて地味に困ってる G列の2行目以降でセルの値が1000であれば、その行を行ごと削除したくて
これを試したのですが、エラーになります
Columns("7").AutoFilter Field:=7, Criteria1:="=1000"
Range(Range("G2"), Range("G" & Rows.Count).End(xlUp)).SpecialCells(xlCellTypeVisible).EntireRow.Delete
Selection.AutoFilter
それと同じようにA列の2行目以降で"59″であれば行を削除するためにこれをつかいたいのですが
1行目がなくなり、AutoFilterが解除されないです。
Columns(1).AutoFilter Field:=1, Criteria1:="=59"
Range(Range("A2"), Range("A" & Rows.Count).End(xlUp)).SpecialCells(xlCellTypeVisible).EntireRow.Delete
Selection.
正しい書き方をおしえてください >>932
オートフィルターに頼らない方が良い
あれは微妙に挙動がややこしい
Sub Macro1()
For i = Cells(Rows.Count, 7).End(xlUp).Row To 2 Step -1
If Cells(i, 7).Value = 1000 Then
Rows(i & ":" & i).Delete Shift:=xlUp
End If
Next
End Sub >>934
どこの部分ですか?
>>935
これを使ったのですが、時間がかかるもので、オートフィルターを使おうと思いました。 遅いなら配列に入れるとか。
Sub Macro1()
tmp = Range("G1:G" & Cells(Rows.Count, 7).End(xlUp).Row).Value
For i = Cells(Rows.Count, 7).End(xlUp).Row To 2 Step -1
If tmp(i, 1) = 1000 Then
Rows(i).Delete
End If
Next
End Sub まあ最速はアドバンスフィルタかSQLだと思うけど。 >>932
Columns("G").AutoFilter Field:=1, Criteria1:="1000"
Row = Range("G" & Rows.Count).End(xlUp).Row
If Row >= 2 Then Rows(2 & ":" & Row).Delete
Columns("G").AutoFilter >>938
ありがとうございますm(__)m
早くなりました。 マクロって結果をシートに代入させると遅くなるのかな
1列のみの50行の範囲、検索数18個(for〜)の条件で
合えば、セルに色を付ける作業でも目でわかる速さでポツン、ポツンって色が付く >>943
表示に関わる処理は遅い
でもセルに値や式を入れるのなら1回で一気にやれば一瞬 色が付いていく様子が見えると言うことは表示切ってないだろうから、
screenupdatingを切れば50行程度ならマシになるんじゃね >>945
画面の切り替えはないから速度変化はないと思うけどscreenupdatingは別のマクロで使えそうなので感謝 >>946
画面の切り替えではなく、描画をONOFFする命令だよ 指定したセル範囲内に、異なる2つ以上の値(ブランク含まない)があればtrueを返す、VBAプログラムを教えてください。 >>948
Function 違うのがある()
違うのがある = False
For Each c In Range("A1:E10")
If c.Value <> "" Then x = c.Value: Exit For
Next
For Each c In Range("A1:E10")
If c.Value <> "" And c.Value <> x Then 違うのがある = True: Exit For
Next
End Function >>950
良さそうな案と早レスありがとうございます!
試してみます! 更新プログラムの為にサインインしたらメニューバーに自分の名前が出るようになったのでサインアウトしようとしたら「カスタマイズしたものが失われます」と警告が
通信を切って再起動しても変わらず悩んだ末にサインアウト!
結果は特にカスタマイズしたもので消えたものはなくて一安心だがカスタマイズしたものって何だったの? 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2017
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
出力したエクセルデータを、特定のフォーマットに整理する作業を簡単にしようとしています
ひとまずマクロで自動記録したものを加工しながらどうにか自動化したのですが
例えばG列をC列の前に切り取って貼り付けすると旧C列がD列となりますよね?
これを繰り返すと少しずつ列がズレるためか、思ったような動きにならずかなり手間取りました
「次にB列に行を挿入したいがC列と記録したほうが正しく動く」ような状態があり…
マクロ記録において、こういうやり方は正しいですか? >>953
挿入後のズレを考慮して作ってもいいし、前に挿入するなら後ろから処理していくと楽だと思うよ C:CにA1と同じセルがあるかどうかをチェックする際、どの関数を使いますか?
countif()?match()? >>956
俺はcountifだがかなり人によると思う Hの列だけで空欄のセルがある場合には一つ上のセルをコピーしたいのですが
↓だと、A列ではない他の列の最終行まで続いているのと、すべてのセルにも
同じコピーをしてしまいます。
For r = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
On Error Resume Next
With range("H2:H" & r)
.SpecialCells(xlCellTypeBlanks).Formula = "=R[-1]C"
.Value = .Value
End With
Next r
Err.Clear >>954
一応アリなんですね
初めて使ったので試行錯誤でしたが…確かに後ろから処理してなるべくずれないようにしたほうがすっきりしそうです
>>955
新しいシートに作れたらレベルが1つ上がりそうですね
実は不要な列も多いので、その方法は今後試してみたいです >>953
データ量や型にもよるけど、
配列に入れてから貼り付けるのがいい。
a = Range("A1:A65536").Value
Range("C1:C65536").Value = a Jの列で半角の英数字以外の文字を消すコードを教えてください
"あ5いうAえ6おBかき"→"5A6B" >>962
substitute jisとかそんなん 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2019
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
競馬のデータをエクセルに入れたのですが競走馬の名前と競馬場や距離を入れると
各着順のカウントをしたいのですがVLOOKUPとCOUNTIFSをどう組み合わせればいいのか
教えてください。
http://iup.2ch-library.com/i/i2017802-1570301315.jpg >>962
Sub Macro1()
Dim s As String
For r = 1 To Cells(Rows.Count, "J").End(xlUp).Row
s = Cells(r, "J")
s2 = ""
For i = 1 To Len(s)
c = Mid(s, i, 1)
Select Case c
Case "0" To "9", "A" To "Z", "a" To "z"
s2 = s2 & c
End Select
Next
Cells(r, "J") = s2
Next
End Sub >>964
countifs(h8:h100,c2,c8:c100,c4,着順の範囲,"1着") このバーのところに出るようになった検索バーって消せないんですか?
誰か最新のExcelに詳しい方お願いします
https://i.imgur.com/b5cGFet.png >>969
ファイル>オプション オプション画面を表示します。
すると全般の中に、"既定でMicrosoft Search ボックス を折りたたむ" 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2013
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
INDEX+MATCHでB328の中にN2〜N27の文字列が含まれてるとO2〜27の値を表示させるワイルドカードを使ったのですが、完全一致しか反映されませんでした。
どの部分が原因でしょうか。
=INDEX($O$2:$O$27,MATCH("*"&B32&"*",$N$2:$N$27,0)) >>972
おおお、出来ましたありがとうございます!
>>971
うそつき!!! 【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel 2010
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
質問です。
AシートのA列に1 1 1 2 2 2 3 3 3
とあって
BシートのB列に1 2 3という風に
AシートのA列に入力した同じデータが
BシートのB列にまとまるにはどういう関数を使えばいいでしょうか?
ちなみに数字はランダムです。
説明が下手で申し訳ございません。
ご教示くださいますようよろしくお願いします。 VBAの処理と、ワークシート関数の処理はあまり絡ませない方が良いのでしょうか?
例えば、ものすごく簡単に言うと、
range A1 =10
range A2 =20
range A4 = range A2 + range A3
みたいなプログラムです。
(range A3のセルには、sum関数A1+A2が入ってる)
実際は正しい値が入りますが、ちょっと気になったので… >>978
それが必要ならば絡ませる
意味もなく混在してるんでなければいいんじゃね >>977
small(hage!a:a,row(a1))
countifあたりでも検索してみれば 974です。
=INDEX($O$2:$O$27,MATCH("*"&B32&"*",$N$2:$N$27,0))
INDEX+MATCHだと、
=INDEX($O$2:$O$27,MATCH(B32,"*"&N2:N27&"*",0))でした。
B列のなかにN列のものがふくまれていた場合にO列のコードを反映したいのですがうまくできません。どのようにしたらうまくいくでしょうか。 974、981です。
こんな形ですが、ワイルドカードで特定の文字列を含んだ数字を表示させることはできそうなのですが、もっと効率のよい関数はあると思うんですが、難しいです。
=IF(COUNTIF(B32,"*"&$N$14&"*"),$O$14,IF(COUNTIF(B32,"*"&$N$15&"*"),$O$15,""))・・・・
うまく表現できなくてすみません。 >>982
=INDEX($O$2:$O$27,MATCH(TRUE,ISNUMBER(SEARCH($N$2:$N$27,B32)),0))
Ctrl + Shift + Enter を押して数式を確認する必要があります range("b5").End(xldown).offset(1,0).select
これはレンジからoffsetまではオブジェクトで、Endとoffsetはレンジのプロパティっていう理解でいいですか? 書いてあるのがプロパティかオブジェクトかという話なら最後のselect以外は全部プロパティ
戻り値がプロパティかオブジェクトかという話ならrangeもendもoffsetも全部オブジェクト >>983
有り難うございます。めっちゃ嬉しいです。 >>985
ありがとうございます。プロパティとメソッドの違いがよく分からないです。勉強します。 >>987
メソッドは関数
プロパティは変数
両者を一つにまとめたのがクラス
これらすべてがオブジェクト >>988
ありがとうございます。
.selectとか.deleteみたいに文章の最後に来るのがメソッドでドットで連結していくのがプロパティっ理解でした。。。 for i=1 to 20でループしようとしたら何故か1の次に3が代入されます
なんの原因が考えられるでしょうか? >>991
ステップインとかでみてみては?
コード見ないとわからん。 >>992
今出先なので思い出せる範囲ですが
dim i
for i =1 to 20
ieのチェックボックスをクリックするコード(チェックボックスのID「"×××"& i-1」)
ie操作をしており、IDの末尾が0.1.2.〜と順に増えていくチェックボックスを順にクリックしていく流れです。 >>991
2だけ飛ばすのではなくなぜか1.3.5.7〜というように飛び飛びになってました そんなもんForループの中に i = i + 1 があるだけだろ なんでそんなうろ覚えのまま外出先で急に質問しようと思ったのか |
| 彡⌒ミ
\ (´・ω・`)また髪の話してる
(| |)::::
(γ /:::::::
し \:::
\ このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 73日 0時間 12分 38秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。