There is a website on which products are presented.
I wanted to import all products with prices and articles into a Google table via IMPORT XML.
But it turned out so far only to collect all possible pages in a separate column E:E (=IMPORTXML("https://dg-trade.ru/catalog/";"//li[#class='sect']/a/#href" ))
The problem arises due to the fact that not all products on the page are shown on the site, and they need to be loaded as they scroll. How can this be circumvented?
As a result, I would like to get a table like on sheet 2.
Link to the table: https://docs.google.com/spreadsheets/d/1rD8jJujaAe9Yz2uBB_4IMTcUs_oQFrF88ydmEIiXCsg/edit?usp=sharing
The table will be like this (for example, line 5 on sheet 1):
Name
Qty
Art
Price
Масло моторное LUKOIL AVANTGARDE ULTRA 15W-40 (на розлив)
Много
4001/1703
760 руб./л.
Related
I have two external GSheets that are set up as room bookings with a running date in col B and the different rooms ppl can book in col C-AX for Sheet1, C-X for Sheet2, as well as my own Sheet with a list of names (let's call it NameSheet).
Example:
Goal: I want to add an extra column in NameSheet that returns all dates within the next two weeks in which a person has booked a room as well as the room info. Like this:
I used IMPORTRANGE to import both Sheets into my own Sheet (Merged_Sheet) and then merge them dynamically using a simple query formula:
=QUERY({'Sheet1'!A:AX;'Sheet2'!A:AX},"select * where Col1 <>''")
(I had to expand Sheet 2 to AX in order to merge them.)
I then set up another sheet (Date_Filter) to dynamically filter on the next two weeks:
=filter('Merged_Sheet'!A:AX,'Merged_Sheet'!B:B<=today()+7*1)
Finally, I have so far only managed to add a column in my original NameSheet that counts the number of times a there is a partial match on a name in the Merged_Sheet:
=countif(Date_Filter!A:AX,"*"&Name&"*")
Now I'm stuck on how I can return the dates & room info on a partial match (the name columns in the room sheet are "[First Name] [Last Name]" while the employee sheet is set up as "[Last Name],[First Name]") across an entire sheet. I've tried using regexmatch, filter, contains, and even the query function again, but I keep getting function errors.
I would super appreciate any formula help. :)
I am trying to lookup for data in multiple tabs (so far I have 20 sheets). I just want to import the status information when someone selected the dropdown. I used the formula below
=ARRAYFORMULA(VLOOKUP(D5:D,{EVENTS!A1:E4,CURRICULUM!A1:E2,DATA!A1:E2,'STUDENT EXPERIENCE'!A1:E2,Alderink!A1:E2,Bishop!A1:E2,'Bishop, Booker'!A1:E2,Booker!A1:E2,'Booker, Events'!A1:E2,'Booker, Davis'!A1:E2,'Booker, Coughlin'!A1:E6,'Booker, Giles'!A1:E2,'Booker, Cramer'!A1:E2,Coughlin!A1:E3,'Coughlin, Shepard'!A1:E2,'Daley, Booker'!A1:E2,Dutkiewicz!A1:E2,'Dutkiewicz, HR'!A1:E2,'Epstein, Booker, Coughlin'!A1:E2,'Fortier, Giles'!A1:E2,'Giles, HR'!A1:E2,Gunn!A1:E2,Lawrence!A1:E6,'Lawrence, Gely'!A1:E2,Lowe!A1:E2,'Lowe, Enge'!A1:E2,Niedzielski!A1:E3,'A. Miller'!A1:E3,'A. Miller, Lawrence'!A1:E2,'A. Miller, Events'!A1:E2,'M. Miller'!A1:E2,Montanino!A1:E3,Shelton!A1:E2,Shull!A1:E2,Sneath!A1:E5,'Sneath, Coughlin, Booker'!A1:E2,Stahley!A1:E2,Stevenson!A1:E2,Veneklase!A1:E2,Wiggins!A1:E2}3,1))
It seems it gives me an error. I am just trying to avoid copy and paste when multiple contributors inputting information. Created different sheets for each contributor and I want the data to be populated in summary tab when they input information in another tab.
Hello stack overflowers.
I have recently been creating a nutrition tracker to better track and control my nutrition. However I have run into an issue. So currently I have a 1 sheet in the nutrition tracker which is a "database" of foods and their macro nutrients per gram. In this sheet, I will enter all the foods that I generally eat and their associated per G nutrients.
this food "database" sheet has the following columns.
FOOD NAME, CALORIES, PROTEIN, CARBS, OF WHICH SUGARS, FAT, OF WHICH SATURATED, FIBER, SALT
This database is then used as a reference, so that when I input each meal as I eat it, I can simply select the food from a drop down list and type the number of G in that meal, and the nutrients will all be calculated for me.
I currently have it setup so that I can select food from the drop down list generated by "foods" sheet, within each meal table I have created. This is then correctly filling in the rest of the columns as expected once I input a weight for each meal. There is however a huge problem.
As soon as the FOOD NAME column of the Foods sheet had values in it below row 7 (not sure why this row is the limit) the whole thing stops working, the data grabs based on VLOOKUP just return 0 and do not act as they are meant to. The strange thing is they work absolutely fine until I enter too many foods (7 foods) into the foods sheet.
Please find below a link to my spreadsheet, maybe you can duplicate it and play around a little yourselves to better understand the issue.
https://docs.google.com/spreadsheets/d/1orwih7s_Z4ew8G1vJcR6qlxyMpX8pqK-3Ynj42qQjcQ/edit?usp=sharing
(if you help me fix it, you will have a free nutrition tracking spreadsheet to help you take control of your diet aswell)
Thanks in advance.
In the June tab, clear all formulas in the range D11:K18.
Then enter in D11
=ArrayFormula(IF(LEN(B11:B18), IFERROR(VLOOKUP(B11:B18, FOODS!A:I, {2, 3, 4, 5, 6, 7}, 0)),))
This single formula will process all values entered in B11:B18.
Note the third parameter of VLOOKUP (set to false). If it is ommitted (as in your formula) it will default to 'true'. That means vlookup expects a 'sorted order' which may not be the case for your data.
References
VLOOKUP
try:
=INDEX(IF(B11:B18="";; IFNA(VLOOKUP(B11:B18; FOODS!A:I; COLUMN(B:G); ))))
Looking to manage the mutual fund portfolio, and automatically update the price so the portfolio always shows the correct information.
I have tried to use Google sheet functions like
INDEX
SPLIT
VLOOKUP
IMPORTDATA
=IMPORTDATA("https://www.amfiindia.com/spages/NAVAll.txt")
=INDEX(SPLIT(VLOOKUP(A2&"*",NAV!$A$1:$A$20501,1,false),";"),,5)
The outcome of this is to create a portfolio with an automated price update.
You can easily use GOOGLEFINANCE APIs to do this. Suppose you want to track price of SBI Magnum Taxgain Scheme Direct Growth.
You can do this in the following steps:
Go to Google Finance.
Get the Google Finance Ticker symbol or Stock Id for the fund. For example:
MUTF_IN:SBI_MAGN_TAX_VQNUL5 for SBI Magnum Taxgain Scheme Direct Growth.
In a new Google Sheet use the following method to get current price of the MF.
=GOOGLEFINANCE("MUTF_IN:SBI_MAGN_TAX_VQNUL5")
For example see:
Medium Article
video tutorial
sheet
Create a spreadsheet on Google Spreadsheets. Name the spreadsheet as you need.
Let us create a sheet and name the sheet as "NAV". This sheet will hold all the latest NAV and will be updated with the latest price automatically. Let us visit this sheet later for automating the price update.
Now, let us create a new sheet, call it "Portfolio".
Create columns in the 1st row as follows:
AMFI Scheme ID
Account Number
AMC
Scheme Name
Unit Balance
Cost - Dividends
Value
Returns
Return (%)
AV Cost / Unit
NAV
NAV Date
Let us shift the tab to "NAV". In the column, A1 enter the formula as
=IMPORTDATA("https://www.amfiindia.com/spages/NAVAll.txt")
This will update the NAV automatically and we will use this data to update information in our portfolio. This will have the following columns now:
Scheme Code
ISIN Div Payout / ISIN Growth
ISIN Div Reinvestment
Scheme Name
Net Asset Value
Date
Now find the scheme you have invested in from the NAV tab and get the Scheme Code and copy to AMFI Scheme ID column on "Portfolio" sheet. Similarly, you can copy the Scheme Name.
Get your statement from the AMC and update the Unit Balance, Cost - Dividends columns.
In the "Portfolio" sheet enter the formula against NAV
=INDEX(SPLIT(VLOOKUP(A2&"*",NAV!$A$1:$A$20501,1,false),";"),,5)
In the "Portfolio" sheet enter the formula against NAV Date
=INDEX(SPLIT(VLOOKUP(A2&"*",NAV!$A$1:$A$20501,1,false),";"),,6)
Value column is the product of Units x NAV
Returns are Value-(Cost-dividends)
Return % is Returns / (Cost-dividends)
AV Cost / Unit is (Cost-dividends) / Unit Balance
Now create a summary line in the bottom for Cost-Dividends, Value, Returns and Return %
Voila! Your portfolio will be updated automatically when you open the spreadsheet. Just ensure you update unit balance and cost-dividends for accurate computations.
Most of the stocks and mutual funds are available via Google Finance API which Rishabh's answer explains clearly.
But Google finance doesn't have data for many Indian mutual funds like Axis Blue Chip Direct plan - Growth, Parag Parikh Flexi Cap Fund Direct Plan-Growth, etc.
Suresh's answer is a different yet effective way to add NAV and other details into google sheets but that formula is outdated and it no longer works in google sheets. So, I am answering this question with the new tested approach.
Steps to get the NAV for any mutual fund not present in Google Finance
As Suresh mentioned, create two sheets. One for portfolio and the other for NAV
In the first cell of the NAV sheet, enter the formula as
=IMPORTDATA("https://www.amfiindia.com/spages/NAVAll.txt")
Now, search for the mutual fund, I'm taking Axis BlueChip fund direct growth as an example.
Have a look at this image of Axis BlueChip direct plan growth mutual fund in NAV sheet
Note the row number for the mutual fund and in our case, it is 5507
Notice how the value is separated by ";" delimiter and we need to get NAV which is on 5th position (or column if separated by a delimiter)
To get the NAV value extracted from the specified row number of NAV sheet in the portfolio one, do the following
=INDEX(SPLIT(NAV!$A$5507,";"),5)
Breaking down,
NAV!A$5507: It means, we're extracting row number 5507 from the NAV sheet
SPLIT(NAV!$A$5507,";"): Since, the delimiter is ";", we're splitting it on ";" which will give us 5 columns (If you're confused, look at NAV sheet data again. There are a total of six fields Scheme Code, ISIN Div Payout/ ISIN Growth, ISIN Div Reinvestment, Scheme Name, Net Asset Value, Date)
=INDEX(SPLIT(NAV!$A$5507,";"),5): After splitting, we're choosing the 5th column which is NAV and that's how the above function works and we get the NAV value of the fund automatically.
Once, we get the NAV value, we can add the quantity and buy avg value of our stock/mutual fund in another column of the portfolio sheets
Then, with a simple operation, we can get the total value of our investment in sheets.
For example,
=(E6-C6)*B6
Cell E2 : Updated NAV price
cell C2 : Buy average price
Cell B2 : Quantity
I'd like to acknowledge my friend Abhilash who taught me to manage my stock portfolio by Google Sheets.
For the whole list of Schemes and their latest NAV try the following:
First row:
A1 = Scheme Code
B1 = ISIN Div Payout/ ISIN Growth
C1 = ISIN Div Reinvestment
D1 = Scheme Name
E1 = Net Asset Value
F1 = Date
In B2: paste the following:
=ArrayFormula(SPLIT(FILTER(IMPORTDATA("https://www.amfiindia.com/spages/NAVAll.txt"),isnumber(left(IMPORTDATA("https://www.amfiindia.com/spages/NAVAll.txt"),2)*1)=true,IMPORTDATA("https://www.amfiindia.com/spages/NAVAll.txt")<>""),";"))
I have 2 google workbooks. One is a rate sheet and the other is a vendor list with pricing.
I have the vendor list with pricing workbook linked to the rate sheet workbook via importrage command. This works great and everything updates as it should until you add a new line or remove a line to the rate sheet workbook. At this point the vendor workbook does not update the reference and just still points at the same lines it was originally, now displaying the incorrect data.
How can I dynamically have the vendor list workbook notice the addition or removal of lines in the rate sheet workbook and update the importrange formula?
Can this be done?
Any help is greatly appreciated.
EDIT: I have prepared 2 sample workbooks. They are Test sheet 1 - Rates and Test Sheet 2 Lanes
I have all of our rates in the first sheet. In the second we would have vendor lanes. This sheet consists of multie tabs all with an individual lane that is linked to 1 row in the rates sheet.
In the lanes sheet I have linked the two together via importrange in cell A8. Now this works and links properly, that is until you insert a new line in the rates sheet above the one the lane is linked to and then it doesn't update but shows what the new line information is.
Is there a way to have the lanes sheet dynamically update to the next line when a new line is inserted in the rates sheet?
two sheets links are as follows:
Rates
Lanes
Solution 1 - if you need to check only one condition
To achieve desired result you have to have something like an ID for every rate. For sake of this answer (based on your example sheets) I assume that this could be an Origin City. In Test Sheet 2 I have added new sheet - SheetTest where:
First step
I am looking for the row number where desire City reside in Rates sheet (in example - its Mcclellan city). The code for that is simple:
MATCH(A2,IMPORTRANGE("https://docs.google.com/spreadsheets/d/1JD45y-0-37Kh2KsHnRAMuB0quPtMVuLKuT1qjnNcm1Q/edit","Rates!B:B"),0).
This gives me -> 10
Second step
I use this result to dynamically generate final range - "Rates!A10:X10". The final result in A8 cell is (to make it clearer, I change an address of a sheet to -othersheeturl- :
=IMPORTRANGE(
"-othersheeturl-",
"Rates!A"&
MATCH(A2,IMPORTRANGE(-othersheeturl-","Rates!B:B"),0)
&":X"&
MATCH(A2,IMPORTRANGE("-othersheeturl-","Rates!B:B"),0)
)
Working example
Warning
I see that in your original sheet you use "take" Origin City from Rates sheet, so I remove this dependency in A2 to make it an ID. I hope this solves your problem.
Solution 2 - if you need to check many conditions
An approach is the same, but tools are different. Main goal is to find a row number that meets criteria - "From City" and "To City". Then this row number will be used to concatenate desire range.
First step - some cleaning
To better manage complex formulas its a good idea to divide them into smaller pieces - like in "ordinary" programing. So, we have:
From City in A5
New Albany
To City in B5
Calgary
Rate sheet (external sheet) url in B1:
1JD45y-0-37Kh2KsHnRAMuB0quPtMVuLKuT1qjnNcm1Q
You don't have to put whole URL, only this part is needed
Formula that counts row number that we are looking for in B2
=QUERY(
{IMPORTRANGE(B1,"A1:B"),
ArrayFormula(row(INDIRECT("A1:A"&ROWS(IMPORTRANGE(B1,"A1:B")))))},
"select Col3 where Col1='"&B5&"' and Col2='"&A5&"'
limit 1")
Above code:
Build an array from Rate sheet (external) - columns A1:B and virtual index that represents rows numbers
Then, show only column nr 3 (index) where Col1 matches our "To City" and Col2 matches "From City"
At the end is a limit to only one result (in case that there are more then one maches)
Desire range in B3
="Rates!A"&B2&":X"&B2
Final formula that renders desire data from external sheet in A11
=IMPORTRANGE(B1,B3)
Working example
Final thoughts
You can either hide rows 1-3 or you can pack all above formulas into one. Its up to you. I prefer the first approach.
This solution gives you freedom with as many conditions as you want
More info would be helpful.
A couple ideas:
Using named ranges instead of a static reference. For example, if you create a named range in the rate sheet called MY_DATA that references A2!C600, you can include "MY_DATA" in your importrange in the vendor sheet. Note that you'd still need to update MY_DATA every time you add a row.
If you're importing the entire sheet, perhaps omitting the end row would work (e.g. A2!C instead of A2!C600) - note that this means you need to use filter or query in the Vendor sheet to eliminate the blank rows.