Excel総合相談所 156
【1 OSの種類 .】 Windows** 【2 Excelのバージョン 】 Excel** 【3 VBAが使えるか .】 はい・いいえ 【4 VBAでの回答の可否】 可・否 注意事項 ・情報を隠すために別の問題を設定するのはやめましょう。たいていの場合その問題は的外れな設定で、期待していたものからずれた回答が返ってきます。 スレッド作成は>>980 がやります ※前スレ Excel総合相談所 155 http://mevius.2ch.net/test/read.cgi/bsoft/1692436189/ >>167 これの良いところは たとえばA、BがC、D、Eと増えても 式が無駄に長くならないとこ 可読性も良いしね。最初からそう優しく教えてやれば良いよ へえ、365だとそこまで短縮できるんか はじめて触ったのが365って人が増えてくれば、>>156 みたいな式のが逆に難しく思えるようになるのか >>171 おれは167じゃないぞ? 初めからとか一言よけいなんだよ いや、>>156 氏の式の方が意味は分かりやすいと思うのは俺だけか? 配列数式便利だけど多分初心者だとエンター出来ないとか解除できないで詰むと思う 式を自分で分解してたとえば ={"A";"B"} だけをセル入力して どんな処理がされてるのかを理解して知識を深める学習作業が大事 初心者に合わせていたら効率化困難とかの書き込みあるくらいだしな は、配列数式っつーんですか はえー、勉強に成ります(2019でも使えるのがうれしい) ただ、単純に配列数式だけでググってみても、大抵は数量×単価みたいなのばっかりだけど このシフト単価計算だと、中かっこ使った配列?をみごとにまとめていて、使用する場面を具体的に想起できて すばらしいケーススタディですね これなら他の場面でも似たケースにぶち当たった時に思い出して応用できる 覚えようという気にも成る このケースの単価に該当するものがいくつまで可能か試したく成ったりもする いやあ、脊髄反射でバカだのしか書けない輩に比べたら雲泥の差 月とスッポン 下郎と天子様 さすがです スピルいいな。 でも、2013しか持ってない。 古いPCだから新しいのは入れたくない。 しょうがない。 2016からつかえるんだな。 2013はスライサーのために必須だったけど、スピルはなくても何とかなるし。 スピルって確かGoogleが先なんだっけ? 教えて偉そうな人 まだ一言よけいなのが棲み着いてるのか 学習能力ゼロだな >>183 単価を式内の組み込みじゃなくセル指定にすれば 単価が増えても式も延びないし単価もいくらでも増やせる だが最後の行はいらん 無駄な火種を撒くな 今回の質問自体釣りだろ ここしばらくそういうのばっか 釣りだと言い張るレスと おまえのレス どっちがいらんと思う? ここはいつから他人の提示した数式を評価しケチをつけるスレになったんだ? >>193 あとから別解がいくつも出てくることは昔からよくあったぞ 機能的な相談とは違うがEXCELは今後勉強する意味はあるのだろうか? 自分はEXCELができる方ではないが、EXCELに長けることは会社にとって重宝される人材なんかな? >>197 Excelに長けることで重宝はされない(これ直してみたいなPCの大先生扱いで雑務は増える)けど、Excelでの事務仕事を効率良く終わらせて他の仕事に時間使ったうえで成果出せば重宝されるんじゃないかな あくまでExcelはただの道具 同僚や上司には重宝されるけど、会社には重宝されないなぁ 大先生となって雑務をこなすことや、同僚や上司に重宝されること=会社に重宝されるにはならないのかあ 残念 間違っても人に渡すエクセルでスピルなんて使っちゃダメ Aの数を集計する列 Bの数を集計する列 Aの集計に単価を掛ける列 Bの集計に単価を掛ける列 合計 くらいやっとかないと絶対あとからメンテさせられる 今やExcelの天才中学生もいるくらいだからな。勉強するなら早ければ早いほどいろいろ吸収できる >>202 スピルを使えばメンテはしづらくなるかもしれないが、元々先生が作ったワークセルに数式ふんだんに入力したEXCELなんて決まったセルに入力させる前提で展開してるからスピルを使ったところで作った本人しかメンテできないことには変わりない 逆に早くスピル使った数式入力が普通になって欲しいけどな 行列挿入で数式壊したりしないし計算速度もスピーディだしな テーブルや配列数式ですら作った本人しかメンテできなくなる SUMすら使えずセル一つずつ足し算するおっさんが駆逐されない限り夢のまた夢 事務なんて高卒かFラン文系の仕事だろ 英単語もロクに知らないのに関数を理解できるわけがない チャットgptに頼めば旧関数をスピルに変換やその逆も教えてくれるんじゃね >>207 =B2+B3+B4+B5+B6+B7+B8+B9+B10みたいな式でしょ? 実際にウチの職場で見た信じられない式。頼むからSUM関数位は覚えてくれと言いたくなったw 請求書なんかのレイアウトで横に並んでる商品名や金額の行の高さが、 商品名の長さによって2段以上になってしまつのはよくない? 商品名省略してでも1行な気がしています >>153 です とりあえずCOUNTIFとMIDを使ってやりたいことはできました 他の方法に関しても教えていただいた方々本当にありがとうございます >>212 書類で重要なのは体裁じゃなくて内容 勝手に省略するのはトラブルの元 その表の設計したヤツにクレーム入れたほうが良いぜ。 スピルに慣れると、以下の感じにしたくなる。 賛同する方ってここにおるんかな?と思って、今更感バリバリやが、あげてみた。 スピルに対する考えは、人それぞれで良いと思うが、自分はレガシーには戻れん感じや。 =LET(日給情報,B1:C1,勤務データ,B4:H6, 日給情報整理,TEXTSPLIT(TEXTJOIN("⭐︎",TRUE,日給情報),":","⭐︎",,,""), 日給情報_ランク,INDEX(日給情報整理,,1), 日給情報_日給,INDEX(日給情報整理,,2), 日給,XLOOKUP(勤務データ,日給情報_ランク,日給情報_日給,0)+0, 給与,BYROW(日給,LAMBDA(a,SUM(a))), 給与) ワークシートの構成を治さずに関数書けちゃうのが寧ろ365のデメリットだな ワークシートを治せば明快な式になるのにねー 216も160も煩雑すぎ >>214 とはいえ入らないからなあ 請求書なんかの羅列されてるので等間隔(商品名により欄の太さが変わる)じゃないのは最悪だ、とネットに書いてあったのできになってます。コンビニレシートも省略だし、まあ相手も省略でもわかるだろうし問い合わせられたらすぐ答えられるから省略でいってみます ちなみに、両面印刷はどう思いますか? スマホの明細なんかは両面ですが 一般的には片面でしょうか? ページと請求書番号書いてホチキスはつかわず郵送してます >>220 勝手なことしてないで上司に確認しろ 無駄な仕事を増やそうとするな(聞かれたら答える、の部分) ネットの感想なんか参考にするな、そもそも掲示板なんかで聞くな >>221 上司いないからここできいてるんだよ 全部何もかも一人でやってる超零細の社長やってる どんなご商売なさっていらっしゃるか存じ上げませんが、別途納品書はあるのでしょうか? 納品書兼請求書でまとめていらっしゃるのでしょうか? 納品書があるなら納品書番号併記で省略は可能かと思われます。 納品書兼請求書で送られる場合はなるべく全文のがいいように思います。問い合わせなどの二度手間を省く意味でも。 コンビニレシートやスマホ明細と比較なさっていらっしゃいますが、それらは商売向けとは別物と捉えられた ほうがいいように思われます。個人向けサービスの一環としての請求・領収に過ぎませんので。 とは言え、古い世代のムダな慣習から脱皮して、より効率的よりスマートより便利な手順として確立できるなら 新世代の方々には受け入れられ広まるかも知れませんので、自分なりに考察した方法で提出していくのも ひとつの手立てかも知れません。ネットの情報は、ネットに載った時点ですでに古いものなのですから。 どうやら決定権者のご様子ですので、旧世代との違いを見せ付けて新世代・Zの時代を構築していく先駆者と 成るべく日々邁進されることを陰ながら応援させていただきます。 かしこ 項目が長くて入らないなら、最初から全体の枠を大きくしとくかフォントを小さくすればいいだけだし、後半を切りたきゃ切ればいい てか、社長ならこれぐらいのこと自分で決めろよ 注文によって内容の差が大きく、数行にわたる説明が必要になるなら、無理に省略すると内容がわからなくなって相手方の経理担当者が発注者や212に問い合わせる手間が生まれるし 逆に会社名だけで内容は自明(単発ではなく毎月の取引が中心だったり、◯◯鮮魚みたいなわかりやすい社名)で、何十項目も並ぶような請求書でちょっとはみだすこともあるという程度なら、多少省略したり「縮小して全体を表示する」で文字を小さくしたほうが人間にもOCRにも読みやすいだろうし 会社によるんじゃない? 両面印刷は、相手方の領収書整理のスタイルによっては微妙にスキャンが面倒になるので、あんまりよくない スマホ請求とかは1ページ目の表に合計額があるからそれ以降の明細はオマケだし、しっかり電子帳簿保存してる会社なら最初から紙じゃなくてデータで受け取るからこっちがメイン 【1 OSの種類 .】 Windows 11 【2 Excelのバージョン 】 Excel 365 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 行数 A B C 1 日付 担当者 担当地域 2 2024/04/19 山田 東京都 3 4 取引先 取引先担当 住所 5 ○○会社 田中 東京都~ こんな感じで項目行・項目内容・空行の繰り返しの表ですらないブックが取引先の数だけあるんだけど A列=項目名 B列=項目内容 に変換するのに一番効率いいやり方ってなんだろう 地道に別シートでイコールで引っ張っていくのが早いのかな >>226 =WRAPROWS(TOCOL(A1:C5,1,1),2) >>226 いまだにこういった表形式にしてる職場って多いよな web版だと書式で日付にしているところにはカレンダーがでるんですが、365だとでない 昔はカレンダーでてたのになんでweb版だけ残ってるんでしょうか? 便利だから使いたいんですよね >>227 すげぇこんな関数あったんだ 知れてよかった 項目が順番に並んでなかったのでやり直し =LET(a,A1:C5,b,2,r,LAMBDA(x,y,IF(COLUMNS(y)=b,y,VSTACK(TAKE(y,,b),x(x,DROP(y,,b))))),r(r,WRAPCOLS(TOCOL(a,1),COLUMNS(a)))) >>231 ありがとう 家のEXCELはバージョン違うから試せないので月曜日試してみる >>226 取引先の数だけブックがあるんでしょ? 肝心の「1ブックづつ式をコピペする作業」を改善しなきゃ >>234 A1:C5の部分をVSTACK(A1:C5,別ブック@!$A$1:$C$5,別ブックA!$A$1:$C$5…)みたいな感じでVSTACKで繋げていけばよいかと VB組んだ方がラクかもしれないけど専門じゃないから他に良いやり方あったら提案してあげてみては? >>235 どこが間違っているか教えて?見直すから >>232 WEB版EXCELだったら最新の関数使えるから数式試すだけだったらWEB版で見てみるのも良いかも ExcelのVBAマクロを使用して、ご希望の操作を行うことができます。以下のマクロは、複数のブックに対してSheet2を挿入し、Sheet1の指定された範囲の値を転置してSheet2に転記する処理を行います。 Sub 転記マクロ() Dim ws As Worksheet Dim wb As Workbook Dim arrBooks As Variant Dim i As Integer ' ここに処理したいブックのパスを列挙してください arrBooks = Array("C:\Book1.xlsx", "C:\Book2.xlsx", "C:\Book3.xlsx") For i = LBound(arrBooks) To UBound(arrBooks) Set wb = Workbooks.Open(arrBooks(i)) Set ws = wb.Sheets.Add(After:=wb.Sheets(1)) ws.Name = "Sheet2" ' Sheet1のA1:C1の値を転置してSheet2のA1:A3に転記 ws.Range("A1:A3").Value = Application.Transpose(wb.Sheets("Sheet1").Range("A1:C1").Value) ' Sheet1のA2:C2の値を転置してSheet2のB1:B3に転記 ws.Range("B1:B3").Value = Application.Transpose(wb.Sheets("Sheet1").Range("A2:C2").Value) ' Sheet1のA4:C4の値を転置してSheet2のA4:A6に転記 ws.Range("A4:A6").Value = Application.Transpose(wb.Sheets("Sheet1").Range("A4:C4").Value) ' Sheet1のA5:C5の値を転置してSheet2のB4:B6に転記 ws.Range("B4:B6").Value = Application.Transpose(wb.Sheets("Sheet1").Range("A5:C5").Value) wb.Close SaveChanges:=True Next i End Sub このマクロをExcelのVBAエディタに貼り付け、必要なブックのパスを配列に設定して実行してください。各ブックが開かれ、指定された操作が行われた後、自動的に保存されます。マクロを実行する前に、マクロが有効になっていることを確認し、実行する前には必ずバックアップを取ることをお勧めします。また、実際のファイルパスに応じて、arrBooks 配列内のパスを適宜変更してください。 あ、そういう事か。綺麗なコード書くなぁと思ったし。 【1 OSの種類 .】 Windows 11 【2 Excelのバージョン 】 Excel 365 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 関数で可能なら VSTACKやEXPANDなどの新しい関数を自分なりに調べながら試してます。 A1セル:"前月" D1セル:"当月" F 3 前月 4 当月 5 前月 6 当月 7 前月 ・ ・ ・ と任意の回数、交互に繰り返して配列として入力したいとき、F3セルに入れる数式でこれを実現できるでしょうか? 非効率なことをやろうとしてることは承知の上で、関数でどこまでのことができるのか知識として学ぼうとしています。 お知恵をお借りできればと思います。よろしくお願いします。 >>243 ご参考程度に =CHOOSE(MOD(SEQUENCE(任意回数),2)+1,D1,A1) or =MAKEARRAY(任意回数,,LAMBDA(a,b,IF(MOD(a,2),A1,D1))) → 前月、当月をそれぞれ任意回数分繰り返し =LET(a,任意回数,b,VSTACK(A1,D1),r,LAMBDA(x,y,IF(y<=1,b,VSTACK(b,x(x,y-1)))),r(r,a)) → 前月、当月を2つ1セットで任意回数分繰り返し =TOCOL(HSTACK(EXPAND(A1,10,,A1),EXPAND(D1,10,,D1))) 下記条件を満たす式書ける人いる? 関数5つ以上使用不可 繰り返し回数以外の数値や四則演算は使用不可 使用可能な参照はA1、D1を各1回のみ >>247 =IF({TRUE;FALSE;TRUE;FALSE;...任意回数繰り返し...},A1,D1) MS635 最近、起動時に「遅いブックですか?.....」[パフォーマンスの確認]ボタンが出るのですが [すべてを最適化]ボタンを実行してもよいのでしょうか? >>247 =IF(ISODD(SEQUENCE(任意回数)),A1,D1) >>247 =TOCOL(IF(SEQUENCE(任意回数),HSTACK(A1,D1))) >244-245 ありがとうございます。いずれの数式も希望通りの結果が得られました。 シンプルなものから中身を確認していき、今後に活用していきます。 あえて複雑なように、連続してない独立した複数セルの繰り返しのパターンで質問させてもらいましたが、 単純な1列の同じ配列を任意の回数繰り返すパターンも、数式で表そうとすると難しくなるでしょうか・・・? いただいた回答をもとに、B1:B4の範囲に繰り返したい文字列があったとして、 下記の数式で期待どおりの結果は得られたんですが、もしもっとスマートな式があればアドバイスをお願いします。 =CHOOSE(MOD(SEQUENCE(繰返回数)+3,4)+1,B1,B2,B3,B4) MSのCopilotにDax関数の質問をしたら、間違いを数回やってそのたびに謝られた。 3回目かでバッチリ成功したよと伝えたら、喜んでた。 なんかどこかのスレより人間ぽいなと。 別な質問でやっぱり誤答してきて、別に調べたら、どうやらPower BI版でしかできなさそう。 そのことを指摘すると、以後は壊れたレコードのように同じ内容の繰り返し。 これまたどこぞの国会答弁みたいで妙に感心してしまった。 >>252 正解 可読性と汎用性を両立するこの式の考え方が重要 >>251 は繰り返し回数に2を掛ける必要があるのと汎用性が低いので△ >>247 は可読性と実用性×、式の長さ的にも繰り返し回数1000くらいでエラー出るので× >>253 >>252 のHSTACK(範囲)をTRANSPOSE(範囲)に変えるだけ >>256 個人的には範囲の部分はTOROWが好きかな 2列になっても対応できる このスレは質問を装ってレベルの低い奴が試験を出すのか なるほどー =TOCOL(IF(SEQUENCE(任意回数),TOROW((A1,D1),TRUE))) >256-257 ありがとうございます! シンプルな数式がわかってスッキリです。 確かにTOROWの方がより汎用性は高そうですね。検索方向も引数で指定できるので柔軟な対応もできそうです。 見積書の品名項 、例えばAの1から50までの各セル(左右2セル結合)内の文字列を 新たなシート見積書のBの1から50に一括コピペするにはどうすればいいですか? わからなくて1セルづつコピペして疲れましたw 教えてください >>261 マウスでドラッグして緑色の枠で選択してコピペ …という部分が問題なら、あまりにも基本中の基本すぎて解説が見つからない その段階なら、文章での説明を読むよりも、近くの誰かに教えてもらった方が速いかもしれない 数が多くて画面に収まらないときは、端と端をshiftで選択するか、ctrl+shift+↓でまとめて選択 https://www.yrl.com/column/wazaari_pc/excel_select_cells.html セル結合が一緒にコピペされるのが邪魔なときは、形式を選択して貼り付け https://www.pc-koubou.jp/magazine/42412 最近ようやくctrl+shift+Vで値だけ貼り付けられるようになった https://forest.watch.impress.co.jp/docs/news/1527708.html 【1 OSの種類 .】Windows10 【2 Excelのバージョン 】 Excel365 【3 VBAが使えるか .】YES 【4 VBAでの回答の可否】YES 他ブックのシートのA1~H20のセルを転記するマクロが欲しいのですが、 その転記元ブックの場所は常に同じ場所にあるわけじゃないから、マクロを実行した時にコモンダイヤログっていうの? 名前をつけて保存するときに出てくるような小さな窓を出現させてファイルを指定したい 転記が終われば転記元ファイルは閉じて開かれてるExcelブックは転記マクロが入ったものだけ 動作的には転記元ファイル指定したら勝手に転記されてるように見えるのが理想です アドバイスお願いします ありがとうございます 普通にそれが出来なくて??でした。 人の作った見積もりだったのでうまくいかなかったのかもしれません(恥) もう一度やってみます >>261 新シートのB1=(SHEET1,A1:A50) Sub CopyDataFromExcelFile() Dim filePath As String Dim wb As Workbook Dim wsSource As Worksheet Dim wsTarget As Worksheet Dim sourceRange As Range Dim targetRange As Range ' ファイルを選択 filePath = Application.GetOpenFilename("Excel Files (*.xls; *.xlsx), *.xls; *.xlsx") If filePath = "False" Then MsgBox "ファイルが選択されていません。" Exit Sub End If ' ワークブックを開く Set wb = Workbooks.Open(filePath) ' ソースシートとターゲットシートを指定 Set wsSource = wb.Sheets("Sheet1") Set wsTarget = ThisWorkbook.Sheets("Sheet1") ' コピー元の範囲を指定 Set sourceRange = wsSource.Range("A1:H20") ' コピー先の範囲を指定 Set targetRange = wsTarget.Range("A1:H20") ' データをコピー sourceRange.Copy Destination:=targetRange ' ワークブックを閉じる wb.Close SaveChanges:=False End Sub read.cgi ver 07.5.4 2024/05/19 Walang Kapalit ★ | Donguri System Team 5ちゃんねる